diff --git a/src/iisnode/cmoduleconfiguration.cpp b/src/iisnode/cmoduleconfiguration.cpp index c74d935e..46c0f538 100644 --- a/src/iisnode/cmoduleconfiguration.cpp +++ b/src/iisnode/cmoduleconfiguration.cpp @@ -199,8 +199,26 @@ HRESULT CModuleConfiguration::CreateNodeEnvironment(IHttpContext* ctx, DWORD deb sprintf(tmpIndex, "IISNODE_VERSION=%s", IISNODE_VERSION); tmpIndex += strlen(IISNODE_VERSION) + 17; + // + // set NODE_PIPE_PENDING_INSTANCES because node.exe defaults to 4 concurrent requests + // and we get E_PIPEBUSY errors. Increasing this value to 50 to prevent E_PIPEBUSY. + // + WCHAR pszPendingPipeInstances[256]; + DWORD dwPendingPipeInstancesLen = 256; + dwPendingPipeInstancesLen = GetEnvironmentVariableW( L"NODE_PENDING_PIPE_INSTANCES", + pszPendingPipeInstances, + dwPendingPipeInstancesLen); + + if(dwPendingPipeInstancesLen <= 0) + { + ErrorIf((tmpSize - (tmpStart - tmpIndex) < 33), ERROR_NOT_ENOUGH_MEMORY); + sprintf(tmpIndex, "NODE_PENDING_PIPE_INSTANCES=5000"); + tmpIndex += 33; + } + if(CModuleConfiguration::GetRecycleSignalEnabled(ctx) && signalPipeName != NULL) { + ErrorIf((tmpSize - (tmpStart - tmpIndex) < (strlen(signalPipeName) + 22)), ERROR_NOT_ENOUGH_MEMORY); sprintf(tmpIndex, "IISNODE_CONTROL_PIPE=%s", signalPipeName); tmpIndex += strlen(signalPipeName) + 22; } diff --git a/src/iisnode/cprotocolbridge.cpp b/src/iisnode/cprotocolbridge.cpp index f9dc9f7d..726758ff 100644 --- a/src/iisnode/cprotocolbridge.cpp +++ b/src/iisnode/cprotocolbridge.cpp @@ -775,11 +775,6 @@ void CProtocolBridge::SendHttpRequestHeaders(CNodeHttpStoredContext* context) hr = GetLastError(); if (ERROR_IO_PENDING == hr) { - // will complete asynchronously - - etw->Log(context->GetHttpContext(), L"iisnode initiated sending http request headers to the node.exe process and will complete asynchronously", - WINEVENT_LEVEL_VERBOSE, - &activityId); } else { @@ -901,8 +896,8 @@ void CProtocolBridge::ReadRequestBody(CNodeHttpStoredContext* context) } else { - context->GetNodeApplication()->GetApplicationManager()->GetEventProvider()->Log(context->GetHttpContext(), - L"iisnode initiated reading http request body chunk and will complete asynchronously", WINEVENT_LEVEL_VERBOSE, context->GetActivityId()); + //context->GetNodeApplication()->GetApplicationManager()->GetEventProvider()->Log(context->GetHttpContext(), + // L"iisnode initiated reading http request body chunk and will complete asynchronously", WINEVENT_LEVEL_VERBOSE, context->GetActivityId()); } return; @@ -1086,9 +1081,9 @@ void CProtocolBridge::SendRequestBody(CNodeHttpStoredContext* context, DWORD chu { // will complete asynchronously - etw->Log(context->GetHttpContext(), L"iisnode initiated sending http request body chunk to the node.exe process and will complete asynchronously", - WINEVENT_LEVEL_VERBOSE, - &activityId); + //etw->Log(context->GetHttpContext(), L"iisnode initiated sending http request body chunk to the node.exe process and will complete asynchronously", + // WINEVENT_LEVEL_VERBOSE, + // &activityId); } else if (ERROR_NO_DATA == hr) { @@ -1264,9 +1259,9 @@ void CProtocolBridge::ContinueReadResponse(CNodeHttpStoredContext* context) { // read will complete asynchronously - etw->Log(context->GetHttpContext(), L"iisnode initiated reading http response chunk and will complete asynchronously", - WINEVENT_LEVEL_VERBOSE, - &activityId); + //etw->Log(context->GetHttpContext(), L"iisnode initiated reading http response chunk and will complete asynchronously", + // WINEVENT_LEVEL_VERBOSE, + // &activityId); } else if (ERROR_BROKEN_PIPE == hr && context->GetCloseConnection()) { diff --git a/src/iisnode/debugger_autogenerated_0.7.3.rc b/src/iisnode/debugger_autogenerated_0.7.3.rc index babc1448..451d662e 100644 --- a/src/iisnode/debugger_autogenerated_0.7.3.rc +++ b/src/iisnode/debugger_autogenerated_0.7.3.rc @@ -1163,2330 +1163,5837 @@ #define IDS_1160 1160 #define IDS_1161 1161 #define IDS_1162 1162 +#define IDS_1163 1163 +#define IDS_1164 1164 +#define IDS_1165 1165 +#define IDS_1166 1166 +#define IDS_1167 1167 +#define IDS_1168 1168 +#define IDS_1169 1169 +#define IDS_1170 1170 +#define IDS_1171 1171 +#define IDS_1172 1172 +#define IDS_1173 1173 +#define IDS_1174 1174 +#define IDS_1175 1175 +#define IDS_1176 1176 +#define IDS_1177 1177 +#define IDS_1178 1178 +#define IDS_1179 1179 +#define IDS_1180 1180 +#define IDS_1181 1181 +#define IDS_1182 1182 +#define IDS_1183 1183 +#define IDS_1184 1184 +#define IDS_1185 1185 +#define IDS_1186 1186 +#define IDS_1187 1187 +#define IDS_1188 1188 +#define IDS_1189 1189 +#define IDS_1190 1190 +#define IDS_1191 1191 +#define IDS_1192 1192 +#define IDS_1193 1193 +#define IDS_1194 1194 +#define IDS_1195 1195 +#define IDS_1196 1196 +#define IDS_1197 1197 +#define IDS_1198 1198 +#define IDS_1199 1199 +#define IDS_1200 1200 +#define IDS_1201 1201 +#define IDS_1202 1202 +#define IDS_1203 1203 +#define IDS_1204 1204 +#define IDS_1205 1205 +#define IDS_1206 1206 +#define IDS_1207 1207 +#define IDS_1208 1208 +#define IDS_1209 1209 +#define IDS_1210 1210 +#define IDS_1211 1211 +#define IDS_1212 1212 +#define IDS_1213 1213 +#define IDS_1214 1214 +#define IDS_1215 1215 +#define IDS_1216 1216 +#define IDS_1217 1217 +#define IDS_1218 1218 +#define IDS_1219 1219 +#define IDS_1220 1220 +#define IDS_1221 1221 +#define IDS_1222 1222 +#define IDS_1223 1223 +#define IDS_1224 1224 +#define IDS_1225 1225 +#define IDS_1226 1226 +#define IDS_1227 1227 +#define IDS_1228 1228 +#define IDS_1229 1229 +#define IDS_1230 1230 +#define IDS_1231 1231 +#define IDS_1232 1232 +#define IDS_1233 1233 +#define IDS_1234 1234 +#define IDS_1235 1235 +#define IDS_1236 1236 +#define IDS_1237 1237 +#define IDS_1238 1238 +#define IDS_1239 1239 +#define IDS_1240 1240 +#define IDS_1241 1241 +#define IDS_1242 1242 +#define IDS_1243 1243 +#define IDS_1244 1244 +#define IDS_1245 1245 +#define IDS_1246 1246 +#define IDS_1247 1247 +#define IDS_1248 1248 +#define IDS_1249 1249 +#define IDS_1250 1250 +#define IDS_1251 1251 +#define IDS_1252 1252 +#define IDS_1253 1253 +#define IDS_1254 1254 +#define IDS_1255 1255 +#define IDS_1256 1256 +#define IDS_1257 1257 +#define IDS_1258 1258 +#define IDS_1259 1259 +#define IDS_1260 1260 +#define IDS_1261 1261 +#define IDS_1262 1262 +#define IDS_1263 1263 +#define IDS_1264 1264 +#define IDS_1265 1265 +#define IDS_1266 1266 +#define IDS_1267 1267 +#define IDS_1268 1268 +#define IDS_1269 1269 +#define IDS_1270 1270 +#define IDS_1271 1271 +#define IDS_1272 1272 +#define IDS_1273 1273 +#define IDS_1274 1274 +#define IDS_1275 1275 +#define IDS_1276 1276 +#define IDS_1277 1277 +#define IDS_1278 1278 +#define IDS_1279 1279 +#define IDS_1280 1280 +#define IDS_1281 1281 +#define IDS_1282 1282 +#define IDS_1283 1283 +#define IDS_1284 1284 +#define IDS_1285 1285 +#define IDS_1286 1286 +#define IDS_1287 1287 +#define IDS_1288 1288 +#define IDS_1289 1289 +#define IDS_1290 1290 +#define IDS_1291 1291 +#define IDS_1292 1292 +#define IDS_1293 1293 +#define IDS_1294 1294 +#define IDS_1295 1295 +#define IDS_1296 1296 +#define IDS_1297 1297 +#define IDS_1298 1298 +#define IDS_1299 1299 +#define IDS_1300 1300 +#define IDS_1301 1301 +#define IDS_1302 1302 +#define IDS_1303 1303 +#define IDS_1304 1304 +#define IDS_1305 1305 +#define IDS_1306 1306 +#define IDS_1307 1307 +#define IDS_1308 1308 +#define IDS_1309 1309 +#define IDS_1310 1310 +#define IDS_1311 1311 +#define IDS_1312 1312 +#define IDS_1313 1313 +#define IDS_1314 1314 +#define IDS_1315 1315 +#define IDS_1316 1316 +#define IDS_1317 1317 +#define IDS_1318 1318 +#define IDS_1319 1319 +#define IDS_1320 1320 +#define IDS_1321 1321 +#define IDS_1322 1322 +#define IDS_1323 1323 +#define IDS_1324 1324 +#define IDS_1325 1325 +#define IDS_1326 1326 +#define IDS_1327 1327 +#define IDS_1328 1328 +#define IDS_1329 1329 +#define IDS_1330 1330 +#define IDS_1331 1331 +#define IDS_1332 1332 +#define IDS_1333 1333 +#define IDS_1334 1334 +#define IDS_1335 1335 +#define IDS_1336 1336 +#define IDS_1337 1337 +#define IDS_1338 1338 +#define IDS_1339 1339 +#define IDS_1340 1340 +#define IDS_1341 1341 +#define IDS_1342 1342 +#define IDS_1343 1343 +#define IDS_1344 1344 +#define IDS_1345 1345 +#define IDS_1346 1346 +#define IDS_1347 1347 +#define IDS_1348 1348 +#define IDS_1349 1349 +#define IDS_1350 1350 +#define IDS_1351 1351 +#define IDS_1352 1352 +#define IDS_1353 1353 +#define IDS_1354 1354 +#define IDS_1355 1355 +#define IDS_1356 1356 +#define IDS_1357 1357 +#define IDS_1358 1358 +#define IDS_1359 1359 +#define IDS_1360 1360 +#define IDS_1361 1361 +#define IDS_1362 1362 +#define IDS_1363 1363 +#define IDS_1364 1364 +#define IDS_1365 1365 +#define IDS_1366 1366 +#define IDS_1367 1367 +#define IDS_1368 1368 +#define IDS_1369 1369 +#define IDS_1370 1370 +#define IDS_1371 1371 +#define IDS_1372 1372 +#define IDS_1373 1373 +#define IDS_1374 1374 +#define IDS_1375 1375 +#define IDS_1376 1376 +#define IDS_1377 1377 +#define IDS_1378 1378 +#define IDS_1379 1379 +#define IDS_1380 1380 +#define IDS_1381 1381 +#define IDS_1382 1382 +#define IDS_1383 1383 +#define IDS_1384 1384 +#define IDS_1385 1385 +#define IDS_1386 1386 +#define IDS_1387 1387 +#define IDS_1388 1388 +#define IDS_1389 1389 +#define IDS_1390 1390 +#define IDS_1391 1391 +#define IDS_1392 1392 +#define IDS_1393 1393 +#define IDS_1394 1394 +#define IDS_1395 1395 +#define IDS_1396 1396 +#define IDS_1397 1397 +#define IDS_1398 1398 +#define IDS_1399 1399 +#define IDS_1400 1400 +#define IDS_1401 1401 +#define IDS_1402 1402 +#define IDS_1403 1403 +#define IDS_1404 1404 +#define IDS_1405 1405 +#define IDS_1406 1406 +#define IDS_1407 1407 +#define IDS_1408 1408 +#define IDS_1409 1409 +#define IDS_1410 1410 +#define IDS_1411 1411 +#define IDS_1412 1412 +#define IDS_1413 1413 +#define IDS_1414 1414 +#define IDS_1415 1415 +#define IDS_1416 1416 +#define IDS_1417 1417 +#define IDS_1418 1418 +#define IDS_1419 1419 +#define IDS_1420 1420 +#define IDS_1421 1421 +#define IDS_1422 1422 +#define IDS_1423 1423 +#define IDS_1424 1424 +#define IDS_1425 1425 +#define IDS_1426 1426 +#define IDS_1427 1427 +#define IDS_1428 1428 +#define IDS_1429 1429 +#define IDS_1430 1430 +#define IDS_1431 1431 +#define IDS_1432 1432 +#define IDS_1433 1433 +#define IDS_1434 1434 +#define IDS_1435 1435 +#define IDS_1436 1436 +#define IDS_1437 1437 +#define IDS_1438 1438 +#define IDS_1439 1439 +#define IDS_1440 1440 +#define IDS_1441 1441 +#define IDS_1442 1442 +#define IDS_1443 1443 +#define IDS_1444 1444 +#define IDS_1445 1445 +#define IDS_1446 1446 +#define IDS_1447 1447 +#define IDS_1448 1448 +#define IDS_1449 1449 +#define IDS_1450 1450 +#define IDS_1451 1451 +#define IDS_1452 1452 +#define IDS_1453 1453 +#define IDS_1454 1454 +#define IDS_1455 1455 +#define IDS_1456 1456 +#define IDS_1457 1457 +#define IDS_1458 1458 +#define IDS_1459 1459 +#define IDS_1460 1460 +#define IDS_1461 1461 +#define IDS_1462 1462 +#define IDS_1463 1463 +#define IDS_1464 1464 +#define IDS_1465 1465 +#define IDS_1466 1466 +#define IDS_1467 1467 +#define IDS_1468 1468 +#define IDS_1469 1469 +#define IDS_1470 1470 +#define IDS_1471 1471 +#define IDS_1472 1472 +#define IDS_1473 1473 +#define IDS_1474 1474 +#define IDS_1475 1475 +#define IDS_1476 1476 +#define IDS_1477 1477 +#define IDS_1478 1478 +#define IDS_1479 1479 +#define IDS_1480 1480 +#define IDS_1481 1481 +#define IDS_1482 1482 +#define IDS_1483 1483 +#define IDS_1484 1484 +#define IDS_1485 1485 +#define IDS_1486 1486 +#define IDS_1487 1487 +#define IDS_1488 1488 +#define IDS_1489 1489 +#define IDS_1490 1490 +#define IDS_1491 1491 +#define IDS_1492 1492 +#define IDS_1493 1493 +#define IDS_1494 1494 +#define IDS_1495 1495 +#define IDS_1496 1496 +#define IDS_1497 1497 +#define IDS_1498 1498 +#define IDS_1499 1499 +#define IDS_1500 1500 +#define IDS_1501 1501 +#define IDS_1502 1502 +#define IDS_1503 1503 +#define IDS_1504 1504 +#define IDS_1505 1505 +#define IDS_1506 1506 +#define IDS_1507 1507 +#define IDS_1508 1508 +#define IDS_1509 1509 +#define IDS_1510 1510 +#define IDS_1511 1511 +#define IDS_1512 1512 +#define IDS_1513 1513 +#define IDS_1514 1514 +#define IDS_1515 1515 +#define IDS_1516 1516 +#define IDS_1517 1517 +#define IDS_1518 1518 +#define IDS_1519 1519 +#define IDS_1520 1520 +#define IDS_1521 1521 +#define IDS_1522 1522 +#define IDS_1523 1523 +#define IDS_1524 1524 +#define IDS_1525 1525 +#define IDS_1526 1526 +#define IDS_1527 1527 +#define IDS_1528 1528 +#define IDS_1529 1529 +#define IDS_1530 1530 +#define IDS_1531 1531 +#define IDS_1532 1532 +#define IDS_1533 1533 +#define IDS_1534 1534 +#define IDS_1535 1535 +#define IDS_1536 1536 +#define IDS_1537 1537 +#define IDS_1538 1538 +#define IDS_1539 1539 +#define IDS_1540 1540 +#define IDS_1541 1541 +#define IDS_1542 1542 +#define IDS_1543 1543 +#define IDS_1544 1544 +#define IDS_1545 1545 +#define IDS_1546 1546 +#define IDS_1547 1547 +#define IDS_1548 1548 +#define IDS_1549 1549 +#define IDS_1550 1550 +#define IDS_1551 1551 +#define IDS_1552 1552 +#define IDS_1553 1553 +#define IDS_1554 1554 +#define IDS_1555 1555 +#define IDS_1556 1556 +#define IDS_1557 1557 +#define IDS_1558 1558 +#define IDS_1559 1559 +#define IDS_1560 1560 +#define IDS_1561 1561 +#define IDS_1562 1562 +#define IDS_1563 1563 +#define IDS_1564 1564 +#define IDS_1565 1565 +#define IDS_1566 1566 +#define IDS_1567 1567 +#define IDS_1568 1568 +#define IDS_1569 1569 +#define IDS_1570 1570 +#define IDS_1571 1571 +#define IDS_1572 1572 +#define IDS_1573 1573 +#define IDS_1574 1574 +#define IDS_1575 1575 +#define IDS_1576 1576 +#define IDS_1577 1577 +#define IDS_1578 1578 +#define IDS_1579 1579 +#define IDS_1580 1580 +#define IDS_1581 1581 +#define IDS_1582 1582 +#define IDS_1583 1583 +#define IDS_1584 1584 +#define IDS_1585 1585 +#define IDS_1586 1586 +#define IDS_1587 1587 +#define IDS_1588 1588 +#define IDS_1589 1589 +#define IDS_1590 1590 +#define IDS_1591 1591 +#define IDS_1592 1592 +#define IDS_1593 1593 +#define IDS_1594 1594 +#define IDS_1595 1595 +#define IDS_1596 1596 +#define IDS_1597 1597 +#define IDS_1598 1598 +#define IDS_1599 1599 +#define IDS_1600 1600 +#define IDS_1601 1601 +#define IDS_1602 1602 +#define IDS_1603 1603 +#define IDS_1604 1604 +#define IDS_1605 1605 +#define IDS_1606 1606 +#define IDS_1607 1607 +#define IDS_1608 1608 +#define IDS_1609 1609 +#define IDS_1610 1610 +#define IDS_1611 1611 +#define IDS_1612 1612 +#define IDS_1613 1613 +#define IDS_1614 1614 +#define IDS_1615 1615 +#define IDS_1616 1616 +#define IDS_1617 1617 +#define IDS_1618 1618 +#define IDS_1619 1619 +#define IDS_1620 1620 +#define IDS_1621 1621 +#define IDS_1622 1622 +#define IDS_1623 1623 +#define IDS_1624 1624 +#define IDS_1625 1625 +#define IDS_1626 1626 +#define IDS_1627 1627 +#define IDS_1628 1628 +#define IDS_1629 1629 +#define IDS_1630 1630 +#define IDS_1631 1631 +#define IDS_1632 1632 +#define IDS_1633 1633 +#define IDS_1634 1634 +#define IDS_1635 1635 +#define IDS_1636 1636 +#define IDS_1637 1637 +#define IDS_1638 1638 +#define IDS_1639 1639 +#define IDS_1640 1640 +#define IDS_1641 1641 +#define IDS_1642 1642 +#define IDS_1643 1643 +#define IDS_1644 1644 +#define IDS_1645 1645 +#define IDS_1646 1646 +#define IDS_1647 1647 +#define IDS_1648 1648 +#define IDS_1649 1649 +#define IDS_1650 1650 +#define IDS_1651 1651 +#define IDS_1652 1652 +#define IDS_1653 1653 +#define IDS_1654 1654 +#define IDS_1655 1655 +#define IDS_1656 1656 +#define IDS_1657 1657 +#define IDS_1658 1658 +#define IDS_1659 1659 +#define IDS_1660 1660 +#define IDS_1661 1661 +#define IDS_1662 1662 +#define IDS_1663 1663 +#define IDS_1664 1664 +#define IDS_1665 1665 +#define IDS_1666 1666 +#define IDS_1667 1667 +#define IDS_1668 1668 +#define IDS_1669 1669 +#define IDS_1670 1670 +#define IDS_1671 1671 +#define IDS_1672 1672 +#define IDS_1673 1673 +#define IDS_1674 1674 +#define IDS_1675 1675 +#define IDS_1676 1676 +#define IDS_1677 1677 +#define IDS_1678 1678 +#define IDS_1679 1679 +#define IDS_1680 1680 +#define IDS_1681 1681 +#define IDS_1682 1682 +#define IDS_1683 1683 +#define IDS_1684 1684 +#define IDS_1685 1685 +#define IDS_1686 1686 +#define IDS_1687 1687 +#define IDS_1688 1688 +#define IDS_1689 1689 +#define IDS_1690 1690 +#define IDS_1691 1691 +#define IDS_1692 1692 +#define IDS_1693 1693 +#define IDS_1694 1694 +#define IDS_1695 1695 +#define IDS_1696 1696 +#define IDS_1697 1697 +#define IDS_1698 1698 +#define IDS_1699 1699 +#define IDS_1700 1700 +#define IDS_1701 1701 +#define IDS_1702 1702 +#define IDS_1703 1703 +#define IDS_1704 1704 +#define IDS_1705 1705 +#define IDS_1706 1706 +#define IDS_1707 1707 +#define IDS_1708 1708 +#define IDS_1709 1709 +#define IDS_1710 1710 +#define IDS_1711 1711 +#define IDS_1712 1712 +#define IDS_1713 1713 +#define IDS_1714 1714 +#define IDS_1715 1715 +#define IDS_1716 1716 +#define IDS_1717 1717 +#define IDS_1718 1718 +#define IDS_1719 1719 +#define IDS_1720 1720 +#define IDS_1721 1721 +#define IDS_1722 1722 +#define IDS_1723 1723 +#define IDS_1724 1724 +#define IDS_1725 1725 +#define IDS_1726 1726 +#define IDS_1727 1727 +#define IDS_1728 1728 +#define IDS_1729 1729 +#define IDS_1730 1730 +#define IDS_1731 1731 +#define IDS_1732 1732 +#define IDS_1733 1733 +#define IDS_1734 1734 +#define IDS_1735 1735 +#define IDS_1736 1736 +#define IDS_1737 1737 +#define IDS_1738 1738 +#define IDS_1739 1739 +#define IDS_1740 1740 +#define IDS_1741 1741 +#define IDS_1742 1742 +#define IDS_1743 1743 +#define IDS_1744 1744 +#define IDS_1745 1745 +#define IDS_1746 1746 +#define IDS_1747 1747 +#define IDS_1748 1748 +#define IDS_1749 1749 +#define IDS_1750 1750 +#define IDS_1751 1751 +#define IDS_1752 1752 +#define IDS_1753 1753 +#define IDS_1754 1754 +#define IDS_1755 1755 +#define IDS_1756 1756 +#define IDS_1757 1757 +#define IDS_1758 1758 +#define IDS_1759 1759 +#define IDS_1760 1760 +#define IDS_1761 1761 +#define IDS_1762 1762 +#define IDS_1763 1763 +#define IDS_1764 1764 +#define IDS_1765 1765 +#define IDS_1766 1766 +#define IDS_1767 1767 +#define IDS_1768 1768 +#define IDS_1769 1769 +#define IDS_1770 1770 +#define IDS_1771 1771 +#define IDS_1772 1772 +#define IDS_1773 1773 +#define IDS_1774 1774 +#define IDS_1775 1775 +#define IDS_1776 1776 +#define IDS_1777 1777 +#define IDS_1778 1778 +#define IDS_1779 1779 +#define IDS_1780 1780 +#define IDS_1781 1781 +#define IDS_1782 1782 +#define IDS_1783 1783 +#define IDS_1784 1784 +#define IDS_1785 1785 +#define IDS_1786 1786 +#define IDS_1787 1787 +#define IDS_1788 1788 +#define IDS_1789 1789 +#define IDS_1790 1790 +#define IDS_1791 1791 +#define IDS_1792 1792 +#define IDS_1793 1793 +#define IDS_1794 1794 +#define IDS_1795 1795 +#define IDS_1796 1796 +#define IDS_1797 1797 +#define IDS_1798 1798 +#define IDS_1799 1799 +#define IDS_1800 1800 +#define IDS_1801 1801 +#define IDS_1802 1802 +#define IDS_1803 1803 +#define IDS_1804 1804 +#define IDS_1805 1805 +#define IDS_1806 1806 +#define IDS_1807 1807 +#define IDS_1808 1808 +#define IDS_1809 1809 +#define IDS_1810 1810 +#define IDS_1811 1811 +#define IDS_1812 1812 +#define IDS_1813 1813 +#define IDS_1814 1814 +#define IDS_1815 1815 +#define IDS_1816 1816 +#define IDS_1817 1817 +#define IDS_1818 1818 +#define IDS_1819 1819 +#define IDS_1820 1820 +#define IDS_1821 1821 +#define IDS_1822 1822 +#define IDS_1823 1823 +#define IDS_1824 1824 +#define IDS_1825 1825 +#define IDS_1826 1826 +#define IDS_1827 1827 +#define IDS_1828 1828 +#define IDS_1829 1829 +#define IDS_1830 1830 +#define IDS_1831 1831 +#define IDS_1832 1832 +#define IDS_1833 1833 +#define IDS_1834 1834 +#define IDS_1835 1835 +#define IDS_1836 1836 +#define IDS_1837 1837 +#define IDS_1838 1838 +#define IDS_1839 1839 +#define IDS_1840 1840 +#define IDS_1841 1841 +#define IDS_1842 1842 +#define IDS_1843 1843 +#define IDS_1844 1844 +#define IDS_1845 1845 +#define IDS_1846 1846 +#define IDS_1847 1847 +#define IDS_1848 1848 +#define IDS_1849 1849 +#define IDS_1850 1850 +#define IDS_1851 1851 +#define IDS_1852 1852 +#define IDS_1853 1853 +#define IDS_1854 1854 +#define IDS_1855 1855 +#define IDS_1856 1856 +#define IDS_1857 1857 +#define IDS_1858 1858 +#define IDS_1859 1859 +#define IDS_1860 1860 +#define IDS_1861 1861 +#define IDS_1862 1862 +#define IDS_1863 1863 +#define IDS_1864 1864 +#define IDS_1865 1865 +#define IDS_1866 1866 +#define IDS_1867 1867 +#define IDS_1868 1868 +#define IDS_1869 1869 +#define IDS_1870 1870 +#define IDS_1871 1871 +#define IDS_1872 1872 +#define IDS_1873 1873 +#define IDS_1874 1874 +#define IDS_1875 1875 +#define IDS_1876 1876 +#define IDS_1877 1877 +#define IDS_1878 1878 +#define IDS_1879 1879 +#define IDS_1880 1880 +#define IDS_1881 1881 +#define IDS_1882 1882 +#define IDS_1883 1883 +#define IDS_1884 1884 +#define IDS_1885 1885 +#define IDS_1886 1886 +#define IDS_1887 1887 +#define IDS_1888 1888 +#define IDS_1889 1889 +#define IDS_1890 1890 +#define IDS_1891 1891 +#define IDS_1892 1892 +#define IDS_1893 1893 +#define IDS_1894 1894 +#define IDS_1895 1895 +#define IDS_1896 1896 +#define IDS_1897 1897 +#define IDS_1898 1898 +#define IDS_1899 1899 +#define IDS_1900 1900 +#define IDS_1901 1901 +#define IDS_1902 1902 +#define IDS_1903 1903 +#define IDS_1904 1904 +#define IDS_1905 1905 +#define IDS_1906 1906 +#define IDS_1907 1907 +#define IDS_1908 1908 +#define IDS_1909 1909 +#define IDS_1910 1910 +#define IDS_1911 1911 +#define IDS_1912 1912 +#define IDS_1913 1913 +#define IDS_1914 1914 +#define IDS_1915 1915 +#define IDS_1916 1916 +#define IDS_1917 1917 +#define IDS_1918 1918 +#define IDS_1919 1919 +#define IDS_1920 1920 +#define IDS_1921 1921 +#define IDS_1922 1922 +#define IDS_1923 1923 +#define IDS_1924 1924 +#define IDS_1925 1925 +#define IDS_1926 1926 +#define IDS_1927 1927 +#define IDS_1928 1928 +#define IDS_1929 1929 +#define IDS_1930 1930 +#define IDS_1931 1931 +#define IDS_1932 1932 +#define IDS_1933 1933 +#define IDS_1934 1934 +#define IDS_1935 1935 +#define IDS_1936 1936 +#define IDS_1937 1937 +#define IDS_1938 1938 +#define IDS_1939 1939 +#define IDS_1940 1940 +#define IDS_1941 1941 +#define IDS_1942 1942 +#define IDS_1943 1943 +#define IDS_1944 1944 +#define IDS_1945 1945 +#define IDS_1946 1946 +#define IDS_1947 1947 +#define IDS_1948 1948 +#define IDS_1949 1949 +#define IDS_1950 1950 +#define IDS_1951 1951 +#define IDS_1952 1952 +#define IDS_1953 1953 +#define IDS_1954 1954 +#define IDS_1955 1955 +#define IDS_1956 1956 +#define IDS_1957 1957 +#define IDS_1958 1958 +#define IDS_1959 1959 +#define IDS_1960 1960 +#define IDS_1961 1961 +#define IDS_1962 1962 +#define IDS_1963 1963 +#define IDS_1964 1964 +#define IDS_1965 1965 +#define IDS_1966 1966 +#define IDS_1967 1967 +#define IDS_1968 1968 +#define IDS_1969 1969 +#define IDS_1970 1970 +#define IDS_1971 1971 +#define IDS_1972 1972 +#define IDS_1973 1973 +#define IDS_1974 1974 +#define IDS_1975 1975 +#define IDS_1976 1976 +#define IDS_1977 1977 +#define IDS_1978 1978 +#define IDS_1979 1979 +#define IDS_1980 1980 +#define IDS_1981 1981 +#define IDS_1982 1982 +#define IDS_1983 1983 +#define IDS_1984 1984 +#define IDS_1985 1985 +#define IDS_1986 1986 +#define IDS_1987 1987 +#define IDS_1988 1988 +#define IDS_1989 1989 +#define IDS_1990 1990 +#define IDS_1991 1991 +#define IDS_1992 1992 +#define IDS_1993 1993 +#define IDS_1994 1994 +#define IDS_1995 1995 +#define IDS_1996 1996 +#define IDS_1997 1997 +#define IDS_1998 1998 +#define IDS_1999 1999 +#define IDS_2000 2000 +#define IDS_2001 2001 +#define IDS_2002 2002 +#define IDS_2003 2003 +#define IDS_2004 2004 +#define IDS_2005 2005 +#define IDS_2006 2006 +#define IDS_2007 2007 +#define IDS_2008 2008 +#define IDS_2009 2009 +#define IDS_2010 2010 +#define IDS_2011 2011 +#define IDS_2012 2012 +#define IDS_2013 2013 +#define IDS_2014 2014 +#define IDS_2015 2015 +#define IDS_2016 2016 +#define IDS_2017 2017 +#define IDS_2018 2018 +#define IDS_2019 2019 +#define IDS_2020 2020 +#define IDS_2021 2021 +#define IDS_2022 2022 +#define IDS_2023 2023 +#define IDS_2024 2024 +#define IDS_2025 2025 +#define IDS_2026 2026 +#define IDS_2027 2027 +#define IDS_2028 2028 +#define IDS_2029 2029 +#define IDS_2030 2030 +#define IDS_2031 2031 +#define IDS_2032 2032 +#define IDS_2033 2033 +#define IDS_2034 2034 +#define IDS_2035 2035 +#define IDS_2036 2036 +#define IDS_2037 2037 +#define IDS_2038 2038 +#define IDS_2039 2039 +#define IDS_2040 2040 +#define IDS_2041 2041 +#define IDS_2042 2042 +#define IDS_2043 2043 +#define IDS_2044 2044 +#define IDS_2045 2045 +#define IDS_2046 2046 +#define IDS_2047 2047 +#define IDS_2048 2048 +#define IDS_2049 2049 +#define IDS_2050 2050 +#define IDS_2051 2051 +#define IDS_2052 2052 +#define IDS_2053 2053 +#define IDS_2054 2054 +#define IDS_2055 2055 +#define IDS_2056 2056 +#define IDS_2057 2057 +#define IDS_2058 2058 +#define IDS_2059 2059 +#define IDS_2060 2060 +#define IDS_2061 2061 +#define IDS_2062 2062 +#define IDS_2063 2063 +#define IDS_2064 2064 +#define IDS_2065 2065 +#define IDS_2066 2066 +#define IDS_2067 2067 +#define IDS_2068 2068 +#define IDS_2069 2069 +#define IDS_2070 2070 +#define IDS_2071 2071 +#define IDS_2072 2072 +#define IDS_2073 2073 +#define IDS_2074 2074 +#define IDS_2075 2075 +#define IDS_2076 2076 +#define IDS_2077 2077 +#define IDS_2078 2078 +#define IDS_2079 2079 +#define IDS_2080 2080 +#define IDS_2081 2081 +#define IDS_2082 2082 +#define IDS_2083 2083 +#define IDS_2084 2084 +#define IDS_2085 2085 +#define IDS_2086 2086 +#define IDS_2087 2087 +#define IDS_2088 2088 +#define IDS_2089 2089 +#define IDS_2090 2090 +#define IDS_2091 2091 +#define IDS_2092 2092 +#define IDS_2093 2093 +#define IDS_2094 2094 +#define IDS_2095 2095 +#define IDS_2096 2096 +#define IDS_2097 2097 +#define IDS_2098 2098 +#define IDS_2099 2099 +#define IDS_2100 2100 +#define IDS_2101 2101 +#define IDS_2102 2102 +#define IDS_2103 2103 +#define IDS_2104 2104 +#define IDS_2105 2105 +#define IDS_2106 2106 +#define IDS_2107 2107 +#define IDS_2108 2108 +#define IDS_2109 2109 +#define IDS_2110 2110 +#define IDS_2111 2111 +#define IDS_2112 2112 +#define IDS_2113 2113 +#define IDS_2114 2114 +#define IDS_2115 2115 +#define IDS_2116 2116 +#define IDS_2117 2117 +#define IDS_2118 2118 +#define IDS_2119 2119 +#define IDS_2120 2120 +#define IDS_2121 2121 +#define IDS_2122 2122 +#define IDS_2123 2123 +#define IDS_2124 2124 +#define IDS_2125 2125 +#define IDS_2126 2126 +#define IDS_2127 2127 +#define IDS_2128 2128 +#define IDS_2129 2129 +#define IDS_2130 2130 +#define IDS_2131 2131 +#define IDS_2132 2132 +#define IDS_2133 2133 +#define IDS_2134 2134 +#define IDS_2135 2135 +#define IDS_2136 2136 +#define IDS_2137 2137 +#define IDS_2138 2138 +#define IDS_2139 2139 +#define IDS_2140 2140 +#define IDS_2141 2141 +#define IDS_2142 2142 +#define IDS_2143 2143 +#define IDS_2144 2144 +#define IDS_2145 2145 +#define IDS_2146 2146 +#define IDS_2147 2147 +#define IDS_2148 2148 +#define IDS_2149 2149 +#define IDS_2150 2150 +#define IDS_2151 2151 +#define IDS_2152 2152 +#define IDS_2153 2153 +#define IDS_2154 2154 +#define IDS_2155 2155 +#define IDS_2156 2156 +#define IDS_2157 2157 +#define IDS_2158 2158 +#define IDS_2159 2159 +#define IDS_2160 2160 +#define IDS_2161 2161 +#define IDS_2162 2162 +#define IDS_2163 2163 +#define IDS_2164 2164 +#define IDS_2165 2165 +#define IDS_2166 2166 +#define IDS_2167 2167 +#define IDS_2168 2168 +#define IDS_2169 2169 +#define IDS_2170 2170 +#define IDS_2171 2171 +#define IDS_2172 2172 +#define IDS_2173 2173 +#define IDS_2174 2174 +#define IDS_2175 2175 +#define IDS_2176 2176 +#define IDS_2177 2177 +#define IDS_2178 2178 +#define IDS_2179 2179 +#define IDS_2180 2180 +#define IDS_2181 2181 +#define IDS_2182 2182 +#define IDS_2183 2183 +#define IDS_2184 2184 +#define IDS_2185 2185 +#define IDS_2186 2186 +#define IDS_2187 2187 +#define IDS_2188 2188 +#define IDS_2189 2189 +#define IDS_2190 2190 +#define IDS_2191 2191 +#define IDS_2192 2192 +#define IDS_2193 2193 +#define IDS_2194 2194 +#define IDS_2195 2195 +#define IDS_2196 2196 +#define IDS_2197 2197 +#define IDS_2198 2198 +#define IDS_2199 2199 +#define IDS_2200 2200 +#define IDS_2201 2201 +#define IDS_2202 2202 +#define IDS_2203 2203 +#define IDS_2204 2204 +#define IDS_2205 2205 +#define IDS_2206 2206 +#define IDS_2207 2207 +#define IDS_2208 2208 +#define IDS_2209 2209 +#define IDS_2210 2210 +#define IDS_2211 2211 +#define IDS_2212 2212 +#define IDS_2213 2213 +#define IDS_2214 2214 +#define IDS_2215 2215 +#define IDS_2216 2216 +#define IDS_2217 2217 +#define IDS_2218 2218 +#define IDS_2219 2219 +#define IDS_2220 2220 +#define IDS_2221 2221 +#define IDS_2222 2222 +#define IDS_2223 2223 +#define IDS_2224 2224 +#define IDS_2225 2225 +#define IDS_2226 2226 +#define IDS_2227 2227 +#define IDS_2228 2228 +#define IDS_2229 2229 +#define IDS_2230 2230 +#define IDS_2231 2231 +#define IDS_2232 2232 +#define IDS_2233 2233 +#define IDS_2234 2234 +#define IDS_2235 2235 +#define IDS_2236 2236 +#define IDS_2237 2237 +#define IDS_2238 2238 +#define IDS_2239 2239 +#define IDS_2240 2240 +#define IDS_2241 2241 +#define IDS_2242 2242 +#define IDS_2243 2243 +#define IDS_2244 2244 +#define IDS_2245 2245 +#define IDS_2246 2246 +#define IDS_2247 2247 +#define IDS_2248 2248 +#define IDS_2249 2249 +#define IDS_2250 2250 +#define IDS_2251 2251 +#define IDS_2252 2252 +#define IDS_2253 2253 +#define IDS_2254 2254 +#define IDS_2255 2255 +#define IDS_2256 2256 +#define IDS_2257 2257 +#define IDS_2258 2258 +#define IDS_2259 2259 +#define IDS_2260 2260 +#define IDS_2261 2261 +#define IDS_2262 2262 +#define IDS_2263 2263 +#define IDS_2264 2264 +#define IDS_2265 2265 +#define IDS_2266 2266 +#define IDS_2267 2267 +#define IDS_2268 2268 +#define IDS_2269 2269 +#define IDS_2270 2270 +#define IDS_2271 2271 +#define IDS_2272 2272 +#define IDS_2273 2273 +#define IDS_2274 2274 +#define IDS_2275 2275 +#define IDS_2276 2276 +#define IDS_2277 2277 +#define IDS_2278 2278 +#define IDS_2279 2279 +#define IDS_2280 2280 +#define IDS_2281 2281 +#define IDS_2282 2282 +#define IDS_2283 2283 +#define IDS_2284 2284 +#define IDS_2285 2285 +#define IDS_2286 2286 +#define IDS_2287 2287 +#define IDS_2288 2288 +#define IDS_2289 2289 +#define IDS_2290 2290 +#define IDS_2291 2291 +#define IDS_2292 2292 +#define IDS_2293 2293 +#define IDS_2294 2294 +#define IDS_2295 2295 +#define IDS_2296 2296 +#define IDS_2297 2297 +#define IDS_2298 2298 +#define IDS_2299 2299 +#define IDS_2300 2300 +#define IDS_2301 2301 +#define IDS_2302 2302 +#define IDS_2303 2303 +#define IDS_2304 2304 +#define IDS_2305 2305 +#define IDS_2306 2306 +#define IDS_2307 2307 +#define IDS_2308 2308 +#define IDS_2309 2309 +#define IDS_2310 2310 +#define IDS_2311 2311 +#define IDS_2312 2312 +#define IDS_2313 2313 +#define IDS_2314 2314 +#define IDS_2315 2315 +#define IDS_2316 2316 +#define IDS_2317 2317 +#define IDS_2318 2318 +#define IDS_2319 2319 +#define IDS_2320 2320 +#define IDS_2321 2321 +#define IDS_2322 2322 +#define IDS_2323 2323 +#define IDS_2324 2324 +#define IDS_2325 2325 +#define IDS_2326 2326 +#define IDS_2327 2327 +#define IDS_2328 2328 +#define IDS_2329 2329 +#define IDS_2330 2330 +#define IDS_2331 2331 STRINGTABLE BEGIN -IDS_1 "node_modules\\node-inspector\\.jshintignore" -IDS_2 "node_modules\\node-inspector\\.jshintrc" -IDS_3 "node_modules\\node-inspector\\AUTHORS" -IDS_4 "node_modules\\node-inspector\\config.json" -IDS_5 "node_modules\\node-inspector\\index.js" -IDS_6 "node_modules\\node-inspector\\LICENSE" -IDS_7 "node_modules\\node-inspector\\package.json" -IDS_8 "node_modules\\node-inspector\\bin\\inspector.js" -IDS_9 "node_modules\\node-inspector\\bin\\node-debug.js" -IDS_10 "node_modules\\node-inspector\\bin\\run-repl.js" -IDS_11 "node_modules\\node-inspector\\build\\config.gypi" -IDS_12 "node_modules\\node-inspector\\docs\\embedding.md" -IDS_13 "node_modules\\node-inspector\\front-end\\AdvancedSearchController.js" -IDS_14 "node_modules\\node-inspector\\front-end\\ApplicationCacheItemsView.js" -IDS_15 "node_modules\\node-inspector\\front-end\\ApplicationCacheModel.js" -IDS_16 "node_modules\\node-inspector\\front-end\\AuditCategories.js" -IDS_17 "node_modules\\node-inspector\\front-end\\AuditController.js" -IDS_18 "node_modules\\node-inspector\\front-end\\AuditFormatters.js" -IDS_19 "node_modules\\node-inspector\\front-end\\AuditLauncherView.js" -IDS_20 "node_modules\\node-inspector\\front-end\\AuditResultView.js" -IDS_21 "node_modules\\node-inspector\\front-end\\AuditRules.js" -IDS_22 "node_modules\\node-inspector\\front-end\\auditsPanel.css" -IDS_23 "node_modules\\node-inspector\\front-end\\AuditsPanel.js" -IDS_24 "node_modules\\node-inspector\\front-end\\BottomUpProfileDataGridTree.js" -IDS_25 "node_modules\\node-inspector\\front-end\\breadcrumbList.css" -IDS_26 "node_modules\\node-inspector\\front-end\\BreakpointManager.js" -IDS_27 "node_modules\\node-inspector\\front-end\\breakpointsList.css" -IDS_28 "node_modules\\node-inspector\\front-end\\BreakpointsSidebarPane.js" -IDS_29 "node_modules\\node-inspector\\front-end\\buildSystemOnly.js" -IDS_30 "node_modules\\node-inspector\\front-end\\CallStackSidebarPane.js" -IDS_31 "node_modules\\node-inspector\\front-end\\canvasProfiler.css" -IDS_32 "node_modules\\node-inspector\\front-end\\CanvasProfileView.js" -IDS_33 "node_modules\\node-inspector\\front-end\\CanvasReplayStateView.js" -IDS_34 "node_modules\\node-inspector\\front-end\\Checkbox.js" -IDS_35 "node_modules\\node-inspector\\front-end\\CodeMirrorTextEditor.js" -IDS_36 "node_modules\\node-inspector\\front-end\\CodeMirrorUtils.js" -IDS_37 "node_modules\\node-inspector\\front-end\\Color.js" -IDS_38 "node_modules\\node-inspector\\front-end\\CompilerScriptMapping.js" -IDS_39 "node_modules\\node-inspector\\front-end\\CompletionDictionary.js" -IDS_40 "node_modules\\node-inspector\\front-end\\ConsoleMessage.js" -IDS_41 "node_modules\\node-inspector\\front-end\\ConsoleModel.js" -IDS_42 "node_modules\\node-inspector\\front-end\\ConsolePanel.js" -IDS_43 "node_modules\\node-inspector\\front-end\\ConsoleView.js" -IDS_44 "node_modules\\node-inspector\\front-end\\ContentProvider.js" -IDS_45 "node_modules\\node-inspector\\front-end\\ContentProviderBasedProjectDelegate.js" -IDS_46 "node_modules\\node-inspector\\front-end\\ContentProviders.js" -IDS_47 "node_modules\\node-inspector\\front-end\\ContextMenu.js" -IDS_48 "node_modules\\node-inspector\\front-end\\CookieItemsView.js" -IDS_49 "node_modules\\node-inspector\\front-end\\CookieParser.js" -IDS_50 "node_modules\\node-inspector\\front-end\\CookiesTable.js" -IDS_51 "node_modules\\node-inspector\\front-end\\CPUProfileView.js" -IDS_52 "node_modules\\node-inspector\\front-end\\CSSMetadata.js" -IDS_53 "node_modules\\node-inspector\\front-end\\CSSNamedFlowCollectionsView.js" -IDS_54 "node_modules\\node-inspector\\front-end\\cssNamedFlows.css" -IDS_55 "node_modules\\node-inspector\\front-end\\CSSNamedFlowView.js" -IDS_56 "node_modules\\node-inspector\\front-end\\CSSStyleModel.js" -IDS_57 "node_modules\\node-inspector\\front-end\\CSSStyleSheetMapping.js" -IDS_58 "node_modules\\node-inspector\\front-end\\Database.js" -IDS_59 "node_modules\\node-inspector\\front-end\\DatabaseQueryView.js" -IDS_60 "node_modules\\node-inspector\\front-end\\DatabaseTableView.js" -IDS_61 "node_modules\\node-inspector\\front-end\\dataGrid.css" -IDS_62 "node_modules\\node-inspector\\front-end\\DataGrid.js" -IDS_63 "node_modules\\node-inspector\\front-end\\DebuggerModel.js" -IDS_64 "node_modules\\node-inspector\\front-end\\DebuggerScriptMapping.js" -IDS_65 "node_modules\\node-inspector\\front-end\\DefaultScriptMapping.js" -IDS_66 "node_modules\\node-inspector\\front-end\\DevToolsExtensionAPI.js" -IDS_67 "node_modules\\node-inspector\\front-end\\dialog.css" -IDS_68 "node_modules\\node-inspector\\front-end\\Dialog.js" -IDS_69 "node_modules\\node-inspector\\front-end\\DirectoryContentView.js" -IDS_70 "node_modules\\node-inspector\\front-end\\DockController.js" -IDS_71 "node_modules\\node-inspector\\front-end\\DOMAgent.js" -IDS_72 "node_modules\\node-inspector\\front-end\\DOMBreakpointsSidebarPane.js" -IDS_73 "node_modules\\node-inspector\\front-end\\DOMCountersGraph.js" -IDS_74 "node_modules\\node-inspector\\front-end\\DOMExtension.js" -IDS_75 "node_modules\\node-inspector\\front-end\\DOMPresentationUtils.js" -IDS_76 "node_modules\\node-inspector\\front-end\\DOMStorage.js" -IDS_77 "node_modules\\node-inspector\\front-end\\DOMStorageItemsView.js" -IDS_78 "node_modules\\node-inspector\\front-end\\DOMSyntaxHighlighter.js" -IDS_79 "node_modules\\node-inspector\\front-end\\Drawer.js" -IDS_80 "node_modules\\node-inspector\\front-end\\EditFileSystemDialog.js" -IDS_81 "node_modules\\node-inspector\\front-end\\elementsPanel.css" -IDS_82 "node_modules\\node-inspector\\front-end\\ElementsPanel.js" -IDS_83 "node_modules\\node-inspector\\front-end\\ElementsPanelDescriptor.js" -IDS_84 "node_modules\\node-inspector\\front-end\\ElementsTreeOutline.js" -IDS_85 "node_modules\\node-inspector\\front-end\\EmptyView.js" -IDS_86 "node_modules\\node-inspector\\front-end\\EventListenersSidebarPane.js" -IDS_87 "node_modules\\node-inspector\\front-end\\ExtensionAPI.js" -IDS_88 "node_modules\\node-inspector\\front-end\\ExtensionAuditCategory.js" -IDS_89 "node_modules\\node-inspector\\front-end\\ExtensionPanel.js" -IDS_90 "node_modules\\node-inspector\\front-end\\ExtensionRegistryStub.js" -IDS_91 "node_modules\\node-inspector\\front-end\\ExtensionServer.js" -IDS_92 "node_modules\\node-inspector\\front-end\\ExtensionView.js" -IDS_93 "node_modules\\node-inspector\\front-end\\externs.js" -IDS_94 "node_modules\\node-inspector\\front-end\\FileContentView.js" -IDS_95 "node_modules\\node-inspector\\front-end\\FileManager.js" -IDS_96 "node_modules\\node-inspector\\front-end\\FilePathScoreFunction.js" -IDS_97 "node_modules\\node-inspector\\front-end\\FileSystemMapping.js" -IDS_98 "node_modules\\node-inspector\\front-end\\FileSystemModel.js" -IDS_99 "node_modules\\node-inspector\\front-end\\FileSystemProjectDelegate.js" -IDS_100 "node_modules\\node-inspector\\front-end\\FileSystemView.js" -IDS_101 "node_modules\\node-inspector\\front-end\\FileUtils.js" -IDS_102 "node_modules\\node-inspector\\front-end\\filteredItemSelectionDialog.css" -IDS_103 "node_modules\\node-inspector\\front-end\\FilteredItemSelectionDialog.js" -IDS_104 "node_modules\\node-inspector\\front-end\\flameChart.css" -IDS_105 "node_modules\\node-inspector\\front-end\\FlameChart.js" -IDS_106 "node_modules\\node-inspector\\front-end\\FontView.js" -IDS_107 "node_modules\\node-inspector\\front-end\\GoToLineDialog.js" -IDS_108 "node_modules\\node-inspector\\front-end\\HandlerRegistry.js" -IDS_109 "node_modules\\node-inspector\\front-end\\HAREntry.js" -IDS_110 "node_modules\\node-inspector\\front-end\\heapProfiler.css" -IDS_111 "node_modules\\node-inspector\\front-end\\HeapSnapshot.js" -IDS_112 "node_modules\\node-inspector\\front-end\\HeapSnapshotDataGrids.js" -IDS_113 "node_modules\\node-inspector\\front-end\\HeapSnapshotGridNodes.js" -IDS_114 "node_modules\\node-inspector\\front-end\\HeapSnapshotLoader.js" -IDS_115 "node_modules\\node-inspector\\front-end\\HeapSnapshotProxy.js" -IDS_116 "node_modules\\node-inspector\\front-end\\HeapSnapshotView.js" -IDS_117 "node_modules\\node-inspector\\front-end\\HeapSnapshotWorker.js" -IDS_118 "node_modules\\node-inspector\\front-end\\HeapSnapshotWorkerDispatcher.js" -IDS_119 "node_modules\\node-inspector\\front-end\\helpScreen.css" -IDS_120 "node_modules\\node-inspector\\front-end\\HelpScreen.js" -IDS_121 "node_modules\\node-inspector\\front-end\\ImageView.js" -IDS_122 "node_modules\\node-inspector\\front-end\\IndexedDBModel.js" -IDS_123 "node_modules\\node-inspector\\front-end\\indexedDBViews.css" -IDS_124 "node_modules\\node-inspector\\front-end\\IndexedDBViews.js" -IDS_125 "node_modules\\node-inspector\\front-end\\InspectElementModeController.js" -IDS_126 "node_modules\\node-inspector\\front-end\\inspector.css" -IDS_127 "node_modules\\node-inspector\\front-end\\inspector.html" -IDS_128 "node_modules\\node-inspector\\front-end\\inspector.js" -IDS_129 "node_modules\\node-inspector\\front-end\\InspectorBackend.js" -IDS_130 "node_modules\\node-inspector\\front-end\\InspectorBackendCommands.js" -IDS_131 "node_modules\\node-inspector\\front-end\\inspectorCommon.css" -IDS_132 "node_modules\\node-inspector\\front-end\\InspectorFrontendAPI.js" -IDS_133 "node_modules\\node-inspector\\front-end\\InspectorFrontendHostStub.js" -IDS_134 "node_modules\\node-inspector\\front-end\\inspectorSyntaxHighlight.css" -IDS_135 "node_modules\\node-inspector\\front-end\\InspectorView.js" -IDS_136 "node_modules\\node-inspector\\front-end\\IsolatedFileSystem.js" -IDS_137 "node_modules\\node-inspector\\front-end\\IsolatedFileSystemManager.js" -IDS_138 "node_modules\\node-inspector\\front-end\\JavaScriptFormatter.js" -IDS_139 "node_modules\\node-inspector\\front-end\\JavaScriptSourceFrame.js" -IDS_140 "node_modules\\node-inspector\\front-end\\jsdifflib.js" -IDS_141 "node_modules\\node-inspector\\front-end\\JSHeapSnapshot.js" -IDS_142 "node_modules\\node-inspector\\front-end\\KeyboardShortcut.js" -IDS_143 "node_modules\\node-inspector\\front-end\\LayerDetailsView.js" -IDS_144 "node_modules\\node-inspector\\front-end\\Layers3DView.js" -IDS_145 "node_modules\\node-inspector\\front-end\\layersPanel.css" -IDS_146 "node_modules\\node-inspector\\front-end\\LayersPanel.js" -IDS_147 "node_modules\\node-inspector\\front-end\\LayersPanelDescriptor.js" -IDS_148 "node_modules\\node-inspector\\front-end\\LayerTree.js" -IDS_149 "node_modules\\node-inspector\\front-end\\LayerTreeModel.js" -IDS_150 "node_modules\\node-inspector\\front-end\\Linkifier.js" -IDS_151 "node_modules\\node-inspector\\front-end\\LiveEditSupport.js" -IDS_152 "node_modules\\node-inspector\\front-end\\MemoryStatistics.js" -IDS_153 "node_modules\\node-inspector\\front-end\\MetricsSidebarPane.js" -IDS_154 "node_modules\\node-inspector\\front-end\\NativeBreakpointsSidebarPane.js" -IDS_155 "node_modules\\node-inspector\\front-end\\NavigatorOverlayController.js" -IDS_156 "node_modules\\node-inspector\\front-end\\navigatorView.css" -IDS_157 "node_modules\\node-inspector\\front-end\\NavigatorView.js" -IDS_158 "node_modules\\node-inspector\\front-end\\NetworkItemView.js" -IDS_159 "node_modules\\node-inspector\\front-end\\NetworkLog.js" -IDS_160 "node_modules\\node-inspector\\front-end\\networkLogView.css" -IDS_161 "node_modules\\node-inspector\\front-end\\NetworkManager.js" -IDS_162 "node_modules\\node-inspector\\front-end\\networkPanel.css" -IDS_163 "node_modules\\node-inspector\\front-end\\NetworkPanel.js" -IDS_164 "node_modules\\node-inspector\\front-end\\NetworkPanelDescriptor.js" -IDS_165 "node_modules\\node-inspector\\front-end\\NetworkRequest.js" -IDS_166 "node_modules\\node-inspector\\front-end\\NetworkUISourceCodeProvider.js" -IDS_167 "node_modules\\node-inspector\\front-end\\Object.js" -IDS_168 "node_modules\\node-inspector\\front-end\\ObjectPopoverHelper.js" -IDS_169 "node_modules\\node-inspector\\front-end\\ObjectPropertiesSection.js" -IDS_170 "node_modules\\node-inspector\\front-end\\OverridesSupport.js" -IDS_171 "node_modules\\node-inspector\\front-end\\OverridesView.js" -IDS_172 "node_modules\\node-inspector\\front-end\\OverviewGrid.js" -IDS_173 "node_modules\\node-inspector\\front-end\\OWNERS" -IDS_174 "node_modules\\node-inspector\\front-end\\Panel.js" -IDS_175 "node_modules\\node-inspector\\front-end\\panelEnablerView.css" -IDS_176 "node_modules\\node-inspector\\front-end\\ParsedURL.js" -IDS_177 "node_modules\\node-inspector\\front-end\\Placard.js" -IDS_178 "node_modules\\node-inspector\\front-end\\PlatformFontsSidebarPane.js" -IDS_179 "node_modules\\node-inspector\\front-end\\popover.css" -IDS_180 "node_modules\\node-inspector\\front-end\\Popover.js" -IDS_181 "node_modules\\node-inspector\\front-end\\PresentationConsoleMessageHelper.js" -IDS_182 "node_modules\\node-inspector\\front-end\\ProfileDataGridTree.js" -IDS_183 "node_modules\\node-inspector\\front-end\\ProfileLauncherView.js" -IDS_184 "node_modules\\node-inspector\\front-end\\profilesPanel.css" -IDS_185 "node_modules\\node-inspector\\front-end\\ProfilesPanel.js" -IDS_186 "node_modules\\node-inspector\\front-end\\ProfilesPanelDescriptor.js" -IDS_187 "node_modules\\node-inspector\\front-end\\Progress.js" -IDS_188 "node_modules\\node-inspector\\front-end\\ProgressIndicator.js" -IDS_189 "node_modules\\node-inspector\\front-end\\PropertiesSection.js" -IDS_190 "node_modules\\node-inspector\\front-end\\PropertiesSidebarPane.js" -IDS_191 "node_modules\\node-inspector\\front-end\\RawSourceCode.js" -IDS_192 "node_modules\\node-inspector\\front-end\\RemoteObject.js" -IDS_193 "node_modules\\node-inspector\\front-end\\RequestCookiesView.js" -IDS_194 "node_modules\\node-inspector\\front-end\\RequestHeadersView.js" -IDS_195 "node_modules\\node-inspector\\front-end\\RequestHTMLView.js" -IDS_196 "node_modules\\node-inspector\\front-end\\RequestJSONView.js" -IDS_197 "node_modules\\node-inspector\\front-end\\RequestPreviewView.js" -IDS_198 "node_modules\\node-inspector\\front-end\\RequestResponseView.js" -IDS_199 "node_modules\\node-inspector\\front-end\\RequestTimingView.js" -IDS_200 "node_modules\\node-inspector\\front-end\\RequestView.js" -IDS_201 "node_modules\\node-inspector\\front-end\\Resource.js" -IDS_202 "node_modules\\node-inspector\\front-end\\ResourceScriptMapping.js" -IDS_203 "node_modules\\node-inspector\\front-end\\resourcesPanel.css" -IDS_204 "node_modules\\node-inspector\\front-end\\ResourcesPanel.js" -IDS_205 "node_modules\\node-inspector\\front-end\\ResourceTreeModel.js" -IDS_206 "node_modules\\node-inspector\\front-end\\ResourceType.js" -IDS_207 "node_modules\\node-inspector\\front-end\\ResourceUtils.js" -IDS_208 "node_modules\\node-inspector\\front-end\\resourceView.css" -IDS_209 "node_modules\\node-inspector\\front-end\\ResourceView.js" -IDS_210 "node_modules\\node-inspector\\front-end\\ResourceWebSocketFrameView.js" -IDS_211 "node_modules\\node-inspector\\front-end\\revisionHistory.css" -IDS_212 "node_modules\\node-inspector\\front-end\\RevisionHistoryView.js" -IDS_213 "node_modules\\node-inspector\\front-end\\RuntimeModel.js" -IDS_214 "node_modules\\node-inspector\\front-end\\SASSSourceMapping.js" -IDS_215 "node_modules\\node-inspector\\front-end\\ScopeChainSidebarPane.js" -IDS_216 "node_modules\\node-inspector\\front-end\\screencastView.css" -IDS_217 "node_modules\\node-inspector\\front-end\\ScreencastView.js" -IDS_218 "node_modules\\node-inspector\\front-end\\Script.js" -IDS_219 "node_modules\\node-inspector\\front-end\\ScriptFormatter.js" -IDS_220 "node_modules\\node-inspector\\front-end\\ScriptFormatterWorker.js" -IDS_221 "node_modules\\node-inspector\\front-end\\ScriptsNavigator.js" -IDS_222 "node_modules\\node-inspector\\front-end\\ScriptSnippetModel.js" -IDS_223 "node_modules\\node-inspector\\front-end\\scriptsPanel.css" -IDS_224 "node_modules\\node-inspector\\front-end\\ScriptsPanel.js" -IDS_225 "node_modules\\node-inspector\\front-end\\ScriptsPanelDescriptor.js" -IDS_226 "node_modules\\node-inspector\\front-end\\ScriptsSearchScope.js" -IDS_227 "node_modules\\node-inspector\\front-end\\SearchController.js" -IDS_228 "node_modules\\node-inspector\\front-end\\Section.js" -IDS_229 "node_modules\\node-inspector\\front-end\\Settings.js" -IDS_230 "node_modules\\node-inspector\\front-end\\SettingsScreen.js" -IDS_231 "node_modules\\node-inspector\\front-end\\ShortcutsScreen.js" -IDS_232 "node_modules\\node-inspector\\front-end\\ShowMoreDataGridNode.js" -IDS_233 "node_modules\\node-inspector\\front-end\\SidebarOverlay.js" -IDS_234 "node_modules\\node-inspector\\front-end\\sidebarPane.css" -IDS_235 "node_modules\\node-inspector\\front-end\\SidebarPane.js" -IDS_236 "node_modules\\node-inspector\\front-end\\SidebarTreeElement.js" -IDS_237 "node_modules\\node-inspector\\front-end\\SidebarView.js" -IDS_238 "node_modules\\node-inspector\\front-end\\SimpleWorkspaceProvider.js" -IDS_239 "node_modules\\node-inspector\\front-end\\SnippetStorage.js" -IDS_240 "node_modules\\node-inspector\\front-end\\SoftContextMenu.js" -IDS_241 "node_modules\\node-inspector\\front-end\\SourceFrame.js" -IDS_242 "node_modules\\node-inspector\\front-end\\SourceMap.js" -IDS_243 "node_modules\\node-inspector\\front-end\\SourceMapping.js" -IDS_244 "node_modules\\node-inspector\\front-end\\spectrum.css" -IDS_245 "node_modules\\node-inspector\\front-end\\Spectrum.js" -IDS_246 "node_modules\\node-inspector\\front-end\\splitView.css" -IDS_247 "node_modules\\node-inspector\\front-end\\SplitView.js" -IDS_248 "node_modules\\node-inspector\\front-end\\StatusBarButton.js" -IDS_249 "node_modules\\node-inspector\\front-end\\StyleSheetOutlineDialog.js" -IDS_250 "node_modules\\node-inspector\\front-end\\StylesSidebarPane.js" -IDS_251 "node_modules\\node-inspector\\front-end\\StylesSourceMapping.js" -IDS_252 "node_modules\\node-inspector\\front-end\\SuggestBox.js" -IDS_253 "node_modules\\node-inspector\\front-end\\TabbedEditorContainer.js" -IDS_254 "node_modules\\node-inspector\\front-end\\tabbedPane.css" -IDS_255 "node_modules\\node-inspector\\front-end\\TabbedPane.js" -IDS_256 "node_modules\\node-inspector\\front-end\\test-runner.html" -IDS_257 "node_modules\\node-inspector\\front-end\\TestController.js" -IDS_258 "node_modules\\node-inspector\\front-end\\Tests.js" -IDS_259 "node_modules\\node-inspector\\front-end\\TextEditor.js" -IDS_260 "node_modules\\node-inspector\\front-end\\textPrompt.css" -IDS_261 "node_modules\\node-inspector\\front-end\\TextPrompt.js" -IDS_262 "node_modules\\node-inspector\\front-end\\TextRange.js" -IDS_263 "node_modules\\node-inspector\\front-end\\TextUtils.js" -IDS_264 "node_modules\\node-inspector\\front-end\\TimelineFrameController.js" -IDS_265 "node_modules\\node-inspector\\front-end\\TimelineGrid.js" -IDS_266 "node_modules\\node-inspector\\front-end\\TimelineManager.js" -IDS_267 "node_modules\\node-inspector\\front-end\\TimelineModel.js" -IDS_268 "node_modules\\node-inspector\\front-end\\TimelineOverviewPane.js" -IDS_269 "node_modules\\node-inspector\\front-end\\timelinePanel.css" -IDS_270 "node_modules\\node-inspector\\front-end\\TimelinePanel.js" -IDS_271 "node_modules\\node-inspector\\front-end\\TimelinePanelDescriptor.js" -IDS_272 "node_modules\\node-inspector\\front-end\\TimelinePresentationModel.js" -IDS_273 "node_modules\\node-inspector\\front-end\\Toolbar.js" -IDS_274 "node_modules\\node-inspector\\front-end\\TopDownProfileDataGridTree.js" -IDS_275 "node_modules\\node-inspector\\front-end\\TracingAgent.js" -IDS_276 "node_modules\\node-inspector\\front-end\\treeoutline.js" -IDS_277 "node_modules\\node-inspector\\front-end\\UISourceCode.js" -IDS_278 "node_modules\\node-inspector\\front-end\\UISourceCodeFrame.js" -IDS_279 "node_modules\\node-inspector\\front-end\\UIString.js" -IDS_280 "node_modules\\node-inspector\\front-end\\UIUtils.js" -IDS_281 "node_modules\\node-inspector\\front-end\\UserMetrics.js" -IDS_282 "node_modules\\node-inspector\\front-end\\utilities.js" -IDS_283 "node_modules\\node-inspector\\front-end\\View.js" -IDS_284 "node_modules\\node-inspector\\front-end\\ViewportControl.js" -IDS_285 "node_modules\\node-inspector\\front-end\\WatchExpressionsSidebarPane.js" -IDS_286 "node_modules\\node-inspector\\front-end\\WorkerManager.js" -IDS_287 "node_modules\\node-inspector\\front-end\\WorkersSidebarPane.js" -IDS_288 "node_modules\\node-inspector\\front-end\\Workspace.js" -IDS_289 "node_modules\\node-inspector\\front-end\\WorkspaceController.js" -IDS_290 "node_modules\\node-inspector\\front-end\\cm\\clike.js" -IDS_291 "node_modules\\node-inspector\\front-end\\cm\\closebrackets.js" -IDS_292 "node_modules\\node-inspector\\front-end\\cm\\cmdevtools.css" -IDS_293 "node_modules\\node-inspector\\front-end\\cm\\codemirror.css" -IDS_294 "node_modules\\node-inspector\\front-end\\cm\\codemirror.js" -IDS_295 "node_modules\\node-inspector\\front-end\\cm\\coffeescript.js" -IDS_296 "node_modules\\node-inspector\\front-end\\cm\\comment.js" -IDS_297 "node_modules\\node-inspector\\front-end\\cm\\css.js" -IDS_298 "node_modules\\node-inspector\\front-end\\cm\\headlesscodemirror.js" -IDS_299 "node_modules\\node-inspector\\front-end\\cm\\htmlembedded.js" -IDS_300 "node_modules\\node-inspector\\front-end\\cm\\htmlmixed.js" -IDS_301 "node_modules\\node-inspector\\front-end\\cm\\javascript.js" -IDS_302 "node_modules\\node-inspector\\front-end\\cm\\LICENSE" -IDS_303 "node_modules\\node-inspector\\front-end\\cm\\LICENSE_python" -IDS_304 "node_modules\\node-inspector\\front-end\\cm\\markselection.js" -IDS_305 "node_modules\\node-inspector\\front-end\\cm\\matchbrackets.js" -IDS_306 "node_modules\\node-inspector\\front-end\\cm\\overlay.js" -IDS_307 "node_modules\\node-inspector\\front-end\\cm\\php.js" -IDS_308 "node_modules\\node-inspector\\front-end\\cm\\python.js" -IDS_309 "node_modules\\node-inspector\\front-end\\cm\\shell.js" -IDS_310 "node_modules\\node-inspector\\front-end\\cm\\xml.js" -IDS_311 "node_modules\\node-inspector\\front-end\\Images\\addIcon.png" -IDS_312 "node_modules\\node-inspector\\front-end\\Images\\applicationCache.png" -IDS_313 "node_modules\\node-inspector\\front-end\\Images\\back.png" -IDS_314 "node_modules\\node-inspector\\front-end\\Images\\breakpoint2.png" -IDS_315 "node_modules\\node-inspector\\front-end\\Images\\breakpoint2_2x.png" -IDS_316 "node_modules\\node-inspector\\front-end\\Images\\breakpointBorder.png" -IDS_317 "node_modules\\node-inspector\\front-end\\Images\\breakpointConditional2.png" -IDS_318 "node_modules\\node-inspector\\front-end\\Images\\breakpointConditional2_2x.png" -IDS_319 "node_modules\\node-inspector\\front-end\\Images\\breakpointConditionalBorder.png" -IDS_320 "node_modules\\node-inspector\\front-end\\Images\\breakpointConditionalCounterBorder.png" -IDS_321 "node_modules\\node-inspector\\front-end\\Images\\breakpointCounterBorder.png" -IDS_322 "node_modules\\node-inspector\\front-end\\Images\\checker.png" -IDS_323 "node_modules\\node-inspector\\front-end\\Images\\cookie.png" -IDS_324 "node_modules\\node-inspector\\front-end\\Images\\database.png" -IDS_325 "node_modules\\node-inspector\\front-end\\Images\\databaseTable.png" -IDS_326 "node_modules\\node-inspector\\front-end\\Images\\deleteIcon.png" -IDS_327 "node_modules\\node-inspector\\front-end\\Images\\domain.png" -IDS_328 "node_modules\\node-inspector\\front-end\\Images\\fileSystem.png" -IDS_329 "node_modules\\node-inspector\\front-end\\Images\\forward.png" -IDS_330 "node_modules\\node-inspector\\front-end\\Images\\frame.png" -IDS_331 "node_modules\\node-inspector\\front-end\\Images\\glossyHeader.png" -IDS_332 "node_modules\\node-inspector\\front-end\\Images\\glossyHeaderPressed.png" -IDS_333 "node_modules\\node-inspector\\front-end\\Images\\glossyHeaderSelected.png" -IDS_334 "node_modules\\node-inspector\\front-end\\Images\\glossyHeaderSelectedPressed.png" -IDS_335 "node_modules\\node-inspector\\front-end\\Images\\graphLabelCalloutLeft.png" -IDS_336 "node_modules\\node-inspector\\front-end\\Images\\graphLabelCalloutRight.png" -IDS_337 "node_modules\\node-inspector\\front-end\\Images\\indexedDB.png" -IDS_338 "node_modules\\node-inspector\\front-end\\Images\\indexedDBIndex.png" -IDS_339 "node_modules\\node-inspector\\front-end\\Images\\indexedDBObjectStore.png" -IDS_340 "node_modules\\node-inspector\\front-end\\Images\\localStorage.png" -IDS_341 "node_modules\\node-inspector\\front-end\\Images\\namedFlowOverflow.png" -IDS_342 "node_modules\\node-inspector\\front-end\\Images\\paneAddButtons.png" -IDS_343 "node_modules\\node-inspector\\front-end\\Images\\paneElementStateButtons.png" -IDS_344 "node_modules\\node-inspector\\front-end\\Images\\paneFilterButtons.png" -IDS_345 "node_modules\\node-inspector\\front-end\\Images\\paneRefreshButtons.png" -IDS_346 "node_modules\\node-inspector\\front-end\\Images\\paneSettingsButtons.png" -IDS_347 "node_modules\\node-inspector\\front-end\\Images\\popoverArrows.png" -IDS_348 "node_modules\\node-inspector\\front-end\\Images\\popoverBackground.png" -IDS_349 "node_modules\\node-inspector\\front-end\\Images\\profileGroupIcon.png" -IDS_350 "node_modules\\node-inspector\\front-end\\Images\\profileIcon.png" -IDS_351 "node_modules\\node-inspector\\front-end\\Images\\profileSmallIcon.png" -IDS_352 "node_modules\\node-inspector\\front-end\\Images\\programCounterBorder.png" -IDS_353 "node_modules\\node-inspector\\front-end\\Images\\radioDot.png" -IDS_354 "node_modules\\node-inspector\\front-end\\Images\\regionEmpty.png" -IDS_355 "node_modules\\node-inspector\\front-end\\Images\\regionFit.png" -IDS_356 "node_modules\\node-inspector\\front-end\\Images\\regionOverset.png" -IDS_357 "node_modules\\node-inspector\\front-end\\Images\\resourceCSSIcon.png" -IDS_358 "node_modules\\node-inspector\\front-end\\Images\\resourceDocumentIcon.png" -IDS_359 "node_modules\\node-inspector\\front-end\\Images\\resourceDocumentIconSmall.png" -IDS_360 "node_modules\\node-inspector\\front-end\\Images\\resourceJSIcon.png" -IDS_361 "node_modules\\node-inspector\\front-end\\Images\\resourcePlainIcon.png" -IDS_362 "node_modules\\node-inspector\\front-end\\Images\\resourcePlainIconSmall.png" -IDS_363 "node_modules\\node-inspector\\front-end\\Images\\resourcesTimeGraphIcon.png" -IDS_364 "node_modules\\node-inspector\\front-end\\Images\\searchNext.png" -IDS_365 "node_modules\\node-inspector\\front-end\\Images\\searchPrev.png" -IDS_366 "node_modules\\node-inspector\\front-end\\Images\\searchSmallBlue.png" -IDS_367 "node_modules\\node-inspector\\front-end\\Images\\searchSmallBrightBlue.png" -IDS_368 "node_modules\\node-inspector\\front-end\\Images\\searchSmallGray.png" -IDS_369 "node_modules\\node-inspector\\front-end\\Images\\searchSmallWhite.png" -IDS_370 "node_modules\\node-inspector\\front-end\\Images\\segment.png" -IDS_371 "node_modules\\node-inspector\\front-end\\Images\\segmentEnd.png" -IDS_372 "node_modules\\node-inspector\\front-end\\Images\\segmentHover.png" -IDS_373 "node_modules\\node-inspector\\front-end\\Images\\segmentHoverEnd.png" -IDS_374 "node_modules\\node-inspector\\front-end\\Images\\segmentSelected.png" -IDS_375 "node_modules\\node-inspector\\front-end\\Images\\segmentSelectedEnd.png" -IDS_376 "node_modules\\node-inspector\\front-end\\Images\\sessionStorage.png" -IDS_377 "node_modules\\node-inspector\\front-end\\Images\\settingsListRemove.png" -IDS_378 "node_modules\\node-inspector\\front-end\\Images\\settingsListRemove_2x.png" -IDS_379 "node_modules\\node-inspector\\front-end\\Images\\spinner.gif" -IDS_380 "node_modules\\node-inspector\\front-end\\Images\\spinnerActive.gif" -IDS_381 "node_modules\\node-inspector\\front-end\\Images\\spinnerActiveSelected.gif" -IDS_382 "node_modules\\node-inspector\\front-end\\Images\\spinnerInactive.gif" -IDS_383 "node_modules\\node-inspector\\front-end\\Images\\spinnerInactiveSelected.gif" -IDS_384 "node_modules\\node-inspector\\front-end\\Images\\statusbarButtonGlyphs.png" -IDS_385 "node_modules\\node-inspector\\front-end\\Images\\statusbarButtonGlyphs2x.png" -IDS_386 "node_modules\\node-inspector\\front-end\\Images\\statusbarResizerHorizontal.png" -IDS_387 "node_modules\\node-inspector\\front-end\\Images\\statusbarResizerVertical.png" -IDS_388 "node_modules\\node-inspector\\front-end\\Images\\thumbActiveHoriz.png" -IDS_389 "node_modules\\node-inspector\\front-end\\Images\\thumbActiveVert.png" -IDS_390 "node_modules\\node-inspector\\front-end\\Images\\thumbHoriz.png" -IDS_391 "node_modules\\node-inspector\\front-end\\Images\\thumbHoverHoriz.png" -IDS_392 "node_modules\\node-inspector\\front-end\\Images\\thumbHoverVert.png" -IDS_393 "node_modules\\node-inspector\\front-end\\Images\\thumbVert.png" -IDS_394 "node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillBlue.png" -IDS_395 "node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillGray.png" -IDS_396 "node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillGreen.png" -IDS_397 "node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillOrange.png" -IDS_398 "node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillPurple.png" -IDS_399 "node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillRed.png" -IDS_400 "node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillYellow.png" -IDS_401 "node_modules\\node-inspector\\front-end\\Images\\timelinePillBlue.png" -IDS_402 "node_modules\\node-inspector\\front-end\\Images\\timelinePillGray.png" -IDS_403 "node_modules\\node-inspector\\front-end\\Images\\timelinePillGreen.png" -IDS_404 "node_modules\\node-inspector\\front-end\\Images\\timelinePillOrange.png" -IDS_405 "node_modules\\node-inspector\\front-end\\Images\\timelinePillPurple.png" -IDS_406 "node_modules\\node-inspector\\front-end\\Images\\timelinePillRed.png" -IDS_407 "node_modules\\node-inspector\\front-end\\Images\\timelinePillYellow.png" -IDS_408 "node_modules\\node-inspector\\front-end\\Images\\toolbarItemSelected.png" -IDS_409 "node_modules\\node-inspector\\front-end\\Images\\trackHoriz.png" -IDS_410 "node_modules\\node-inspector\\front-end\\Images\\trackVert.png" -IDS_411 "node_modules\\node-inspector\\front-end\\Images\\src\\breakpoints2.svg" -IDS_412 "node_modules\\node-inspector\\front-end\\Images\\src\\settingListRemove.svg" -IDS_413 "node_modules\\node-inspector\\front-end\\Images\\src\\statusbarButtonGlyphs.svg" -IDS_414 "node_modules\\node-inspector\\front-end\\UglifyJS\\parse-js.js" -IDS_415 "node_modules\\node-inspector\\front-end-node\\Overrides.js" -IDS_416 "node_modules\\node-inspector\\lib\\BreakEventHandler.js" -IDS_417 "node_modules\\node-inspector\\lib\\callback.js" -IDS_418 "node_modules\\node-inspector\\lib\\CallFramesProvider.js" -IDS_419 "node_modules\\node-inspector\\lib\\config.js" -IDS_420 "node_modules\\node-inspector\\lib\\convert.js" -IDS_421 "node_modules\\node-inspector\\lib\\debug-server.js" -IDS_422 "node_modules\\node-inspector\\lib\\debugger.js" -IDS_423 "node_modules\\node-inspector\\lib\\DebuggerAgent.js" -IDS_424 "node_modules\\node-inspector\\lib\\DebuggerClient.js" -IDS_425 "node_modules\\node-inspector\\lib\\FrontendClient.js" -IDS_426 "node_modules\\node-inspector\\lib\\FrontendCommandHandler.js" -IDS_427 "node_modules\\node-inspector\\lib\\NetworkAgent.js" -IDS_428 "node_modules\\node-inspector\\lib\\PageAgent.js" -IDS_429 "node_modules\\node-inspector\\lib\\RuntimeAgent.js" -IDS_430 "node_modules\\node-inspector\\lib\\ScriptFileStorage.js" -IDS_431 "node_modules\\node-inspector\\lib\\ScriptManager.js" -IDS_432 "node_modules\\node-inspector\\lib\\session.js" -IDS_433 "node_modules\\node-inspector\\node_modules\\.bin\\express" -IDS_434 "node_modules\\node-inspector\\node_modules\\.bin\\express.cmd" -IDS_435 "node_modules\\node-inspector\\node_modules\\.bin\\opener" -IDS_436 "node_modules\\node-inspector\\node_modules\\.bin\\opener.cmd" -IDS_437 "node_modules\\node-inspector\\node_modules\\.bin\\rc" -IDS_438 "node_modules\\node-inspector\\node_modules\\.bin\\rc.cmd" -IDS_439 "node_modules\\node-inspector\\node_modules\\.bin\\which" -IDS_440 "node_modules\\node-inspector\\node_modules\\.bin\\which.cmd" -IDS_441 "node_modules\\node-inspector\\node_modules\\.bin\\wscat" -IDS_442 "node_modules\\node-inspector\\node_modules\\.bin\\wscat.cmd" -IDS_443 "node_modules\\node-inspector\\node_modules\\async\\.travis.yml" -IDS_444 "node_modules\\node-inspector\\node_modules\\async\\component.json" -IDS_445 "node_modules\\node-inspector\\node_modules\\async\\LICENSE" -IDS_446 "node_modules\\node-inspector\\node_modules\\async\\package.json" -IDS_447 "node_modules\\node-inspector\\node_modules\\async\\lib\\async.js" -IDS_448 "node_modules\\node-inspector\\node_modules\\debug\\debug.js" -IDS_449 "node_modules\\node-inspector\\node_modules\\debug\\package.json" -IDS_450 "node_modules\\node-inspector\\node_modules\\debug\\lib\\debug.js" -IDS_451 "node_modules\\node-inspector\\node_modules\\express\\.travis.yml" -IDS_452 "node_modules\\node-inspector\\node_modules\\express\\index.js" -IDS_453 "node_modules\\node-inspector\\node_modules\\express\\LICENSE" -IDS_454 "node_modules\\node-inspector\\node_modules\\express\\package.json" -IDS_455 "node_modules\\node-inspector\\node_modules\\express\\bin\\express" -IDS_456 "node_modules\\node-inspector\\node_modules\\express\\lib\\application.js" -IDS_457 "node_modules\\node-inspector\\node_modules\\express\\lib\\express.js" -IDS_458 "node_modules\\node-inspector\\node_modules\\express\\lib\\middleware.js" -IDS_459 "node_modules\\node-inspector\\node_modules\\express\\lib\\request.js" -IDS_460 "node_modules\\node-inspector\\node_modules\\express\\lib\\response.js" -IDS_461 "node_modules\\node-inspector\\node_modules\\express\\lib\\utils.js" -IDS_462 "node_modules\\node-inspector\\node_modules\\express\\lib\\view.js" -IDS_463 "node_modules\\node-inspector\\node_modules\\express\\lib\\router\\index.js" -IDS_464 "node_modules\\node-inspector\\node_modules\\express\\lib\\router\\route.js" -IDS_465 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\.bin\\mkdirp" -IDS_466 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\.bin\\mkdirp.cmd" -IDS_467 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\buffer-crc32\\.travis.yml" -IDS_468 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\buffer-crc32\\index.js" -IDS_469 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\buffer-crc32\\package.json" -IDS_470 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\buffer-crc32\\tests\\crc.test.js" -IDS_471 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\commander\\index.js" -IDS_472 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\commander\\package.json" -IDS_473 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\commander\\node_modules\\keypress\\index.js" -IDS_474 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\commander\\node_modules\\keypress\\package.json" -IDS_475 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\commander\\node_modules\\keypress\\test.js" -IDS_476 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\.travis.yml" -IDS_477 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\index.js" -IDS_478 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\LICENSE" -IDS_479 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\package.json" -IDS_480 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\cache.js" -IDS_481 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\connect.js" -IDS_482 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\index.js" -IDS_483 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\patch.js" -IDS_484 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\proto.js" -IDS_485 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\utils.js" -IDS_486 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\basicAuth.js" -IDS_487 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\bodyParser.js" -IDS_488 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\compress.js" -IDS_489 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\cookieParser.js" -IDS_490 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\cookieSession.js" -IDS_491 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\csrf.js" -IDS_492 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\directory.js" -IDS_493 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\errorHandler.js" -IDS_494 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\favicon.js" -IDS_495 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\json.js" -IDS_496 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\limit.js" -IDS_497 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\logger.js" -IDS_498 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\methodOverride.js" -IDS_499 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\multipart.js" -IDS_500 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\query.js" -IDS_501 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\responseTime.js" -IDS_502 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\session.js" -IDS_503 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\static.js" -IDS_504 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\staticCache.js" -IDS_505 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\timeout.js" -IDS_506 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\urlencoded.js" -IDS_507 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\vhost.js" -IDS_508 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\basic-auth-connect\\.travis.yml" -IDS_509 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\basic-auth-connect\\index.js" -IDS_510 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\basic-auth-connect\\package.json" -IDS_511 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\bytes\\component.json" -IDS_512 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\bytes\\index.js" -IDS_513 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\bytes\\package.json" -IDS_514 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\.travis.yml" -IDS_515 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\index.js" -IDS_516 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\package.json" -IDS_517 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\bytes\\component.json" -IDS_518 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\bytes\\index.js" -IDS_519 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\bytes\\package.json" -IDS_520 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\compressible\\.travis.yml" -IDS_521 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\compressible\\bench.js" -IDS_522 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\compressible\\index.js" -IDS_523 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\compressible\\package.json" -IDS_524 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\compressible\\specifications.json" -IDS_525 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\compressible\\test.js" -IDS_526 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\LICENSE" -IDS_527 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\package.json" -IDS_528 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\examples\\accept.js" -IDS_529 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\examples\\charset.js" -IDS_530 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\examples\\encoding.js" -IDS_531 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\examples\\language.js" -IDS_532 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\lib\\charset.js" -IDS_533 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\lib\\encoding.js" -IDS_534 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\lib\\language.js" -IDS_535 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\lib\\mediaType.js" -IDS_536 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\lib\\negotiator.js" -IDS_537 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\test\\charset.js" -IDS_538 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\test\\encoding.js" -IDS_539 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\test\\language.js" -IDS_540 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\test\\mediaType.js" -IDS_541 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\connect-timeout\\.travis.yml" -IDS_542 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\connect-timeout\\index.js" -IDS_543 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\connect-timeout\\package.json" -IDS_544 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\index.js" -IDS_545 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\package.json" -IDS_546 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\lib\\parse.js" -IDS_547 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\node_modules\\cookie\\.travis.yml" -IDS_548 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\node_modules\\cookie\\index.js" -IDS_549 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\node_modules\\cookie\\LICENSE" -IDS_550 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\node_modules\\cookie\\package.json" -IDS_551 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\node_modules\\cookie\\test\\mocha.opts" -IDS_552 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\node_modules\\cookie\\test\\parse.js" -IDS_553 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\node_modules\\cookie\\test\\serialize.js" -IDS_554 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\test\\cookieParser.js" -IDS_555 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\.travis.yml" -IDS_556 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\index.js" -IDS_557 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\LICENSE" -IDS_558 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\package.json" -IDS_559 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\node_modules\\scmp\\.travis.yml" -IDS_560 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\node_modules\\scmp\\index.js" -IDS_561 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\node_modules\\scmp\\package.json" -IDS_562 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\node_modules\\scmp\\benchmark\\benchmark.js" -IDS_563 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\node_modules\\scmp\\test\\test.js" -IDS_564 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\node_modules\\uid2\\index.js" -IDS_565 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\node_modules\\uid2\\LICENSE" -IDS_566 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\node_modules\\uid2\\package.json" -IDS_567 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\errorhandler\\.travis.yml" -IDS_568 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\errorhandler\\index.js" -IDS_569 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\errorhandler\\package.json" -IDS_570 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\errorhandler\\public\\error.html" -IDS_571 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\errorhandler\\public\\style.css" -IDS_572 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\index.js" -IDS_573 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\package.json" -IDS_574 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\cookie\\.travis.yml" -IDS_575 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\cookie\\index.js" -IDS_576 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\cookie\\LICENSE" -IDS_577 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\cookie\\package.json" -IDS_578 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\cookie\\test\\mocha.opts" -IDS_579 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\cookie\\test\\parse.js" -IDS_580 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\cookie\\test\\serialize.js" -IDS_581 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\debug\\debug.js" -IDS_582 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\debug\\index.js" -IDS_583 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\debug\\package.json" -IDS_584 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\debug\\lib\\debug.js" -IDS_585 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\uid2\\index.js" -IDS_586 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\uid2\\LICENSE" -IDS_587 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\uid2\\package.json" -IDS_588 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\utils-merge\\.travis.yml" -IDS_589 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\utils-merge\\index.js" -IDS_590 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\utils-merge\\LICENSE" -IDS_591 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\utils-merge\\package.json" -IDS_592 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\session\\cookie.js" -IDS_593 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\session\\memory.js" -IDS_594 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\session\\session.js" -IDS_595 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\session\\store.js" -IDS_596 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\test\\session.js" -IDS_597 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\method-override\\.travis.yml" -IDS_598 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\method-override\\index.js" -IDS_599 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\method-override\\package.json" -IDS_600 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\morgan\\index.js" -IDS_601 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\morgan\\package.json" -IDS_602 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\morgan\\node_modules\\bytes\\component.json" -IDS_603 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\morgan\\node_modules\\bytes\\index.js" -IDS_604 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\morgan\\node_modules\\bytes\\package.json" -IDS_605 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\.jshintrc" -IDS_606 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\.travis.yml" -IDS_607 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\CHANGELOG.md" -IDS_608 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\index.js" -IDS_609 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\LICENSE" -IDS_610 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\package.json" -IDS_611 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\examples\\azureblobstorage.js" -IDS_612 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\examples\\s3.js" -IDS_613 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\examples\\upload.js" -IDS_614 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\duplex.js" -IDS_615 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\float.patch" -IDS_616 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\LICENSE" -IDS_617 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\package.json" -IDS_618 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\passthrough.js" -IDS_619 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\readable.js" -IDS_620 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\transform.js" -IDS_621 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\writable.js" -IDS_622 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\lib\\_stream_duplex.js" -IDS_623 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\lib\\_stream_passthrough.js" -IDS_624 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\lib\\_stream_readable.js" -IDS_625 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\lib\\_stream_transform.js" -IDS_626 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\lib\\_stream_writable.js" -IDS_627 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\core-util-is\\float.patch" -IDS_628 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\core-util-is\\package.json" -IDS_629 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\core-util-is\\util.js" -IDS_630 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\core-util-is\\lib\\util.js" -IDS_631 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\inherits\\inherits.js" -IDS_632 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\inherits\\inherits_browser.js" -IDS_633 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\inherits\\LICENSE" -IDS_634 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\inherits\\package.json" -IDS_635 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\inherits\\test.js" -IDS_636 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\isarray\\component.json" -IDS_637 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\isarray\\index.js" -IDS_638 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\isarray\\package.json" -IDS_639 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\isarray\\build\\build.js" -IDS_640 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\string_decoder\\index.js" -IDS_641 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\string_decoder\\LICENSE" -IDS_642 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\string_decoder\\package.json" -IDS_643 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\stream-counter\\index.js" -IDS_644 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\stream-counter\\package.json" -IDS_645 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\stream-counter\\test\\test.js" -IDS_646 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\stream-counter\\test\\test.txt" -IDS_647 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\bench-multipart-parser.js" -IDS_648 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\record.js" -IDS_649 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\test.js" -IDS_650 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\multipart.js" -IDS_651 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\multi_video.upload" -IDS_652 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\file\\beta-sticker-1.png" -IDS_653 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\file\\binaryfile.tar.gz" -IDS_654 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\file\\blank.gif" -IDS_655 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\file\\funkyfilename.txt" -IDS_656 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\file\\menu_separator.png" -IDS_657 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\file\\pf1y5.png" -IDS_658 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\file\\plain.txt" -IDS_659 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\beta-sticker-1.png.http" -IDS_660 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\binaryfile.tar.gz.http" -IDS_661 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\blank.gif.http" -IDS_662 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\menu_seperator.png.http" -IDS_663 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\pf1y5.png.http" -IDS_664 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\plain.txt.http" -IDS_665 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\no-filename\\filename-name.http" -IDS_666 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\no-filename\\generic.http" -IDS_667 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\preamble\\crlf.http" -IDS_668 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\preamble\\preamble.http" -IDS_669 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\info.md" -IDS_670 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\osx-chrome-13.http" -IDS_671 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\osx-firefox-3.6.http" -IDS_672 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\osx-safari-5.http" -IDS_673 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\xp-chrome-12.http" -IDS_674 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\xp-ie-7.http" -IDS_675 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\xp-ie-8.http" -IDS_676 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\xp-safari-5.http" -IDS_677 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\workarounds\\missing-hyphens1.http" -IDS_678 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\workarounds\\missing-hyphens2.http" -IDS_679 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\js\\encoding.js" -IDS_680 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\js\\no-filename.js" -IDS_681 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\js\\preamble.js" -IDS_682 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\js\\special-chars-in-filename.js" -IDS_683 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\js\\workarounds.js" -IDS_684 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\standalone\\test-connection-aborted.js" -IDS_685 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\standalone\\test-content-transfer-encoding.js" -IDS_686 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\standalone\\test-invalid.js" -IDS_687 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\standalone\\test-issue-15.js" -IDS_688 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\standalone\\test-issue-19.js" -IDS_689 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\standalone\\test-issue-21.js" -IDS_690 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\standalone\\test-issue-4.js" -IDS_691 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\standalone\\test-issue-46.js" -IDS_692 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\standalone\\test-issue-5.js" -IDS_693 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\pause\\index.js" -IDS_694 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\pause\\package.json" -IDS_695 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\qs\\.gitmodules" -IDS_696 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\qs\\index.js" -IDS_697 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\qs\\package.json" -IDS_698 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\raw-body\\.travis.yml" -IDS_699 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\raw-body\\index.js" -IDS_700 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\raw-body\\package.json" -IDS_701 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\response-time\\index.js" -IDS_702 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\response-time\\package.json" -IDS_703 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\.travis.yml" -IDS_704 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\index.js" -IDS_705 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\LICENSE" -IDS_706 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\package.json" -IDS_707 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\batch\\component.json" -IDS_708 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\batch\\index.js" -IDS_709 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\batch\\package.json" -IDS_710 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\.travis.yml" -IDS_711 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\LICENSE" -IDS_712 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\package.json" -IDS_713 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\examples\\accept.js" -IDS_714 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\examples\\charset.js" -IDS_715 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\examples\\encoding.js" -IDS_716 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\examples\\language.js" -IDS_717 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\charset.js" -IDS_718 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\encoding.js" -IDS_719 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\language.js" -IDS_720 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\mediaType.js" -IDS_721 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\negotiator.js" -IDS_722 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\test\\charset.js" -IDS_723 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\test\\encoding.js" -IDS_724 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\test\\language.js" -IDS_725 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\test\\mediaType.js" -IDS_726 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\directory.html" -IDS_727 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\style.css" -IDS_728 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\application_xp.png" -IDS_729 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\application_xp_terminal.png" -IDS_730 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\box.png" -IDS_731 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\cd.png" -IDS_732 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\controller.png" -IDS_733 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\drive.png" -IDS_734 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\film.png" -IDS_735 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\folder.png" -IDS_736 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\font.png" -IDS_737 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\image.png" -IDS_738 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\map.png" -IDS_739 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page.png" -IDS_740 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_add.png" -IDS_741 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_attach.png" -IDS_742 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_code.png" -IDS_743 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_copy.png" -IDS_744 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_delete.png" -IDS_745 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_edit.png" -IDS_746 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_error.png" -IDS_747 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_excel.png" -IDS_748 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_find.png" -IDS_749 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_gear.png" -IDS_750 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_go.png" -IDS_751 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_green.png" -IDS_752 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_key.png" -IDS_753 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_lightning.png" -IDS_754 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_link.png" -IDS_755 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_paintbrush.png" -IDS_756 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_paste.png" -IDS_757 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_red.png" -IDS_758 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_refresh.png" -IDS_759 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_save.png" -IDS_760 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white.png" -IDS_761 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_acrobat.png" -IDS_762 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_actionscript.png" -IDS_763 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_add.png" -IDS_764 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_c.png" -IDS_765 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_camera.png" -IDS_766 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_cd.png" -IDS_767 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_code.png" -IDS_768 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_code_red.png" -IDS_769 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_coldfusion.png" -IDS_770 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_compressed.png" -IDS_771 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_copy.png" -IDS_772 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_cplusplus.png" -IDS_773 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_csharp.png" -IDS_774 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_cup.png" -IDS_775 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_database.png" -IDS_776 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_delete.png" -IDS_777 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_dvd.png" -IDS_778 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_edit.png" -IDS_779 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_error.png" -IDS_780 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_excel.png" -IDS_781 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_find.png" -IDS_782 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_flash.png" -IDS_783 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_freehand.png" -IDS_784 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_gear.png" -IDS_785 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_get.png" -IDS_786 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_go.png" -IDS_787 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_h.png" -IDS_788 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_horizontal.png" -IDS_789 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_key.png" -IDS_790 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_lightning.png" -IDS_791 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_link.png" -IDS_792 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_magnify.png" -IDS_793 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_medal.png" -IDS_794 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_office.png" -IDS_795 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_paint.png" -IDS_796 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_paintbrush.png" -IDS_797 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_paste.png" -IDS_798 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_php.png" -IDS_799 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_picture.png" -IDS_800 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_powerpoint.png" -IDS_801 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_put.png" -IDS_802 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_ruby.png" -IDS_803 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_stack.png" -IDS_804 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_star.png" -IDS_805 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_swoosh.png" -IDS_806 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_text.png" -IDS_807 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_text_width.png" -IDS_808 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_tux.png" -IDS_809 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_vector.png" -IDS_810 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_visualstudio.png" -IDS_811 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_width.png" -IDS_812 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_word.png" -IDS_813 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_world.png" -IDS_814 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_wrench.png" -IDS_815 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_zip.png" -IDS_816 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_word.png" -IDS_817 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_world.png" -IDS_818 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-static\\.travis.yml" -IDS_819 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-static\\index.js" -IDS_820 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-static\\LICENSE" -IDS_821 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-static\\package.json" -IDS_822 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-static\\node_modules\\parseurl\\index.js" -IDS_823 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-static\\node_modules\\parseurl\\package.json" -IDS_824 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\setimmediate\\LICENSE.txt" -IDS_825 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\setimmediate\\package.json" -IDS_826 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\setimmediate\\setImmediate.js" -IDS_827 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\setimmediate\\qUnitTest\\runner.htm" -IDS_828 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\setimmediate\\qUnitTest\\selfClose.htm" -IDS_829 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\setimmediate\\qUnitTest\\tests.js" -IDS_830 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\setimmediate\\qUnitTest\\worker.js" -IDS_831 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\setimmediate\\qUnitTest\\lib\\qunit.css" -IDS_832 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\setimmediate\\qUnitTest\\lib\\qunit.js" -IDS_833 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\static-favicon\\.travis.yml" -IDS_834 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\static-favicon\\favicon.ico" -IDS_835 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\static-favicon\\index.js" -IDS_836 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\static-favicon\\LICENSE" -IDS_837 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\static-favicon\\package.json" -IDS_838 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\vhost\\.travis.yml" -IDS_839 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\vhost\\index.js" -IDS_840 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\vhost\\package.json" -IDS_841 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\cookie\\index.js" -IDS_842 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\cookie\\LICENSE" -IDS_843 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\cookie\\package.json" -IDS_844 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\cookie-signature\\index.js" -IDS_845 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\cookie-signature\\package.json" -IDS_846 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\fresh\\index.js" -IDS_847 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\fresh\\package.json" -IDS_848 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\merge-descriptors\\component.json" -IDS_849 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\merge-descriptors\\index.js" -IDS_850 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\merge-descriptors\\package.json" -IDS_851 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\methods\\index.js" -IDS_852 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\methods\\package.json" -IDS_853 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\.travis.yml" -IDS_854 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\index.js" -IDS_855 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\LICENSE" -IDS_856 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\package.json" -IDS_857 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\readme.markdown" -IDS_858 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\bin\\cmd.js" -IDS_859 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\bin\\usage.txt" -IDS_860 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\examples\\pow.js" -IDS_861 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\chmod.js" -IDS_862 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\clobber.js" -IDS_863 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\mkdirp.js" -IDS_864 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\perm.js" -IDS_865 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\perm_sync.js" -IDS_866 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\race.js" -IDS_867 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\rel.js" -IDS_868 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\return.js" -IDS_869 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\return_sync.js" -IDS_870 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\root.js" -IDS_871 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\sync.js" -IDS_872 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\umask.js" -IDS_873 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\umask_sync.js" -IDS_874 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\range-parser\\index.js" -IDS_875 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\range-parser\\package.json" -IDS_876 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\index.js" -IDS_877 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\package.json" -IDS_878 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\lib\\send.js" -IDS_879 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\lib\\utils.js" -IDS_880 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\node_modules\\debug\\debug.js" -IDS_881 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\node_modules\\debug\\package.json" -IDS_882 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\node_modules\\debug\\lib\\debug.js" -IDS_883 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\node_modules\\mime\\LICENSE" -IDS_884 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\node_modules\\mime\\mime.js" -IDS_885 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\node_modules\\mime\\package.json" -IDS_886 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\node_modules\\mime\\test.js" -IDS_887 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\node_modules\\mime\\types\\mime.types" -IDS_888 "node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\node_modules\\mime\\types\\node.types" -IDS_889 "node_modules\\node-inspector\\node_modules\\glob\\.travis.yml" -IDS_890 "node_modules\\node-inspector\\node_modules\\glob\\glob.js" -IDS_891 "node_modules\\node-inspector\\node_modules\\glob\\LICENSE" -IDS_892 "node_modules\\node-inspector\\node_modules\\glob\\package.json" -IDS_893 "node_modules\\node-inspector\\node_modules\\glob\\examples\\g.js" -IDS_894 "node_modules\\node-inspector\\node_modules\\glob\\examples\\usr-local.js" -IDS_895 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\inherits\\inherits.js" -IDS_896 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\inherits\\inherits_browser.js" -IDS_897 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\inherits\\LICENSE" -IDS_898 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\inherits\\package.json" -IDS_899 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\inherits\\test.js" -IDS_900 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\LICENSE" -IDS_901 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\minimatch.js" -IDS_902 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\package.json" -IDS_903 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\lru-cache\\CONTRIBUTORS" -IDS_904 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\lru-cache\\LICENSE" -IDS_905 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\lru-cache\\package.json" -IDS_906 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\lru-cache\\lib\\lru-cache.js" -IDS_907 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\lru-cache\\test\\basic.js" -IDS_908 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\lru-cache\\test\\foreach.js" -IDS_909 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\lru-cache\\test\\memory-leak.js" -IDS_910 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\sigmund\\bench.js" -IDS_911 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\sigmund\\LICENSE" -IDS_912 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\sigmund\\package.json" -IDS_913 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\sigmund\\sigmund.js" -IDS_914 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\sigmund\\test\\basic.js" -IDS_915 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\test\\basic.js" -IDS_916 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\test\\brace-expand.js" -IDS_917 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\test\\caching.js" -IDS_918 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\test\\defaults.js" -IDS_919 "node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\test\\extglob-ending-with-state-char.js" -IDS_920 "node_modules\\node-inspector\\node_modules\\glob\\test\\00-setup.js" -IDS_921 "node_modules\\node-inspector\\node_modules\\glob\\test\\bash-comparison.js" -IDS_922 "node_modules\\node-inspector\\node_modules\\glob\\test\\bash-results.json" -IDS_923 "node_modules\\node-inspector\\node_modules\\glob\\test\\cwd-test.js" -IDS_924 "node_modules\\node-inspector\\node_modules\\glob\\test\\globstar-match.js" -IDS_925 "node_modules\\node-inspector\\node_modules\\glob\\test\\mark.js" -IDS_926 "node_modules\\node-inspector\\node_modules\\glob\\test\\new-glob-optional-options.js" -IDS_927 "node_modules\\node-inspector\\node_modules\\glob\\test\\nocase-nomagic.js" -IDS_928 "node_modules\\node-inspector\\node_modules\\glob\\test\\pause-resume.js" -IDS_929 "node_modules\\node-inspector\\node_modules\\glob\\test\\readme-issue.js" -IDS_930 "node_modules\\node-inspector\\node_modules\\glob\\test\\root-nomount.js" -IDS_931 "node_modules\\node-inspector\\node_modules\\glob\\test\\root.js" -IDS_932 "node_modules\\node-inspector\\node_modules\\glob\\test\\stat.js" -IDS_933 "node_modules\\node-inspector\\node_modules\\glob\\test\\zz-cleanup.js" -IDS_934 "node_modules\\node-inspector\\node_modules\\opener\\LICENSE.txt" -IDS_935 "node_modules\\node-inspector\\node_modules\\opener\\opener.js" -IDS_936 "node_modules\\node-inspector\\node_modules\\opener\\package.json" -IDS_937 "node_modules\\node-inspector\\node_modules\\rc\\browser.js" -IDS_938 "node_modules\\node-inspector\\node_modules\\rc\\index.js" -IDS_939 "node_modules\\node-inspector\\node_modules\\rc\\LICENSE.APACHE2" -IDS_940 "node_modules\\node-inspector\\node_modules\\rc\\LICENSE.BSD" -IDS_941 "node_modules\\node-inspector\\node_modules\\rc\\LICENSE.MIT" -IDS_942 "node_modules\\node-inspector\\node_modules\\rc\\package.json" -IDS_943 "node_modules\\node-inspector\\node_modules\\rc\\lib\\utils.js" -IDS_944 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\deep-extend\\index.js" -IDS_945 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\deep-extend\\LICENSE" -IDS_946 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\deep-extend\\package.json" -IDS_947 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\ini\\ini.js" -IDS_948 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\ini\\LICENSE" -IDS_949 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\ini\\package.json" -IDS_950 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\ini\\test\\bar.js" -IDS_951 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\ini\\test\\foo.js" -IDS_952 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\ini\\test\\fixtures\\foo.ini" -IDS_953 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\.travis.yml" -IDS_954 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\index.js" -IDS_955 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\LICENSE" -IDS_956 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\package.json" -IDS_957 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\readme.markdown" -IDS_958 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\example\\parse.js" -IDS_959 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\bool.js" -IDS_960 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\dash.js" -IDS_961 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\default_bool.js" -IDS_962 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\dotted.js" -IDS_963 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\long.js" -IDS_964 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\num.js" -IDS_965 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\parse.js" -IDS_966 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\parse_modified.js" -IDS_967 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\short.js" -IDS_968 "node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\whitespace.js" -IDS_969 "node_modules\\node-inspector\\node_modules\\rc\\test\\ini.js" -IDS_970 "node_modules\\node-inspector\\node_modules\\rc\\test\\test.js" -IDS_971 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.jshintrc" -IDS_972 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.travis.yml" -IDS_973 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\index.js" -IDS_974 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\LICENSE" -IDS_975 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\package.json" -IDS_976 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\.name" -IDS_977 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\data-uri.iml" -IDS_978 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\encodings.xml" -IDS_979 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\jsLibraryMappings.xml" -IDS_980 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\misc.xml" -IDS_981 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\modules.xml" -IDS_982 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\vcs.xml" -IDS_983 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\workspace.xml" -IDS_984 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\inspectionProfiles\\profiles_settings.xml" -IDS_985 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\inspectionProfiles\\Project_Default.xml" -IDS_986 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\jsLinters\\jshint.xml" -IDS_987 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\scopes\\scope_settings.xml" -IDS_988 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\node_modules\\truncate\\package.json" -IDS_989 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\node_modules\\truncate\\test.js" -IDS_990 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\node_modules\\truncate\\truncate.js" -IDS_991 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\test\\decode.js" -IDS_992 "node_modules\\node-inspector\\node_modules\\which\\LICENSE" -IDS_993 "node_modules\\node-inspector\\node_modules\\which\\package.json" -IDS_994 "node_modules\\node-inspector\\node_modules\\which\\which.js" -IDS_995 "node_modules\\node-inspector\\node_modules\\which\\bin\\which" -IDS_996 "node_modules\\node-inspector\\node_modules\\ws\\.travis.yml" -IDS_997 "node_modules\\node-inspector\\node_modules\\ws\\binding.gyp" -IDS_998 "node_modules\\node-inspector\\node_modules\\ws\\builderror.log" -IDS_999 "node_modules\\node-inspector\\node_modules\\ws\\index.js" -IDS_1000 "node_modules\\node-inspector\\node_modules\\ws\\package.json" -IDS_1001 "node_modules\\node-inspector\\node_modules\\ws\\bench\\parser.benchmark.js" -IDS_1002 "node_modules\\node-inspector\\node_modules\\ws\\bench\\sender.benchmark.js" -IDS_1003 "node_modules\\node-inspector\\node_modules\\ws\\bench\\speed.js" -IDS_1004 "node_modules\\node-inspector\\node_modules\\ws\\bench\\util.js" -IDS_1005 "node_modules\\node-inspector\\node_modules\\ws\\bin\\wscat" -IDS_1006 "node_modules\\node-inspector\\node_modules\\ws\\build\\binding.sln" -IDS_1007 "node_modules\\node-inspector\\node_modules\\ws\\build\\bufferutil.vcxproj" -IDS_1008 "node_modules\\node-inspector\\node_modules\\ws\\build\\bufferutil.vcxproj.filters" -IDS_1009 "node_modules\\node-inspector\\node_modules\\ws\\build\\config.gypi" -IDS_1010 "node_modules\\node-inspector\\node_modules\\ws\\build\\validation.vcxproj" -IDS_1011 "node_modules\\node-inspector\\node_modules\\ws\\build\\validation.vcxproj.filters" -IDS_1012 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\bufferutil.exp" -IDS_1013 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\bufferutil.lib" -IDS_1014 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\bufferutil.node" -IDS_1015 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\bufferutil.pdb" -IDS_1016 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\validation.exp" -IDS_1017 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\validation.lib" -IDS_1018 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\validation.node" -IDS_1019 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\validation.pdb" -IDS_1020 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\bufferutil.lastbuildstate" -IDS_1021 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\bufferutil.obj" -IDS_1022 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\bufferutil.write.1.tlog" -IDS_1023 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\cl.command.1.tlog" -IDS_1024 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\CL.read.1.tlog" -IDS_1025 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\CL.write.1.tlog" -IDS_1026 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\link-cvtres.read.1.tlog" -IDS_1027 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\link-cvtres.write.1.tlog" -IDS_1028 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\link-rc.read.1.tlog" -IDS_1029 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\link-rc.write.1.tlog" -IDS_1030 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\link.command.1.tlog" -IDS_1031 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\link.read.1.tlog" -IDS_1032 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\link.write.1.tlog" -IDS_1033 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\vc110.pdb" -IDS_1034 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\cl.command.1.tlog" -IDS_1035 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\CL.read.1.tlog" -IDS_1036 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\CL.write.1.tlog" -IDS_1037 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\link-cvtres.read.1.tlog" -IDS_1038 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\link-cvtres.write.1.tlog" -IDS_1039 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\link-rc.read.1.tlog" -IDS_1040 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\link-rc.write.1.tlog" -IDS_1041 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\link.command.1.tlog" -IDS_1042 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\link.read.1.tlog" -IDS_1043 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\link.write.1.tlog" -IDS_1044 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\validation.lastbuildstate" -IDS_1045 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\validation.obj" -IDS_1046 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\validation.write.1.tlog" -IDS_1047 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\vc110.pdb" -IDS_1048 "node_modules\\node-inspector\\node_modules\\ws\\doc\\ws.md" -IDS_1049 "node_modules\\node-inspector\\node_modules\\ws\\examples\\ssl.js" -IDS_1050 "node_modules\\node-inspector\\node_modules\\ws\\examples\\fileapi\\package.json" -IDS_1051 "node_modules\\node-inspector\\node_modules\\ws\\examples\\fileapi\\server.js" -IDS_1052 "node_modules\\node-inspector\\node_modules\\ws\\examples\\fileapi\\public\\app.js" -IDS_1053 "node_modules\\node-inspector\\node_modules\\ws\\examples\\fileapi\\public\\index.html" -IDS_1054 "node_modules\\node-inspector\\node_modules\\ws\\examples\\fileapi\\public\\uploader.js" -IDS_1055 "node_modules\\node-inspector\\node_modules\\ws\\examples\\serverstats\\package.json" -IDS_1056 "node_modules\\node-inspector\\node_modules\\ws\\examples\\serverstats\\server.js" -IDS_1057 "node_modules\\node-inspector\\node_modules\\ws\\examples\\serverstats\\public\\index.html" -IDS_1058 "node_modules\\node-inspector\\node_modules\\ws\\examples\\serverstats-express_3\\package.json" -IDS_1059 "node_modules\\node-inspector\\node_modules\\ws\\examples\\serverstats-express_3\\server.js" -IDS_1060 "node_modules\\node-inspector\\node_modules\\ws\\examples\\serverstats-express_3\\public\\index.html" -IDS_1061 "node_modules\\node-inspector\\node_modules\\ws\\lib\\browser.js" -IDS_1062 "node_modules\\node-inspector\\node_modules\\ws\\lib\\BufferPool.js" -IDS_1063 "node_modules\\node-inspector\\node_modules\\ws\\lib\\BufferUtil.fallback.js" -IDS_1064 "node_modules\\node-inspector\\node_modules\\ws\\lib\\BufferUtil.js" -IDS_1065 "node_modules\\node-inspector\\node_modules\\ws\\lib\\ErrorCodes.js" -IDS_1066 "node_modules\\node-inspector\\node_modules\\ws\\lib\\Receiver.hixie.js" -IDS_1067 "node_modules\\node-inspector\\node_modules\\ws\\lib\\Receiver.js" -IDS_1068 "node_modules\\node-inspector\\node_modules\\ws\\lib\\Sender.hixie.js" -IDS_1069 "node_modules\\node-inspector\\node_modules\\ws\\lib\\Sender.js" -IDS_1070 "node_modules\\node-inspector\\node_modules\\ws\\lib\\Validation.fallback.js" -IDS_1071 "node_modules\\node-inspector\\node_modules\\ws\\lib\\Validation.js" -IDS_1072 "node_modules\\node-inspector\\node_modules\\ws\\lib\\WebSocket.js" -IDS_1073 "node_modules\\node-inspector\\node_modules\\ws\\lib\\WebSocketServer.js" -IDS_1074 "node_modules\\node-inspector\\node_modules\\ws\\node_modules\\commander\\.travis.yml" -IDS_1075 "node_modules\\node-inspector\\node_modules\\ws\\node_modules\\commander\\index.js" -IDS_1076 "node_modules\\node-inspector\\node_modules\\ws\\node_modules\\commander\\package.json" -IDS_1077 "node_modules\\node-inspector\\node_modules\\ws\\node_modules\\commander\\lib\\commander.js" -IDS_1078 "node_modules\\node-inspector\\node_modules\\ws\\node_modules\\nan\\.index.js" -IDS_1079 "node_modules\\node-inspector\\node_modules\\ws\\node_modules\\nan\\LICENSE" -IDS_1080 "node_modules\\node-inspector\\node_modules\\ws\\node_modules\\nan\\nan.h" -IDS_1081 "node_modules\\node-inspector\\node_modules\\ws\\node_modules\\nan\\package.json" -IDS_1082 "node_modules\\node-inspector\\node_modules\\ws\\node_modules\\options\\package.json" -IDS_1083 "node_modules\\node-inspector\\node_modules\\ws\\node_modules\\options\\lib\\options.js" -IDS_1084 "node_modules\\node-inspector\\node_modules\\ws\\node_modules\\options\\test\\options.test.js" -IDS_1085 "node_modules\\node-inspector\\node_modules\\ws\\node_modules\\options\\test\\fixtures\\test.conf" -IDS_1086 "node_modules\\node-inspector\\node_modules\\ws\\node_modules\\tinycolor\\example.js" -IDS_1087 "node_modules\\node-inspector\\node_modules\\ws\\node_modules\\tinycolor\\package.json" -IDS_1088 "node_modules\\node-inspector\\node_modules\\ws\\node_modules\\tinycolor\\tinycolor.js" -IDS_1089 "node_modules\\node-inspector\\node_modules\\ws\\src\\bufferutil.cc" -IDS_1090 "node_modules\\node-inspector\\node_modules\\ws\\src\\validation.cc" -IDS_1091 "node_modules\\node-inspector\\node_modules\\ws\\test\\autobahn-server.js" -IDS_1092 "node_modules\\node-inspector\\node_modules\\ws\\test\\autobahn.js" -IDS_1093 "node_modules\\node-inspector\\node_modules\\ws\\test\\BufferPool.test.js" -IDS_1094 "node_modules\\node-inspector\\node_modules\\ws\\test\\hybi-common.js" -IDS_1095 "node_modules\\node-inspector\\node_modules\\ws\\test\\Receiver.hixie.test.js" -IDS_1096 "node_modules\\node-inspector\\node_modules\\ws\\test\\Receiver.test.js" -IDS_1097 "node_modules\\node-inspector\\node_modules\\ws\\test\\Sender.hixie.test.js" -IDS_1098 "node_modules\\node-inspector\\node_modules\\ws\\test\\Sender.test.js" -IDS_1099 "node_modules\\node-inspector\\node_modules\\ws\\test\\testserver.js" -IDS_1100 "node_modules\\node-inspector\\node_modules\\ws\\test\\Validation.test.js" -IDS_1101 "node_modules\\node-inspector\\node_modules\\ws\\test\\WebSocket.integration.js" -IDS_1102 "node_modules\\node-inspector\\node_modules\\ws\\test\\WebSocket.test.js" -IDS_1103 "node_modules\\node-inspector\\node_modules\\ws\\test\\WebSocketServer.test.js" -IDS_1104 "node_modules\\node-inspector\\node_modules\\ws\\test\\fixtures\\agent1-cert.pem" -IDS_1105 "node_modules\\node-inspector\\node_modules\\ws\\test\\fixtures\\agent1-key.pem" -IDS_1106 "node_modules\\node-inspector\\node_modules\\ws\\test\\fixtures\\ca1-cert.pem" -IDS_1107 "node_modules\\node-inspector\\node_modules\\ws\\test\\fixtures\\ca1-key.pem" -IDS_1108 "node_modules\\node-inspector\\node_modules\\ws\\test\\fixtures\\certificate.pem" -IDS_1109 "node_modules\\node-inspector\\node_modules\\ws\\test\\fixtures\\key.pem" -IDS_1110 "node_modules\\node-inspector\\node_modules\\ws\\test\\fixtures\\request.pem" -IDS_1111 "node_modules\\node-inspector\\node_modules\\ws\\test\\fixtures\\textfile" -IDS_1112 "node_modules\\node-inspector\\node_modules\\yargs\\.travis.yml" -IDS_1113 "node_modules\\node-inspector\\node_modules\\yargs\\index.js" -IDS_1114 "node_modules\\node-inspector\\node_modules\\yargs\\LICENSE" -IDS_1115 "node_modules\\node-inspector\\node_modules\\yargs\\package.json" -IDS_1116 "node_modules\\node-inspector\\node_modules\\yargs\\example\\bool.js" -IDS_1117 "node_modules\\node-inspector\\node_modules\\yargs\\example\\boolean_double.js" -IDS_1118 "node_modules\\node-inspector\\node_modules\\yargs\\example\\boolean_single.js" -IDS_1119 "node_modules\\node-inspector\\node_modules\\yargs\\example\\count.js" -IDS_1120 "node_modules\\node-inspector\\node_modules\\yargs\\example\\default_hash.js" -IDS_1121 "node_modules\\node-inspector\\node_modules\\yargs\\example\\default_singles.js" -IDS_1122 "node_modules\\node-inspector\\node_modules\\yargs\\example\\demand_count.js" -IDS_1123 "node_modules\\node-inspector\\node_modules\\yargs\\example\\divide.js" -IDS_1124 "node_modules\\node-inspector\\node_modules\\yargs\\example\\implies.js" -IDS_1125 "node_modules\\node-inspector\\node_modules\\yargs\\example\\implies_hash.js" -IDS_1126 "node_modules\\node-inspector\\node_modules\\yargs\\example\\line_count.js" -IDS_1127 "node_modules\\node-inspector\\node_modules\\yargs\\example\\line_count_options.js" -IDS_1128 "node_modules\\node-inspector\\node_modules\\yargs\\example\\line_count_wrap.js" -IDS_1129 "node_modules\\node-inspector\\node_modules\\yargs\\example\\nonopt.js" -IDS_1130 "node_modules\\node-inspector\\node_modules\\yargs\\example\\short.js" -IDS_1131 "node_modules\\node-inspector\\node_modules\\yargs\\example\\string.js" -IDS_1132 "node_modules\\node-inspector\\node_modules\\yargs\\example\\usage-options.js" -IDS_1133 "node_modules\\node-inspector\\node_modules\\yargs\\example\\xup.js" -IDS_1134 "node_modules\\node-inspector\\node_modules\\yargs\\lib\\minimist.js" -IDS_1135 "node_modules\\node-inspector\\node_modules\\yargs\\lib\\wordwrap.js" -IDS_1136 "node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\.travis.yml" -IDS_1137 "node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\index.js" -IDS_1138 "node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\LICENSE" -IDS_1139 "node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\package.json" -IDS_1140 "node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\readme.markdown" -IDS_1141 "node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\example\\parse.js" -IDS_1142 "node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\bool.js" -IDS_1143 "node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\dash.js" -IDS_1144 "node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\default_bool.js" -IDS_1145 "node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\dotted.js" -IDS_1146 "node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\long.js" -IDS_1147 "node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\num.js" -IDS_1148 "node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\parse.js" -IDS_1149 "node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\parse_modified.js" -IDS_1150 "node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\short.js" -IDS_1151 "node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\whitespace.js" -IDS_1152 "node_modules\\node-inspector\\node_modules\\yargs\\test\\config.json" -IDS_1153 "node_modules\\node-inspector\\node_modules\\yargs\\test\\count.js" -IDS_1154 "node_modules\\node-inspector\\node_modules\\yargs\\test\\dash.js" -IDS_1155 "node_modules\\node-inspector\\node_modules\\yargs\\test\\mocha.opts" -IDS_1156 "node_modules\\node-inspector\\node_modules\\yargs\\test\\parse.js" -IDS_1157 "node_modules\\node-inspector\\node_modules\\yargs\\test\\parse_modified.js" -IDS_1158 "node_modules\\node-inspector\\node_modules\\yargs\\test\\short.js" -IDS_1159 "node_modules\\node-inspector\\node_modules\\yargs\\test\\usage.js" -IDS_1160 "node_modules\\node-inspector\\node_modules\\yargs\\test\\whitespace.js" -IDS_1161 "node_modules\\node-inspector\\node_modules\\yargs\\test\\_.js" -IDS_1162 "node_modules\\node-inspector\\node_modules\\yargs\\test\\_\\bin.js" +IDS_1 "node_modules\\.bin\\node-debug" +IDS_2 "node_modules\\.bin\\node-debug.cmd" +IDS_3 "node_modules\\.bin\\node-inspector" +IDS_4 "node_modules\\.bin\\node-inspector.cmd" +IDS_5 "node_modules\\node-inspector\\.jshintignore" +IDS_6 "node_modules\\node-inspector\\.jshintrc" +IDS_7 "node_modules\\node-inspector\\AUTHORS" +IDS_8 "node_modules\\node-inspector\\config.json" +IDS_9 "node_modules\\node-inspector\\index.js" +IDS_10 "node_modules\\node-inspector\\LICENSE" +IDS_11 "node_modules\\node-inspector\\package.json" +IDS_12 "node_modules\\node-inspector\\bin\\inspector.js" +IDS_13 "node_modules\\node-inspector\\bin\\node-debug.js" +IDS_14 "node_modules\\node-inspector\\bin\\run-repl.js" +IDS_15 "node_modules\\node-inspector\\build\\config.gypi" +IDS_16 "node_modules\\node-inspector\\docs\\embedding.md" +IDS_17 "node_modules\\node-inspector\\front-end\\AdvancedSearchController.js" +IDS_18 "node_modules\\node-inspector\\front-end\\ApplicationCacheItemsView.js" +IDS_19 "node_modules\\node-inspector\\front-end\\ApplicationCacheModel.js" +IDS_20 "node_modules\\node-inspector\\front-end\\AuditCategories.js" +IDS_21 "node_modules\\node-inspector\\front-end\\AuditController.js" +IDS_22 "node_modules\\node-inspector\\front-end\\AuditFormatters.js" +IDS_23 "node_modules\\node-inspector\\front-end\\AuditLauncherView.js" +IDS_24 "node_modules\\node-inspector\\front-end\\AuditResultView.js" +IDS_25 "node_modules\\node-inspector\\front-end\\AuditRules.js" +IDS_26 "node_modules\\node-inspector\\front-end\\auditsPanel.css" +IDS_27 "node_modules\\node-inspector\\front-end\\AuditsPanel.js" +IDS_28 "node_modules\\node-inspector\\front-end\\BottomUpProfileDataGridTree.js" +IDS_29 "node_modules\\node-inspector\\front-end\\breadcrumbList.css" +IDS_30 "node_modules\\node-inspector\\front-end\\BreakpointManager.js" +IDS_31 "node_modules\\node-inspector\\front-end\\breakpointsList.css" +IDS_32 "node_modules\\node-inspector\\front-end\\BreakpointsSidebarPane.js" +IDS_33 "node_modules\\node-inspector\\front-end\\buildSystemOnly.js" +IDS_34 "node_modules\\node-inspector\\front-end\\CallStackSidebarPane.js" +IDS_35 "node_modules\\node-inspector\\front-end\\canvasProfiler.css" +IDS_36 "node_modules\\node-inspector\\front-end\\CanvasProfileView.js" +IDS_37 "node_modules\\node-inspector\\front-end\\CanvasReplayStateView.js" +IDS_38 "node_modules\\node-inspector\\front-end\\Checkbox.js" +IDS_39 "node_modules\\node-inspector\\front-end\\CodeMirrorTextEditor.js" +IDS_40 "node_modules\\node-inspector\\front-end\\CodeMirrorUtils.js" +IDS_41 "node_modules\\node-inspector\\front-end\\Color.js" +IDS_42 "node_modules\\node-inspector\\front-end\\CompilerScriptMapping.js" +IDS_43 "node_modules\\node-inspector\\front-end\\CompletionDictionary.js" +IDS_44 "node_modules\\node-inspector\\front-end\\ConsoleMessage.js" +IDS_45 "node_modules\\node-inspector\\front-end\\ConsoleModel.js" +IDS_46 "node_modules\\node-inspector\\front-end\\ConsolePanel.js" +IDS_47 "node_modules\\node-inspector\\front-end\\ConsoleView.js" +IDS_48 "node_modules\\node-inspector\\front-end\\ContentProvider.js" +IDS_49 "node_modules\\node-inspector\\front-end\\ContentProviderBasedProjectDelegate.js" +IDS_50 "node_modules\\node-inspector\\front-end\\ContentProviders.js" +IDS_51 "node_modules\\node-inspector\\front-end\\ContextMenu.js" +IDS_52 "node_modules\\node-inspector\\front-end\\CookieItemsView.js" +IDS_53 "node_modules\\node-inspector\\front-end\\CookieParser.js" +IDS_54 "node_modules\\node-inspector\\front-end\\CookiesTable.js" +IDS_55 "node_modules\\node-inspector\\front-end\\CPUProfileView.js" +IDS_56 "node_modules\\node-inspector\\front-end\\CSSMetadata.js" +IDS_57 "node_modules\\node-inspector\\front-end\\CSSNamedFlowCollectionsView.js" +IDS_58 "node_modules\\node-inspector\\front-end\\cssNamedFlows.css" +IDS_59 "node_modules\\node-inspector\\front-end\\CSSNamedFlowView.js" +IDS_60 "node_modules\\node-inspector\\front-end\\CSSStyleModel.js" +IDS_61 "node_modules\\node-inspector\\front-end\\CSSStyleSheetMapping.js" +IDS_62 "node_modules\\node-inspector\\front-end\\Database.js" +IDS_63 "node_modules\\node-inspector\\front-end\\DatabaseQueryView.js" +IDS_64 "node_modules\\node-inspector\\front-end\\DatabaseTableView.js" +IDS_65 "node_modules\\node-inspector\\front-end\\dataGrid.css" +IDS_66 "node_modules\\node-inspector\\front-end\\DataGrid.js" +IDS_67 "node_modules\\node-inspector\\front-end\\DebuggerModel.js" +IDS_68 "node_modules\\node-inspector\\front-end\\DebuggerScriptMapping.js" +IDS_69 "node_modules\\node-inspector\\front-end\\DefaultScriptMapping.js" +IDS_70 "node_modules\\node-inspector\\front-end\\DevToolsExtensionAPI.js" +IDS_71 "node_modules\\node-inspector\\front-end\\dialog.css" +IDS_72 "node_modules\\node-inspector\\front-end\\Dialog.js" +IDS_73 "node_modules\\node-inspector\\front-end\\DirectoryContentView.js" +IDS_74 "node_modules\\node-inspector\\front-end\\DockController.js" +IDS_75 "node_modules\\node-inspector\\front-end\\DOMAgent.js" +IDS_76 "node_modules\\node-inspector\\front-end\\DOMBreakpointsSidebarPane.js" +IDS_77 "node_modules\\node-inspector\\front-end\\DOMCountersGraph.js" +IDS_78 "node_modules\\node-inspector\\front-end\\DOMExtension.js" +IDS_79 "node_modules\\node-inspector\\front-end\\DOMPresentationUtils.js" +IDS_80 "node_modules\\node-inspector\\front-end\\DOMStorage.js" +IDS_81 "node_modules\\node-inspector\\front-end\\DOMStorageItemsView.js" +IDS_82 "node_modules\\node-inspector\\front-end\\DOMSyntaxHighlighter.js" +IDS_83 "node_modules\\node-inspector\\front-end\\Drawer.js" +IDS_84 "node_modules\\node-inspector\\front-end\\EditFileSystemDialog.js" +IDS_85 "node_modules\\node-inspector\\front-end\\elementsPanel.css" +IDS_86 "node_modules\\node-inspector\\front-end\\ElementsPanel.js" +IDS_87 "node_modules\\node-inspector\\front-end\\ElementsPanelDescriptor.js" +IDS_88 "node_modules\\node-inspector\\front-end\\ElementsTreeOutline.js" +IDS_89 "node_modules\\node-inspector\\front-end\\EmptyView.js" +IDS_90 "node_modules\\node-inspector\\front-end\\EventListenersSidebarPane.js" +IDS_91 "node_modules\\node-inspector\\front-end\\ExtensionAPI.js" +IDS_92 "node_modules\\node-inspector\\front-end\\ExtensionAuditCategory.js" +IDS_93 "node_modules\\node-inspector\\front-end\\ExtensionPanel.js" +IDS_94 "node_modules\\node-inspector\\front-end\\ExtensionRegistryStub.js" +IDS_95 "node_modules\\node-inspector\\front-end\\ExtensionServer.js" +IDS_96 "node_modules\\node-inspector\\front-end\\ExtensionView.js" +IDS_97 "node_modules\\node-inspector\\front-end\\externs.js" +IDS_98 "node_modules\\node-inspector\\front-end\\FileContentView.js" +IDS_99 "node_modules\\node-inspector\\front-end\\FileManager.js" +IDS_100 "node_modules\\node-inspector\\front-end\\FilePathScoreFunction.js" +IDS_101 "node_modules\\node-inspector\\front-end\\FileSystemMapping.js" +IDS_102 "node_modules\\node-inspector\\front-end\\FileSystemModel.js" +IDS_103 "node_modules\\node-inspector\\front-end\\FileSystemProjectDelegate.js" +IDS_104 "node_modules\\node-inspector\\front-end\\FileSystemView.js" +IDS_105 "node_modules\\node-inspector\\front-end\\FileUtils.js" +IDS_106 "node_modules\\node-inspector\\front-end\\filteredItemSelectionDialog.css" +IDS_107 "node_modules\\node-inspector\\front-end\\FilteredItemSelectionDialog.js" +IDS_108 "node_modules\\node-inspector\\front-end\\flameChart.css" +IDS_109 "node_modules\\node-inspector\\front-end\\FlameChart.js" +IDS_110 "node_modules\\node-inspector\\front-end\\FontView.js" +IDS_111 "node_modules\\node-inspector\\front-end\\GoToLineDialog.js" +IDS_112 "node_modules\\node-inspector\\front-end\\HandlerRegistry.js" +IDS_113 "node_modules\\node-inspector\\front-end\\HAREntry.js" +IDS_114 "node_modules\\node-inspector\\front-end\\heapProfiler.css" +IDS_115 "node_modules\\node-inspector\\front-end\\HeapSnapshot.js" +IDS_116 "node_modules\\node-inspector\\front-end\\HeapSnapshotDataGrids.js" +IDS_117 "node_modules\\node-inspector\\front-end\\HeapSnapshotGridNodes.js" +IDS_118 "node_modules\\node-inspector\\front-end\\HeapSnapshotLoader.js" +IDS_119 "node_modules\\node-inspector\\front-end\\HeapSnapshotProxy.js" +IDS_120 "node_modules\\node-inspector\\front-end\\HeapSnapshotView.js" +IDS_121 "node_modules\\node-inspector\\front-end\\HeapSnapshotWorker.js" +IDS_122 "node_modules\\node-inspector\\front-end\\HeapSnapshotWorkerDispatcher.js" +IDS_123 "node_modules\\node-inspector\\front-end\\helpScreen.css" +IDS_124 "node_modules\\node-inspector\\front-end\\HelpScreen.js" +IDS_125 "node_modules\\node-inspector\\front-end\\ImageView.js" +IDS_126 "node_modules\\node-inspector\\front-end\\IndexedDBModel.js" +IDS_127 "node_modules\\node-inspector\\front-end\\indexedDBViews.css" +IDS_128 "node_modules\\node-inspector\\front-end\\IndexedDBViews.js" +IDS_129 "node_modules\\node-inspector\\front-end\\InspectElementModeController.js" +IDS_130 "node_modules\\node-inspector\\front-end\\inspector.css" +IDS_131 "node_modules\\node-inspector\\front-end\\inspector.html" +IDS_132 "node_modules\\node-inspector\\front-end\\inspector.js" +IDS_133 "node_modules\\node-inspector\\front-end\\InspectorBackend.js" +IDS_134 "node_modules\\node-inspector\\front-end\\InspectorBackendCommands.js" +IDS_135 "node_modules\\node-inspector\\front-end\\inspectorCommon.css" +IDS_136 "node_modules\\node-inspector\\front-end\\InspectorFrontendAPI.js" +IDS_137 "node_modules\\node-inspector\\front-end\\InspectorFrontendHostStub.js" +IDS_138 "node_modules\\node-inspector\\front-end\\inspectorSyntaxHighlight.css" +IDS_139 "node_modules\\node-inspector\\front-end\\InspectorView.js" +IDS_140 "node_modules\\node-inspector\\front-end\\IsolatedFileSystem.js" +IDS_141 "node_modules\\node-inspector\\front-end\\IsolatedFileSystemManager.js" +IDS_142 "node_modules\\node-inspector\\front-end\\JavaScriptFormatter.js" +IDS_143 "node_modules\\node-inspector\\front-end\\JavaScriptSourceFrame.js" +IDS_144 "node_modules\\node-inspector\\front-end\\jsdifflib.js" +IDS_145 "node_modules\\node-inspector\\front-end\\JSHeapSnapshot.js" +IDS_146 "node_modules\\node-inspector\\front-end\\KeyboardShortcut.js" +IDS_147 "node_modules\\node-inspector\\front-end\\LayerDetailsView.js" +IDS_148 "node_modules\\node-inspector\\front-end\\Layers3DView.js" +IDS_149 "node_modules\\node-inspector\\front-end\\layersPanel.css" +IDS_150 "node_modules\\node-inspector\\front-end\\LayersPanel.js" +IDS_151 "node_modules\\node-inspector\\front-end\\LayersPanelDescriptor.js" +IDS_152 "node_modules\\node-inspector\\front-end\\LayerTree.js" +IDS_153 "node_modules\\node-inspector\\front-end\\LayerTreeModel.js" +IDS_154 "node_modules\\node-inspector\\front-end\\Linkifier.js" +IDS_155 "node_modules\\node-inspector\\front-end\\LiveEditSupport.js" +IDS_156 "node_modules\\node-inspector\\front-end\\MemoryStatistics.js" +IDS_157 "node_modules\\node-inspector\\front-end\\MetricsSidebarPane.js" +IDS_158 "node_modules\\node-inspector\\front-end\\NativeBreakpointsSidebarPane.js" +IDS_159 "node_modules\\node-inspector\\front-end\\NavigatorOverlayController.js" +IDS_160 "node_modules\\node-inspector\\front-end\\navigatorView.css" +IDS_161 "node_modules\\node-inspector\\front-end\\NavigatorView.js" +IDS_162 "node_modules\\node-inspector\\front-end\\NetworkItemView.js" +IDS_163 "node_modules\\node-inspector\\front-end\\NetworkLog.js" +IDS_164 "node_modules\\node-inspector\\front-end\\networkLogView.css" +IDS_165 "node_modules\\node-inspector\\front-end\\NetworkManager.js" +IDS_166 "node_modules\\node-inspector\\front-end\\networkPanel.css" +IDS_167 "node_modules\\node-inspector\\front-end\\NetworkPanel.js" +IDS_168 "node_modules\\node-inspector\\front-end\\NetworkPanelDescriptor.js" +IDS_169 "node_modules\\node-inspector\\front-end\\NetworkRequest.js" +IDS_170 "node_modules\\node-inspector\\front-end\\NetworkUISourceCodeProvider.js" +IDS_171 "node_modules\\node-inspector\\front-end\\Object.js" +IDS_172 "node_modules\\node-inspector\\front-end\\ObjectPopoverHelper.js" +IDS_173 "node_modules\\node-inspector\\front-end\\ObjectPropertiesSection.js" +IDS_174 "node_modules\\node-inspector\\front-end\\OverridesSupport.js" +IDS_175 "node_modules\\node-inspector\\front-end\\OverridesView.js" +IDS_176 "node_modules\\node-inspector\\front-end\\OverviewGrid.js" +IDS_177 "node_modules\\node-inspector\\front-end\\OWNERS" +IDS_178 "node_modules\\node-inspector\\front-end\\Panel.js" +IDS_179 "node_modules\\node-inspector\\front-end\\panelEnablerView.css" +IDS_180 "node_modules\\node-inspector\\front-end\\ParsedURL.js" +IDS_181 "node_modules\\node-inspector\\front-end\\Placard.js" +IDS_182 "node_modules\\node-inspector\\front-end\\PlatformFontsSidebarPane.js" +IDS_183 "node_modules\\node-inspector\\front-end\\popover.css" +IDS_184 "node_modules\\node-inspector\\front-end\\Popover.js" +IDS_185 "node_modules\\node-inspector\\front-end\\PresentationConsoleMessageHelper.js" +IDS_186 "node_modules\\node-inspector\\front-end\\ProfileDataGridTree.js" +IDS_187 "node_modules\\node-inspector\\front-end\\ProfileLauncherView.js" +IDS_188 "node_modules\\node-inspector\\front-end\\profilesPanel.css" +IDS_189 "node_modules\\node-inspector\\front-end\\ProfilesPanel.js" +IDS_190 "node_modules\\node-inspector\\front-end\\ProfilesPanelDescriptor.js" +IDS_191 "node_modules\\node-inspector\\front-end\\Progress.js" +IDS_192 "node_modules\\node-inspector\\front-end\\ProgressIndicator.js" +IDS_193 "node_modules\\node-inspector\\front-end\\PropertiesSection.js" +IDS_194 "node_modules\\node-inspector\\front-end\\PropertiesSidebarPane.js" +IDS_195 "node_modules\\node-inspector\\front-end\\RawSourceCode.js" +IDS_196 "node_modules\\node-inspector\\front-end\\RemoteObject.js" +IDS_197 "node_modules\\node-inspector\\front-end\\RequestCookiesView.js" +IDS_198 "node_modules\\node-inspector\\front-end\\RequestHeadersView.js" +IDS_199 "node_modules\\node-inspector\\front-end\\RequestHTMLView.js" +IDS_200 "node_modules\\node-inspector\\front-end\\RequestJSONView.js" +IDS_201 "node_modules\\node-inspector\\front-end\\RequestPreviewView.js" +IDS_202 "node_modules\\node-inspector\\front-end\\RequestResponseView.js" +IDS_203 "node_modules\\node-inspector\\front-end\\RequestTimingView.js" +IDS_204 "node_modules\\node-inspector\\front-end\\RequestView.js" +IDS_205 "node_modules\\node-inspector\\front-end\\Resource.js" +IDS_206 "node_modules\\node-inspector\\front-end\\ResourceScriptMapping.js" +IDS_207 "node_modules\\node-inspector\\front-end\\resourcesPanel.css" +IDS_208 "node_modules\\node-inspector\\front-end\\ResourcesPanel.js" +IDS_209 "node_modules\\node-inspector\\front-end\\ResourceTreeModel.js" +IDS_210 "node_modules\\node-inspector\\front-end\\ResourceType.js" +IDS_211 "node_modules\\node-inspector\\front-end\\ResourceUtils.js" +IDS_212 "node_modules\\node-inspector\\front-end\\resourceView.css" +IDS_213 "node_modules\\node-inspector\\front-end\\ResourceView.js" +IDS_214 "node_modules\\node-inspector\\front-end\\ResourceWebSocketFrameView.js" +IDS_215 "node_modules\\node-inspector\\front-end\\revisionHistory.css" +IDS_216 "node_modules\\node-inspector\\front-end\\RevisionHistoryView.js" +IDS_217 "node_modules\\node-inspector\\front-end\\RuntimeModel.js" +IDS_218 "node_modules\\node-inspector\\front-end\\SASSSourceMapping.js" +IDS_219 "node_modules\\node-inspector\\front-end\\ScopeChainSidebarPane.js" +IDS_220 "node_modules\\node-inspector\\front-end\\screencastView.css" +IDS_221 "node_modules\\node-inspector\\front-end\\ScreencastView.js" +IDS_222 "node_modules\\node-inspector\\front-end\\Script.js" +IDS_223 "node_modules\\node-inspector\\front-end\\ScriptFormatter.js" +IDS_224 "node_modules\\node-inspector\\front-end\\ScriptFormatterWorker.js" +IDS_225 "node_modules\\node-inspector\\front-end\\ScriptsNavigator.js" +IDS_226 "node_modules\\node-inspector\\front-end\\ScriptSnippetModel.js" +IDS_227 "node_modules\\node-inspector\\front-end\\scriptsPanel.css" +IDS_228 "node_modules\\node-inspector\\front-end\\ScriptsPanel.js" +IDS_229 "node_modules\\node-inspector\\front-end\\ScriptsPanelDescriptor.js" +IDS_230 "node_modules\\node-inspector\\front-end\\ScriptsSearchScope.js" +IDS_231 "node_modules\\node-inspector\\front-end\\SearchController.js" +IDS_232 "node_modules\\node-inspector\\front-end\\Section.js" +IDS_233 "node_modules\\node-inspector\\front-end\\Settings.js" +IDS_234 "node_modules\\node-inspector\\front-end\\SettingsScreen.js" +IDS_235 "node_modules\\node-inspector\\front-end\\ShortcutsScreen.js" +IDS_236 "node_modules\\node-inspector\\front-end\\ShowMoreDataGridNode.js" +IDS_237 "node_modules\\node-inspector\\front-end\\SidebarOverlay.js" +IDS_238 "node_modules\\node-inspector\\front-end\\sidebarPane.css" +IDS_239 "node_modules\\node-inspector\\front-end\\SidebarPane.js" +IDS_240 "node_modules\\node-inspector\\front-end\\SidebarTreeElement.js" +IDS_241 "node_modules\\node-inspector\\front-end\\SidebarView.js" +IDS_242 "node_modules\\node-inspector\\front-end\\SimpleWorkspaceProvider.js" +IDS_243 "node_modules\\node-inspector\\front-end\\SnippetStorage.js" +IDS_244 "node_modules\\node-inspector\\front-end\\SoftContextMenu.js" +IDS_245 "node_modules\\node-inspector\\front-end\\SourceFrame.js" +IDS_246 "node_modules\\node-inspector\\front-end\\SourceMap.js" +IDS_247 "node_modules\\node-inspector\\front-end\\SourceMapping.js" +IDS_248 "node_modules\\node-inspector\\front-end\\spectrum.css" +IDS_249 "node_modules\\node-inspector\\front-end\\Spectrum.js" +IDS_250 "node_modules\\node-inspector\\front-end\\splitView.css" +IDS_251 "node_modules\\node-inspector\\front-end\\SplitView.js" +IDS_252 "node_modules\\node-inspector\\front-end\\StatusBarButton.js" +IDS_253 "node_modules\\node-inspector\\front-end\\StyleSheetOutlineDialog.js" +IDS_254 "node_modules\\node-inspector\\front-end\\StylesSidebarPane.js" +IDS_255 "node_modules\\node-inspector\\front-end\\StylesSourceMapping.js" +IDS_256 "node_modules\\node-inspector\\front-end\\SuggestBox.js" +IDS_257 "node_modules\\node-inspector\\front-end\\TabbedEditorContainer.js" +IDS_258 "node_modules\\node-inspector\\front-end\\tabbedPane.css" +IDS_259 "node_modules\\node-inspector\\front-end\\TabbedPane.js" +IDS_260 "node_modules\\node-inspector\\front-end\\test-runner.html" +IDS_261 "node_modules\\node-inspector\\front-end\\TestController.js" +IDS_262 "node_modules\\node-inspector\\front-end\\Tests.js" +IDS_263 "node_modules\\node-inspector\\front-end\\TextEditor.js" +IDS_264 "node_modules\\node-inspector\\front-end\\textPrompt.css" +IDS_265 "node_modules\\node-inspector\\front-end\\TextPrompt.js" +IDS_266 "node_modules\\node-inspector\\front-end\\TextRange.js" +IDS_267 "node_modules\\node-inspector\\front-end\\TextUtils.js" +IDS_268 "node_modules\\node-inspector\\front-end\\TimelineFrameController.js" +IDS_269 "node_modules\\node-inspector\\front-end\\TimelineGrid.js" +IDS_270 "node_modules\\node-inspector\\front-end\\TimelineManager.js" +IDS_271 "node_modules\\node-inspector\\front-end\\TimelineModel.js" +IDS_272 "node_modules\\node-inspector\\front-end\\TimelineOverviewPane.js" +IDS_273 "node_modules\\node-inspector\\front-end\\timelinePanel.css" +IDS_274 "node_modules\\node-inspector\\front-end\\TimelinePanel.js" +IDS_275 "node_modules\\node-inspector\\front-end\\TimelinePanelDescriptor.js" +IDS_276 "node_modules\\node-inspector\\front-end\\TimelinePresentationModel.js" +IDS_277 "node_modules\\node-inspector\\front-end\\Toolbar.js" +IDS_278 "node_modules\\node-inspector\\front-end\\TopDownProfileDataGridTree.js" +IDS_279 "node_modules\\node-inspector\\front-end\\TracingAgent.js" +IDS_280 "node_modules\\node-inspector\\front-end\\treeoutline.js" +IDS_281 "node_modules\\node-inspector\\front-end\\UISourceCode.js" +IDS_282 "node_modules\\node-inspector\\front-end\\UISourceCodeFrame.js" +IDS_283 "node_modules\\node-inspector\\front-end\\UIString.js" +IDS_284 "node_modules\\node-inspector\\front-end\\UIUtils.js" +IDS_285 "node_modules\\node-inspector\\front-end\\UserMetrics.js" +IDS_286 "node_modules\\node-inspector\\front-end\\utilities.js" +IDS_287 "node_modules\\node-inspector\\front-end\\View.js" +IDS_288 "node_modules\\node-inspector\\front-end\\ViewportControl.js" +IDS_289 "node_modules\\node-inspector\\front-end\\WatchExpressionsSidebarPane.js" +IDS_290 "node_modules\\node-inspector\\front-end\\WorkerManager.js" +IDS_291 "node_modules\\node-inspector\\front-end\\WorkersSidebarPane.js" +IDS_292 "node_modules\\node-inspector\\front-end\\Workspace.js" +IDS_293 "node_modules\\node-inspector\\front-end\\WorkspaceController.js" +IDS_294 "node_modules\\node-inspector\\front-end\\cm\\clike.js" +IDS_295 "node_modules\\node-inspector\\front-end\\cm\\closebrackets.js" +IDS_296 "node_modules\\node-inspector\\front-end\\cm\\cmdevtools.css" +IDS_297 "node_modules\\node-inspector\\front-end\\cm\\codemirror.css" +IDS_298 "node_modules\\node-inspector\\front-end\\cm\\codemirror.js" +IDS_299 "node_modules\\node-inspector\\front-end\\cm\\coffeescript.js" +IDS_300 "node_modules\\node-inspector\\front-end\\cm\\comment.js" +IDS_301 "node_modules\\node-inspector\\front-end\\cm\\css.js" +IDS_302 "node_modules\\node-inspector\\front-end\\cm\\headlesscodemirror.js" +IDS_303 "node_modules\\node-inspector\\front-end\\cm\\htmlembedded.js" +IDS_304 "node_modules\\node-inspector\\front-end\\cm\\htmlmixed.js" +IDS_305 "node_modules\\node-inspector\\front-end\\cm\\javascript.js" +IDS_306 "node_modules\\node-inspector\\front-end\\cm\\LICENSE" +IDS_307 "node_modules\\node-inspector\\front-end\\cm\\LICENSE_python" +IDS_308 "node_modules\\node-inspector\\front-end\\cm\\markselection.js" +IDS_309 "node_modules\\node-inspector\\front-end\\cm\\matchbrackets.js" +IDS_310 "node_modules\\node-inspector\\front-end\\cm\\overlay.js" +IDS_311 "node_modules\\node-inspector\\front-end\\cm\\php.js" +IDS_312 "node_modules\\node-inspector\\front-end\\cm\\python.js" +IDS_313 "node_modules\\node-inspector\\front-end\\cm\\shell.js" +IDS_314 "node_modules\\node-inspector\\front-end\\cm\\xml.js" +IDS_315 "node_modules\\node-inspector\\front-end\\Images\\addIcon.png" +IDS_316 "node_modules\\node-inspector\\front-end\\Images\\applicationCache.png" +IDS_317 "node_modules\\node-inspector\\front-end\\Images\\back.png" +IDS_318 "node_modules\\node-inspector\\front-end\\Images\\breakpoint2.png" +IDS_319 "node_modules\\node-inspector\\front-end\\Images\\breakpoint2_2x.png" +IDS_320 "node_modules\\node-inspector\\front-end\\Images\\breakpointBorder.png" +IDS_321 "node_modules\\node-inspector\\front-end\\Images\\breakpointConditional2.png" +IDS_322 "node_modules\\node-inspector\\front-end\\Images\\breakpointConditional2_2x.png" +IDS_323 "node_modules\\node-inspector\\front-end\\Images\\breakpointConditionalBorder.png" +IDS_324 "node_modules\\node-inspector\\front-end\\Images\\breakpointConditionalCounterBorder.png" +IDS_325 "node_modules\\node-inspector\\front-end\\Images\\breakpointCounterBorder.png" +IDS_326 "node_modules\\node-inspector\\front-end\\Images\\checker.png" +IDS_327 "node_modules\\node-inspector\\front-end\\Images\\cookie.png" +IDS_328 "node_modules\\node-inspector\\front-end\\Images\\database.png" +IDS_329 "node_modules\\node-inspector\\front-end\\Images\\databaseTable.png" +IDS_330 "node_modules\\node-inspector\\front-end\\Images\\deleteIcon.png" +IDS_331 "node_modules\\node-inspector\\front-end\\Images\\domain.png" +IDS_332 "node_modules\\node-inspector\\front-end\\Images\\fileSystem.png" +IDS_333 "node_modules\\node-inspector\\front-end\\Images\\forward.png" +IDS_334 "node_modules\\node-inspector\\front-end\\Images\\frame.png" +IDS_335 "node_modules\\node-inspector\\front-end\\Images\\glossyHeader.png" +IDS_336 "node_modules\\node-inspector\\front-end\\Images\\glossyHeaderPressed.png" +IDS_337 "node_modules\\node-inspector\\front-end\\Images\\glossyHeaderSelected.png" +IDS_338 "node_modules\\node-inspector\\front-end\\Images\\glossyHeaderSelectedPressed.png" +IDS_339 "node_modules\\node-inspector\\front-end\\Images\\graphLabelCalloutLeft.png" +IDS_340 "node_modules\\node-inspector\\front-end\\Images\\graphLabelCalloutRight.png" +IDS_341 "node_modules\\node-inspector\\front-end\\Images\\indexedDB.png" +IDS_342 "node_modules\\node-inspector\\front-end\\Images\\indexedDBIndex.png" +IDS_343 "node_modules\\node-inspector\\front-end\\Images\\indexedDBObjectStore.png" +IDS_344 "node_modules\\node-inspector\\front-end\\Images\\localStorage.png" +IDS_345 "node_modules\\node-inspector\\front-end\\Images\\namedFlowOverflow.png" +IDS_346 "node_modules\\node-inspector\\front-end\\Images\\paneAddButtons.png" +IDS_347 "node_modules\\node-inspector\\front-end\\Images\\paneElementStateButtons.png" +IDS_348 "node_modules\\node-inspector\\front-end\\Images\\paneFilterButtons.png" +IDS_349 "node_modules\\node-inspector\\front-end\\Images\\paneRefreshButtons.png" +IDS_350 "node_modules\\node-inspector\\front-end\\Images\\paneSettingsButtons.png" +IDS_351 "node_modules\\node-inspector\\front-end\\Images\\popoverArrows.png" +IDS_352 "node_modules\\node-inspector\\front-end\\Images\\popoverBackground.png" +IDS_353 "node_modules\\node-inspector\\front-end\\Images\\profileGroupIcon.png" +IDS_354 "node_modules\\node-inspector\\front-end\\Images\\profileIcon.png" +IDS_355 "node_modules\\node-inspector\\front-end\\Images\\profileSmallIcon.png" +IDS_356 "node_modules\\node-inspector\\front-end\\Images\\programCounterBorder.png" +IDS_357 "node_modules\\node-inspector\\front-end\\Images\\radioDot.png" +IDS_358 "node_modules\\node-inspector\\front-end\\Images\\regionEmpty.png" +IDS_359 "node_modules\\node-inspector\\front-end\\Images\\regionFit.png" +IDS_360 "node_modules\\node-inspector\\front-end\\Images\\regionOverset.png" +IDS_361 "node_modules\\node-inspector\\front-end\\Images\\resourceCSSIcon.png" +IDS_362 "node_modules\\node-inspector\\front-end\\Images\\resourceDocumentIcon.png" +IDS_363 "node_modules\\node-inspector\\front-end\\Images\\resourceDocumentIconSmall.png" +IDS_364 "node_modules\\node-inspector\\front-end\\Images\\resourceJSIcon.png" +IDS_365 "node_modules\\node-inspector\\front-end\\Images\\resourcePlainIcon.png" +IDS_366 "node_modules\\node-inspector\\front-end\\Images\\resourcePlainIconSmall.png" +IDS_367 "node_modules\\node-inspector\\front-end\\Images\\resourcesTimeGraphIcon.png" +IDS_368 "node_modules\\node-inspector\\front-end\\Images\\searchNext.png" +IDS_369 "node_modules\\node-inspector\\front-end\\Images\\searchPrev.png" +IDS_370 "node_modules\\node-inspector\\front-end\\Images\\searchSmallBlue.png" +IDS_371 "node_modules\\node-inspector\\front-end\\Images\\searchSmallBrightBlue.png" +IDS_372 "node_modules\\node-inspector\\front-end\\Images\\searchSmallGray.png" +IDS_373 "node_modules\\node-inspector\\front-end\\Images\\searchSmallWhite.png" +IDS_374 "node_modules\\node-inspector\\front-end\\Images\\segment.png" +IDS_375 "node_modules\\node-inspector\\front-end\\Images\\segmentEnd.png" +IDS_376 "node_modules\\node-inspector\\front-end\\Images\\segmentHover.png" +IDS_377 "node_modules\\node-inspector\\front-end\\Images\\segmentHoverEnd.png" +IDS_378 "node_modules\\node-inspector\\front-end\\Images\\segmentSelected.png" +IDS_379 "node_modules\\node-inspector\\front-end\\Images\\segmentSelectedEnd.png" +IDS_380 "node_modules\\node-inspector\\front-end\\Images\\sessionStorage.png" +IDS_381 "node_modules\\node-inspector\\front-end\\Images\\settingsListRemove.png" +IDS_382 "node_modules\\node-inspector\\front-end\\Images\\settingsListRemove_2x.png" +IDS_383 "node_modules\\node-inspector\\front-end\\Images\\spinner.gif" +IDS_384 "node_modules\\node-inspector\\front-end\\Images\\spinnerActive.gif" +IDS_385 "node_modules\\node-inspector\\front-end\\Images\\spinnerActiveSelected.gif" +IDS_386 "node_modules\\node-inspector\\front-end\\Images\\spinnerInactive.gif" +IDS_387 "node_modules\\node-inspector\\front-end\\Images\\spinnerInactiveSelected.gif" +IDS_388 "node_modules\\node-inspector\\front-end\\Images\\statusbarButtonGlyphs.png" +IDS_389 "node_modules\\node-inspector\\front-end\\Images\\statusbarButtonGlyphs2x.png" +IDS_390 "node_modules\\node-inspector\\front-end\\Images\\statusbarResizerHorizontal.png" +IDS_391 "node_modules\\node-inspector\\front-end\\Images\\statusbarResizerVertical.png" +IDS_392 "node_modules\\node-inspector\\front-end\\Images\\thumbActiveHoriz.png" +IDS_393 "node_modules\\node-inspector\\front-end\\Images\\thumbActiveVert.png" +IDS_394 "node_modules\\node-inspector\\front-end\\Images\\thumbHoriz.png" +IDS_395 "node_modules\\node-inspector\\front-end\\Images\\thumbHoverHoriz.png" +IDS_396 "node_modules\\node-inspector\\front-end\\Images\\thumbHoverVert.png" +IDS_397 "node_modules\\node-inspector\\front-end\\Images\\thumbVert.png" +IDS_398 "node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillBlue.png" +IDS_399 "node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillGray.png" +IDS_400 "node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillGreen.png" +IDS_401 "node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillOrange.png" +IDS_402 "node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillPurple.png" +IDS_403 "node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillRed.png" +IDS_404 "node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillYellow.png" +IDS_405 "node_modules\\node-inspector\\front-end\\Images\\timelinePillBlue.png" +IDS_406 "node_modules\\node-inspector\\front-end\\Images\\timelinePillGray.png" +IDS_407 "node_modules\\node-inspector\\front-end\\Images\\timelinePillGreen.png" +IDS_408 "node_modules\\node-inspector\\front-end\\Images\\timelinePillOrange.png" +IDS_409 "node_modules\\node-inspector\\front-end\\Images\\timelinePillPurple.png" +IDS_410 "node_modules\\node-inspector\\front-end\\Images\\timelinePillRed.png" +IDS_411 "node_modules\\node-inspector\\front-end\\Images\\timelinePillYellow.png" +IDS_412 "node_modules\\node-inspector\\front-end\\Images\\toolbarItemSelected.png" +IDS_413 "node_modules\\node-inspector\\front-end\\Images\\trackHoriz.png" +IDS_414 "node_modules\\node-inspector\\front-end\\Images\\trackVert.png" +IDS_415 "node_modules\\node-inspector\\front-end\\Images\\src\\breakpoints2.svg" +IDS_416 "node_modules\\node-inspector\\front-end\\Images\\src\\settingListRemove.svg" +IDS_417 "node_modules\\node-inspector\\front-end\\Images\\src\\statusbarButtonGlyphs.svg" +IDS_418 "node_modules\\node-inspector\\front-end\\UglifyJS\\parse-js.js" +IDS_419 "node_modules\\node-inspector\\front-end-node\\Overrides.js" +IDS_420 "node_modules\\node-inspector\\lib\\BreakEventHandler.js" +IDS_421 "node_modules\\node-inspector\\lib\\callback.js" +IDS_422 "node_modules\\node-inspector\\lib\\CallFramesProvider.js" +IDS_423 "node_modules\\node-inspector\\lib\\config.js" +IDS_424 "node_modules\\node-inspector\\lib\\convert.js" +IDS_425 "node_modules\\node-inspector\\lib\\debug-server.js" +IDS_426 "node_modules\\node-inspector\\lib\\debugger.js" +IDS_427 "node_modules\\node-inspector\\lib\\DebuggerAgent.js" +IDS_428 "node_modules\\node-inspector\\lib\\DebuggerClient.js" +IDS_429 "node_modules\\node-inspector\\lib\\FrontendClient.js" +IDS_430 "node_modules\\node-inspector\\lib\\FrontendCommandHandler.js" +IDS_431 "node_modules\\node-inspector\\lib\\NetworkAgent.js" +IDS_432 "node_modules\\node-inspector\\lib\\PageAgent.js" +IDS_433 "node_modules\\node-inspector\\lib\\RuntimeAgent.js" +IDS_434 "node_modules\\node-inspector\\lib\\ScriptFileStorage.js" +IDS_435 "node_modules\\node-inspector\\lib\\ScriptManager.js" +IDS_436 "node_modules\\node-inspector\\lib\\session.js" +IDS_437 "node_modules\\node-inspector\\node_modules\\.bin\\express" +IDS_438 "node_modules\\node-inspector\\node_modules\\.bin\\express.cmd" +IDS_439 "node_modules\\node-inspector\\node_modules\\.bin\\jade" +IDS_440 "node_modules\\node-inspector\\node_modules\\.bin\\jade.cmd" +IDS_441 "node_modules\\node-inspector\\node_modules\\.bin\\jshint" +IDS_442 "node_modules\\node-inspector\\node_modules\\.bin\\jshint.cmd" +IDS_443 "node_modules\\node-inspector\\node_modules\\.bin\\mkdirp" +IDS_444 "node_modules\\node-inspector\\node_modules\\.bin\\mkdirp.cmd" +IDS_445 "node_modules\\node-inspector\\node_modules\\.bin\\mocha" +IDS_446 "node_modules\\node-inspector\\node_modules\\.bin\\mocha.cmd" +IDS_447 "node_modules\\node-inspector\\node_modules\\.bin\\ncp" +IDS_448 "node_modules\\node-inspector\\node_modules\\.bin\\ncp.cmd" +IDS_449 "node_modules\\node-inspector\\node_modules\\.bin\\opener" +IDS_450 "node_modules\\node-inspector\\node_modules\\.bin\\opener.cmd" +IDS_451 "node_modules\\node-inspector\\node_modules\\.bin\\rc" +IDS_452 "node_modules\\node-inspector\\node_modules\\.bin\\rc.cmd" +IDS_453 "node_modules\\node-inspector\\node_modules\\.bin\\rimraf" +IDS_454 "node_modules\\node-inspector\\node_modules\\.bin\\rimraf.cmd" +IDS_455 "node_modules\\node-inspector\\node_modules\\.bin\\shjs" +IDS_456 "node_modules\\node-inspector\\node_modules\\.bin\\shjs.cmd" +IDS_457 "node_modules\\node-inspector\\node_modules\\.bin\\strip-json-comments" +IDS_458 "node_modules\\node-inspector\\node_modules\\.bin\\strip-json-comments.cmd" +IDS_459 "node_modules\\node-inspector\\node_modules\\.bin\\supports-color" +IDS_460 "node_modules\\node-inspector\\node_modules\\.bin\\supports-color.cmd" +IDS_461 "node_modules\\node-inspector\\node_modules\\.bin\\which" +IDS_462 "node_modules\\node-inspector\\node_modules\\.bin\\which.cmd" +IDS_463 "node_modules\\node-inspector\\node_modules\\.bin\\wscat" +IDS_464 "node_modules\\node-inspector\\node_modules\\.bin\\wscat.cmd" +IDS_465 "node_modules\\node-inspector\\node_modules\\.bin\\_mocha" +IDS_466 "node_modules\\node-inspector\\node_modules\\.bin\\_mocha.cmd" +IDS_467 "node_modules\\node-inspector\\node_modules\\assertion-error\\.npmignore" +IDS_468 "node_modules\\node-inspector\\node_modules\\assertion-error\\History.md" +IDS_469 "node_modules\\node-inspector\\node_modules\\assertion-error\\index.js" +IDS_470 "node_modules\\node-inspector\\node_modules\\assertion-error\\package.json" +IDS_471 "node_modules\\node-inspector\\node_modules\\assertion-error\\README.md" +IDS_472 "node_modules\\node-inspector\\node_modules\\async\\.travis.yml" +IDS_473 "node_modules\\node-inspector\\node_modules\\async\\component.json" +IDS_474 "node_modules\\node-inspector\\node_modules\\async\\LICENSE" +IDS_475 "node_modules\\node-inspector\\node_modules\\async\\package.json" +IDS_476 "node_modules\\node-inspector\\node_modules\\async\\README.md" +IDS_477 "node_modules\\node-inspector\\node_modules\\async\\lib\\async.js" +IDS_478 "node_modules\\node-inspector\\node_modules\\balanced-match\\.npmignore" +IDS_479 "node_modules\\node-inspector\\node_modules\\balanced-match\\.travis.yml" +IDS_480 "node_modules\\node-inspector\\node_modules\\balanced-match\\example.js" +IDS_481 "node_modules\\node-inspector\\node_modules\\balanced-match\\index.js" +IDS_482 "node_modules\\node-inspector\\node_modules\\balanced-match\\LICENSE.md" +IDS_483 "node_modules\\node-inspector\\node_modules\\balanced-match\\Makefile" +IDS_484 "node_modules\\node-inspector\\node_modules\\balanced-match\\package.json" +IDS_485 "node_modules\\node-inspector\\node_modules\\balanced-match\\README.md" +IDS_486 "node_modules\\node-inspector\\node_modules\\balanced-match\\test\\balanced.js" +IDS_487 "node_modules\\node-inspector\\node_modules\\basic-auth-connect\\.npmignore" +IDS_488 "node_modules\\node-inspector\\node_modules\\basic-auth-connect\\.travis.yml" +IDS_489 "node_modules\\node-inspector\\node_modules\\basic-auth-connect\\index.js" +IDS_490 "node_modules\\node-inspector\\node_modules\\basic-auth-connect\\Makefile" +IDS_491 "node_modules\\node-inspector\\node_modules\\basic-auth-connect\\package.json" +IDS_492 "node_modules\\node-inspector\\node_modules\\basic-auth-connect\\README.md" +IDS_493 "node_modules\\node-inspector\\node_modules\\batch\\.npmignore" +IDS_494 "node_modules\\node-inspector\\node_modules\\batch\\component.json" +IDS_495 "node_modules\\node-inspector\\node_modules\\batch\\History.md" +IDS_496 "node_modules\\node-inspector\\node_modules\\batch\\index.js" +IDS_497 "node_modules\\node-inspector\\node_modules\\batch\\Makefile" +IDS_498 "node_modules\\node-inspector\\node_modules\\batch\\package.json" +IDS_499 "node_modules\\node-inspector\\node_modules\\batch\\Readme.md" +IDS_500 "node_modules\\node-inspector\\node_modules\\brace-expansion\\.npmignore" +IDS_501 "node_modules\\node-inspector\\node_modules\\brace-expansion\\example.js" +IDS_502 "node_modules\\node-inspector\\node_modules\\brace-expansion\\index.js" +IDS_503 "node_modules\\node-inspector\\node_modules\\brace-expansion\\package.json" +IDS_504 "node_modules\\node-inspector\\node_modules\\brace-expansion\\README.md" +IDS_505 "node_modules\\node-inspector\\node_modules\\buffer-crc32\\.npmignore" +IDS_506 "node_modules\\node-inspector\\node_modules\\buffer-crc32\\.travis.yml" +IDS_507 "node_modules\\node-inspector\\node_modules\\buffer-crc32\\index.js" +IDS_508 "node_modules\\node-inspector\\node_modules\\buffer-crc32\\package.json" +IDS_509 "node_modules\\node-inspector\\node_modules\\buffer-crc32\\README.md" +IDS_510 "node_modules\\node-inspector\\node_modules\\buffer-crc32\\tests\\crc.test.js" +IDS_511 "node_modules\\node-inspector\\node_modules\\bytes\\.npmignore" +IDS_512 "node_modules\\node-inspector\\node_modules\\bytes\\component.json" +IDS_513 "node_modules\\node-inspector\\node_modules\\bytes\\History.md" +IDS_514 "node_modules\\node-inspector\\node_modules\\bytes\\index.js" +IDS_515 "node_modules\\node-inspector\\node_modules\\bytes\\Makefile" +IDS_516 "node_modules\\node-inspector\\node_modules\\bytes\\package.json" +IDS_517 "node_modules\\node-inspector\\node_modules\\bytes\\Readme.md" +IDS_518 "node_modules\\node-inspector\\node_modules\\chai\\.npmignore" +IDS_519 "node_modules\\node-inspector\\node_modules\\chai\\bower.json" +IDS_520 "node_modules\\node-inspector\\node_modules\\chai\\chai.js" +IDS_521 "node_modules\\node-inspector\\node_modules\\chai\\CODE_OF_CONDUCT.md" +IDS_522 "node_modules\\node-inspector\\node_modules\\chai\\CONTRIBUTING.md" +IDS_523 "node_modules\\node-inspector\\node_modules\\chai\\History.md" +IDS_524 "node_modules\\node-inspector\\node_modules\\chai\\index.js" +IDS_525 "node_modules\\node-inspector\\node_modules\\chai\\karma.conf.js" +IDS_526 "node_modules\\node-inspector\\node_modules\\chai\\karma.sauce.js" +IDS_527 "node_modules\\node-inspector\\node_modules\\chai\\package.json" +IDS_528 "node_modules\\node-inspector\\node_modules\\chai\\README.md" +IDS_529 "node_modules\\node-inspector\\node_modules\\chai\\ReleaseNotes.md" +IDS_530 "node_modules\\node-inspector\\node_modules\\chai\\sauce.browsers.js" +IDS_531 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai.js" +IDS_532 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\assertion.js" +IDS_533 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\config.js" +IDS_534 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\core\\assertions.js" +IDS_535 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\interface\\assert.js" +IDS_536 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\interface\\expect.js" +IDS_537 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\interface\\should.js" +IDS_538 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\addChainableMethod.js" +IDS_539 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\addMethod.js" +IDS_540 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\addProperty.js" +IDS_541 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\expectTypes.js" +IDS_542 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\flag.js" +IDS_543 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\getActual.js" +IDS_544 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\getEnumerableProperties.js" +IDS_545 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\getMessage.js" +IDS_546 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\getName.js" +IDS_547 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\getPathInfo.js" +IDS_548 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\getPathValue.js" +IDS_549 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\getProperties.js" +IDS_550 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\hasProperty.js" +IDS_551 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\index.js" +IDS_552 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\inspect.js" +IDS_553 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\objDisplay.js" +IDS_554 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\overwriteChainableMethod.js" +IDS_555 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\overwriteMethod.js" +IDS_556 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\overwriteProperty.js" +IDS_557 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\test.js" +IDS_558 "node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\transferFlags.js" +IDS_559 "node_modules\\node-inspector\\node_modules\\cli\\cli.js" +IDS_560 "node_modules\\node-inspector\\node_modules\\cli\\index.js" +IDS_561 "node_modules\\node-inspector\\node_modules\\cli\\package.json" +IDS_562 "node_modules\\node-inspector\\node_modules\\cli\\progress.js" +IDS_563 "node_modules\\node-inspector\\node_modules\\cli\\README.md" +IDS_564 "node_modules\\node-inspector\\node_modules\\cli\\spinner.js" +IDS_565 "node_modules\\node-inspector\\node_modules\\cli\\examples\\cat.js" +IDS_566 "node_modules\\node-inspector\\node_modules\\cli\\examples\\command.js" +IDS_567 "node_modules\\node-inspector\\node_modules\\cli\\examples\\echo.js" +IDS_568 "node_modules\\node-inspector\\node_modules\\cli\\examples\\glob.js" +IDS_569 "node_modules\\node-inspector\\node_modules\\cli\\examples\\long_desc.js" +IDS_570 "node_modules\\node-inspector\\node_modules\\cli\\examples\\progress.js" +IDS_571 "node_modules\\node-inspector\\node_modules\\cli\\examples\\sort.js" +IDS_572 "node_modules\\node-inspector\\node_modules\\cli\\examples\\spinner.js" +IDS_573 "node_modules\\node-inspector\\node_modules\\cli\\examples\\static.coffee" +IDS_574 "node_modules\\node-inspector\\node_modules\\cli\\examples\\static.js" +IDS_575 "node_modules\\node-inspector\\node_modules\\commander\\History.md" +IDS_576 "node_modules\\node-inspector\\node_modules\\commander\\index.js" +IDS_577 "node_modules\\node-inspector\\node_modules\\commander\\package.json" +IDS_578 "node_modules\\node-inspector\\node_modules\\commander\\Readme.md" +IDS_579 "node_modules\\node-inspector\\node_modules\\compressible\\.npmignore" +IDS_580 "node_modules\\node-inspector\\node_modules\\compressible\\.travis.yml" +IDS_581 "node_modules\\node-inspector\\node_modules\\compressible\\bench.js" +IDS_582 "node_modules\\node-inspector\\node_modules\\compressible\\index.js" +IDS_583 "node_modules\\node-inspector\\node_modules\\compressible\\package.json" +IDS_584 "node_modules\\node-inspector\\node_modules\\compressible\\README.md" +IDS_585 "node_modules\\node-inspector\\node_modules\\compressible\\specifications.json" +IDS_586 "node_modules\\node-inspector\\node_modules\\compressible\\test.js" +IDS_587 "node_modules\\node-inspector\\node_modules\\compression\\.npmignore" +IDS_588 "node_modules\\node-inspector\\node_modules\\compression\\.travis.yml" +IDS_589 "node_modules\\node-inspector\\node_modules\\compression\\index.js" +IDS_590 "node_modules\\node-inspector\\node_modules\\compression\\Makefile" +IDS_591 "node_modules\\node-inspector\\node_modules\\compression\\package.json" +IDS_592 "node_modules\\node-inspector\\node_modules\\compression\\README.md" +IDS_593 "node_modules\\node-inspector\\node_modules\\compression\\node_modules\\bytes\\.npmignore" +IDS_594 "node_modules\\node-inspector\\node_modules\\compression\\node_modules\\bytes\\component.json" +IDS_595 "node_modules\\node-inspector\\node_modules\\compression\\node_modules\\bytes\\History.md" +IDS_596 "node_modules\\node-inspector\\node_modules\\compression\\node_modules\\bytes\\index.js" +IDS_597 "node_modules\\node-inspector\\node_modules\\compression\\node_modules\\bytes\\Makefile" +IDS_598 "node_modules\\node-inspector\\node_modules\\compression\\node_modules\\bytes\\package.json" +IDS_599 "node_modules\\node-inspector\\node_modules\\compression\\node_modules\\bytes\\Readme.md" +IDS_600 "node_modules\\node-inspector\\node_modules\\concat-map\\.travis.yml" +IDS_601 "node_modules\\node-inspector\\node_modules\\concat-map\\index.js" +IDS_602 "node_modules\\node-inspector\\node_modules\\concat-map\\LICENSE" +IDS_603 "node_modules\\node-inspector\\node_modules\\concat-map\\package.json" +IDS_604 "node_modules\\node-inspector\\node_modules\\concat-map\\README.markdown" +IDS_605 "node_modules\\node-inspector\\node_modules\\concat-map\\example\\map.js" +IDS_606 "node_modules\\node-inspector\\node_modules\\concat-map\\test\\map.js" +IDS_607 "node_modules\\node-inspector\\node_modules\\connect\\.npmignore" +IDS_608 "node_modules\\node-inspector\\node_modules\\connect\\.travis.yml" +IDS_609 "node_modules\\node-inspector\\node_modules\\connect\\index.js" +IDS_610 "node_modules\\node-inspector\\node_modules\\connect\\LICENSE" +IDS_611 "node_modules\\node-inspector\\node_modules\\connect\\package.json" +IDS_612 "node_modules\\node-inspector\\node_modules\\connect\\Readme.md" +IDS_613 "node_modules\\node-inspector\\node_modules\\connect\\lib\\cache.js" +IDS_614 "node_modules\\node-inspector\\node_modules\\connect\\lib\\connect.js" +IDS_615 "node_modules\\node-inspector\\node_modules\\connect\\lib\\index.js" +IDS_616 "node_modules\\node-inspector\\node_modules\\connect\\lib\\patch.js" +IDS_617 "node_modules\\node-inspector\\node_modules\\connect\\lib\\proto.js" +IDS_618 "node_modules\\node-inspector\\node_modules\\connect\\lib\\utils.js" +IDS_619 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\basicAuth.js" +IDS_620 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\bodyParser.js" +IDS_621 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\compress.js" +IDS_622 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\cookieParser.js" +IDS_623 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\cookieSession.js" +IDS_624 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\csrf.js" +IDS_625 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\directory.js" +IDS_626 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\errorHandler.js" +IDS_627 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\favicon.js" +IDS_628 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\json.js" +IDS_629 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\limit.js" +IDS_630 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\logger.js" +IDS_631 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\methodOverride.js" +IDS_632 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\multipart.js" +IDS_633 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\query.js" +IDS_634 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\responseTime.js" +IDS_635 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\session.js" +IDS_636 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\static.js" +IDS_637 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\staticCache.js" +IDS_638 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\timeout.js" +IDS_639 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\urlencoded.js" +IDS_640 "node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\vhost.js" +IDS_641 "node_modules\\node-inspector\\node_modules\\connect-timeout\\.npmignore" +IDS_642 "node_modules\\node-inspector\\node_modules\\connect-timeout\\.travis.yml" +IDS_643 "node_modules\\node-inspector\\node_modules\\connect-timeout\\index.js" +IDS_644 "node_modules\\node-inspector\\node_modules\\connect-timeout\\Makefile" +IDS_645 "node_modules\\node-inspector\\node_modules\\connect-timeout\\package.json" +IDS_646 "node_modules\\node-inspector\\node_modules\\connect-timeout\\README.md" +IDS_647 "node_modules\\node-inspector\\node_modules\\console-browserify\\.npmignore" +IDS_648 "node_modules\\node-inspector\\node_modules\\console-browserify\\.testem.json" +IDS_649 "node_modules\\node-inspector\\node_modules\\console-browserify\\.travis.yml" +IDS_650 "node_modules\\node-inspector\\node_modules\\console-browserify\\index.js" +IDS_651 "node_modules\\node-inspector\\node_modules\\console-browserify\\LICENCE" +IDS_652 "node_modules\\node-inspector\\node_modules\\console-browserify\\package.json" +IDS_653 "node_modules\\node-inspector\\node_modules\\console-browserify\\README.md" +IDS_654 "node_modules\\node-inspector\\node_modules\\console-browserify\\test\\index.js" +IDS_655 "node_modules\\node-inspector\\node_modules\\console-browserify\\test\\static\\index.html" +IDS_656 "node_modules\\node-inspector\\node_modules\\console-browserify\\test\\static\\test-adapter.js" +IDS_657 "node_modules\\node-inspector\\node_modules\\cookie\\.npmignore" +IDS_658 "node_modules\\node-inspector\\node_modules\\cookie\\index.js" +IDS_659 "node_modules\\node-inspector\\node_modules\\cookie\\LICENSE" +IDS_660 "node_modules\\node-inspector\\node_modules\\cookie\\package.json" +IDS_661 "node_modules\\node-inspector\\node_modules\\cookie\\README.md" +IDS_662 "node_modules\\node-inspector\\node_modules\\cookie-parser\\.npmignore" +IDS_663 "node_modules\\node-inspector\\node_modules\\cookie-parser\\index.js" +IDS_664 "node_modules\\node-inspector\\node_modules\\cookie-parser\\package.json" +IDS_665 "node_modules\\node-inspector\\node_modules\\cookie-parser\\README.md" +IDS_666 "node_modules\\node-inspector\\node_modules\\cookie-parser\\lib\\parse.js" +IDS_667 "node_modules\\node-inspector\\node_modules\\cookie-parser\\node_modules\\cookie\\.npmignore" +IDS_668 "node_modules\\node-inspector\\node_modules\\cookie-parser\\node_modules\\cookie\\.travis.yml" +IDS_669 "node_modules\\node-inspector\\node_modules\\cookie-parser\\node_modules\\cookie\\index.js" +IDS_670 "node_modules\\node-inspector\\node_modules\\cookie-parser\\node_modules\\cookie\\LICENSE" +IDS_671 "node_modules\\node-inspector\\node_modules\\cookie-parser\\node_modules\\cookie\\package.json" +IDS_672 "node_modules\\node-inspector\\node_modules\\cookie-parser\\node_modules\\cookie\\README.md" +IDS_673 "node_modules\\node-inspector\\node_modules\\cookie-parser\\node_modules\\cookie\\test\\mocha.opts" +IDS_674 "node_modules\\node-inspector\\node_modules\\cookie-parser\\node_modules\\cookie\\test\\parse.js" +IDS_675 "node_modules\\node-inspector\\node_modules\\cookie-parser\\node_modules\\cookie\\test\\serialize.js" +IDS_676 "node_modules\\node-inspector\\node_modules\\cookie-parser\\test\\cookieParser.js" +IDS_677 "node_modules\\node-inspector\\node_modules\\cookie-signature\\.npmignore" +IDS_678 "node_modules\\node-inspector\\node_modules\\cookie-signature\\History.md" +IDS_679 "node_modules\\node-inspector\\node_modules\\cookie-signature\\index.js" +IDS_680 "node_modules\\node-inspector\\node_modules\\cookie-signature\\Makefile" +IDS_681 "node_modules\\node-inspector\\node_modules\\cookie-signature\\package.json" +IDS_682 "node_modules\\node-inspector\\node_modules\\cookie-signature\\Readme.md" +IDS_683 "node_modules\\node-inspector\\node_modules\\core-util-is\\float.patch" +IDS_684 "node_modules\\node-inspector\\node_modules\\core-util-is\\LICENSE" +IDS_685 "node_modules\\node-inspector\\node_modules\\core-util-is\\package.json" +IDS_686 "node_modules\\node-inspector\\node_modules\\core-util-is\\README.md" +IDS_687 "node_modules\\node-inspector\\node_modules\\core-util-is\\test.js" +IDS_688 "node_modules\\node-inspector\\node_modules\\core-util-is\\lib\\util.js" +IDS_689 "node_modules\\node-inspector\\node_modules\\csurf\\.npmignore" +IDS_690 "node_modules\\node-inspector\\node_modules\\csurf\\.travis.yml" +IDS_691 "node_modules\\node-inspector\\node_modules\\csurf\\HISTORY.md" +IDS_692 "node_modules\\node-inspector\\node_modules\\csurf\\index.js" +IDS_693 "node_modules\\node-inspector\\node_modules\\csurf\\LICENSE" +IDS_694 "node_modules\\node-inspector\\node_modules\\csurf\\Makefile" +IDS_695 "node_modules\\node-inspector\\node_modules\\csurf\\package.json" +IDS_696 "node_modules\\node-inspector\\node_modules\\csurf\\README.md" +IDS_697 "node_modules\\node-inspector\\node_modules\\date-now\\.npmignore" +IDS_698 "node_modules\\node-inspector\\node_modules\\date-now\\.testem.json" +IDS_699 "node_modules\\node-inspector\\node_modules\\date-now\\.travis.yml" +IDS_700 "node_modules\\node-inspector\\node_modules\\date-now\\index.js" +IDS_701 "node_modules\\node-inspector\\node_modules\\date-now\\LICENCE" +IDS_702 "node_modules\\node-inspector\\node_modules\\date-now\\package.json" +IDS_703 "node_modules\\node-inspector\\node_modules\\date-now\\README.md" +IDS_704 "node_modules\\node-inspector\\node_modules\\date-now\\seed.js" +IDS_705 "node_modules\\node-inspector\\node_modules\\date-now\\test\\index.js" +IDS_706 "node_modules\\node-inspector\\node_modules\\date-now\\test\\static\\index.html" +IDS_707 "node_modules\\node-inspector\\node_modules\\debug\\debug.js" +IDS_708 "node_modules\\node-inspector\\node_modules\\debug\\package.json" +IDS_709 "node_modules\\node-inspector\\node_modules\\debug\\Readme.md" +IDS_710 "node_modules\\node-inspector\\node_modules\\debug\\lib\\debug.js" +IDS_711 "node_modules\\node-inspector\\node_modules\\deep-eql\\.npmignore" +IDS_712 "node_modules\\node-inspector\\node_modules\\deep-eql\\History.md" +IDS_713 "node_modules\\node-inspector\\node_modules\\deep-eql\\index.js" +IDS_714 "node_modules\\node-inspector\\node_modules\\deep-eql\\karma.conf.js" +IDS_715 "node_modules\\node-inspector\\node_modules\\deep-eql\\package.json" +IDS_716 "node_modules\\node-inspector\\node_modules\\deep-eql\\README.md" +IDS_717 "node_modules\\node-inspector\\node_modules\\deep-eql\\lib\\eql.js" +IDS_718 "node_modules\\node-inspector\\node_modules\\deep-eql\\node_modules\\type-detect\\.npmignore" +IDS_719 "node_modules\\node-inspector\\node_modules\\deep-eql\\node_modules\\type-detect\\History.md" +IDS_720 "node_modules\\node-inspector\\node_modules\\deep-eql\\node_modules\\type-detect\\index.js" +IDS_721 "node_modules\\node-inspector\\node_modules\\deep-eql\\node_modules\\type-detect\\package.json" +IDS_722 "node_modules\\node-inspector\\node_modules\\deep-eql\\node_modules\\type-detect\\README.md" +IDS_723 "node_modules\\node-inspector\\node_modules\\deep-eql\\node_modules\\type-detect\\lib\\type.js" +IDS_724 "node_modules\\node-inspector\\node_modules\\deep-extend\\.npmignore" +IDS_725 "node_modules\\node-inspector\\node_modules\\deep-extend\\index.js" +IDS_726 "node_modules\\node-inspector\\node_modules\\deep-extend\\LICENSE" +IDS_727 "node_modules\\node-inspector\\node_modules\\deep-extend\\package.json" +IDS_728 "node_modules\\node-inspector\\node_modules\\deep-extend\\README.md" +IDS_729 "node_modules\\node-inspector\\node_modules\\deep-extend\\test\\index.spec.js" +IDS_730 "node_modules\\node-inspector\\node_modules\\deep-extend\\test\\mocha.opts" +IDS_731 "node_modules\\node-inspector\\node_modules\\diff\\diff.js" +IDS_732 "node_modules\\node-inspector\\node_modules\\diff\\package.json" +IDS_733 "node_modules\\node-inspector\\node_modules\\diff\\README.md" +IDS_734 "node_modules\\node-inspector\\node_modules\\dom-serializer\\index.js" +IDS_735 "node_modules\\node-inspector\\node_modules\\dom-serializer\\LICENSE" +IDS_736 "node_modules\\node-inspector\\node_modules\\dom-serializer\\package.json" +IDS_737 "node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\domelementtype\\index.js" +IDS_738 "node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\domelementtype\\LICENSE" +IDS_739 "node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\domelementtype\\package.json" +IDS_740 "node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\domelementtype\\readme.md" +IDS_741 "node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\.travis.yml" +IDS_742 "node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\index.js" +IDS_743 "node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\LICENSE" +IDS_744 "node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\package.json" +IDS_745 "node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\readme.md" +IDS_746 "node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\lib\\decode.js" +IDS_747 "node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\lib\\decode_codepoint.js" +IDS_748 "node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\lib\\encode.js" +IDS_749 "node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\maps\\decode.json" +IDS_750 "node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\maps\\entities.json" +IDS_751 "node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\maps\\legacy.json" +IDS_752 "node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\maps\\xml.json" +IDS_753 "node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\test\\mocha.opts" +IDS_754 "node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\test\\test.js" +IDS_755 "node_modules\\node-inspector\\node_modules\\domelementtype\\index.js" +IDS_756 "node_modules\\node-inspector\\node_modules\\domelementtype\\LICENSE" +IDS_757 "node_modules\\node-inspector\\node_modules\\domelementtype\\package.json" +IDS_758 "node_modules\\node-inspector\\node_modules\\domelementtype\\readme.md" +IDS_759 "node_modules\\node-inspector\\node_modules\\domhandler\\.travis.yml" +IDS_760 "node_modules\\node-inspector\\node_modules\\domhandler\\index.js" +IDS_761 "node_modules\\node-inspector\\node_modules\\domhandler\\LICENSE" +IDS_762 "node_modules\\node-inspector\\node_modules\\domhandler\\package.json" +IDS_763 "node_modules\\node-inspector\\node_modules\\domhandler\\readme.md" +IDS_764 "node_modules\\node-inspector\\node_modules\\domhandler\\lib\\element.js" +IDS_765 "node_modules\\node-inspector\\node_modules\\domhandler\\lib\\node.js" +IDS_766 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\tests.js" +IDS_767 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\01-basic.json" +IDS_768 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\02-single_tag_1.json" +IDS_769 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\03-single_tag_2.json" +IDS_770 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\04-unescaped_in_script.json" +IDS_771 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\05-tags_in_comment.json" +IDS_772 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\06-comment_in_script.json" +IDS_773 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\07-unescaped_in_style.json" +IDS_774 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\08-extra_spaces_in_tag.json" +IDS_775 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\09-unquoted_attrib.json" +IDS_776 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\10-singular_attribute.json" +IDS_777 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\11-text_outside_tags.json" +IDS_778 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\12-text_only.json" +IDS_779 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\13-comment_in_text.json" +IDS_780 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\14-comment_in_text_in_script.json" +IDS_781 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\15-non-verbose.json" +IDS_782 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\16-normalize_whitespace.json" +IDS_783 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\17-xml_namespace.json" +IDS_784 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\18-enforce_empty_tags.json" +IDS_785 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\19-ignore_empty_tags.json" +IDS_786 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\20-template_script_tags.json" +IDS_787 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\21-conditional_comments.json" +IDS_788 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\22-lowercase_tags.json" +IDS_789 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\23-dom-lvl1.json" +IDS_790 "node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\24-with-start-indices.json" +IDS_791 "node_modules\\node-inspector\\node_modules\\domutils\\.npmignore" +IDS_792 "node_modules\\node-inspector\\node_modules\\domutils\\index.js" +IDS_793 "node_modules\\node-inspector\\node_modules\\domutils\\LICENSE" +IDS_794 "node_modules\\node-inspector\\node_modules\\domutils\\package.json" +IDS_795 "node_modules\\node-inspector\\node_modules\\domutils\\readme.md" +IDS_796 "node_modules\\node-inspector\\node_modules\\domutils\\lib\\helpers.js" +IDS_797 "node_modules\\node-inspector\\node_modules\\domutils\\lib\\legacy.js" +IDS_798 "node_modules\\node-inspector\\node_modules\\domutils\\lib\\manipulation.js" +IDS_799 "node_modules\\node-inspector\\node_modules\\domutils\\lib\\querying.js" +IDS_800 "node_modules\\node-inspector\\node_modules\\domutils\\lib\\stringify.js" +IDS_801 "node_modules\\node-inspector\\node_modules\\domutils\\lib\\traversal.js" +IDS_802 "node_modules\\node-inspector\\node_modules\\domutils\\test\\fixture.js" +IDS_803 "node_modules\\node-inspector\\node_modules\\domutils\\test\\utils.js" +IDS_804 "node_modules\\node-inspector\\node_modules\\domutils\\test\\tests\\helpers.js" +IDS_805 "node_modules\\node-inspector\\node_modules\\domutils\\test\\tests\\legacy.js" +IDS_806 "node_modules\\node-inspector\\node_modules\\domutils\\test\\tests\\traversal.js" +IDS_807 "node_modules\\node-inspector\\node_modules\\entities\\.travis.yml" +IDS_808 "node_modules\\node-inspector\\node_modules\\entities\\index.js" +IDS_809 "node_modules\\node-inspector\\node_modules\\entities\\LICENSE" +IDS_810 "node_modules\\node-inspector\\node_modules\\entities\\package.json" +IDS_811 "node_modules\\node-inspector\\node_modules\\entities\\readme.md" +IDS_812 "node_modules\\node-inspector\\node_modules\\entities\\lib\\decode.js" +IDS_813 "node_modules\\node-inspector\\node_modules\\entities\\lib\\decode_codepoint.js" +IDS_814 "node_modules\\node-inspector\\node_modules\\entities\\lib\\encode.js" +IDS_815 "node_modules\\node-inspector\\node_modules\\entities\\maps\\decode.json" +IDS_816 "node_modules\\node-inspector\\node_modules\\entities\\maps\\entities.json" +IDS_817 "node_modules\\node-inspector\\node_modules\\entities\\maps\\legacy.json" +IDS_818 "node_modules\\node-inspector\\node_modules\\entities\\maps\\xml.json" +IDS_819 "node_modules\\node-inspector\\node_modules\\entities\\test\\mocha.opts" +IDS_820 "node_modules\\node-inspector\\node_modules\\entities\\test\\test.js" +IDS_821 "node_modules\\node-inspector\\node_modules\\errorhandler\\.npmignore" +IDS_822 "node_modules\\node-inspector\\node_modules\\errorhandler\\.travis.yml" +IDS_823 "node_modules\\node-inspector\\node_modules\\errorhandler\\index.js" +IDS_824 "node_modules\\node-inspector\\node_modules\\errorhandler\\Makefile" +IDS_825 "node_modules\\node-inspector\\node_modules\\errorhandler\\package.json" +IDS_826 "node_modules\\node-inspector\\node_modules\\errorhandler\\README.md" +IDS_827 "node_modules\\node-inspector\\node_modules\\errorhandler\\public\\error.html" +IDS_828 "node_modules\\node-inspector\\node_modules\\errorhandler\\public\\style.css" +IDS_829 "node_modules\\node-inspector\\node_modules\\escape-string-regexp\\index.js" +IDS_830 "node_modules\\node-inspector\\node_modules\\escape-string-regexp\\package.json" +IDS_831 "node_modules\\node-inspector\\node_modules\\escape-string-regexp\\readme.md" +IDS_832 "node_modules\\node-inspector\\node_modules\\exit\\.jshintrc" +IDS_833 "node_modules\\node-inspector\\node_modules\\exit\\.npmignore" +IDS_834 "node_modules\\node-inspector\\node_modules\\exit\\.travis.yml" +IDS_835 "node_modules\\node-inspector\\node_modules\\exit\\Gruntfile.js" +IDS_836 "node_modules\\node-inspector\\node_modules\\exit\\LICENSE-MIT" +IDS_837 "node_modules\\node-inspector\\node_modules\\exit\\package.json" +IDS_838 "node_modules\\node-inspector\\node_modules\\exit\\README.md" +IDS_839 "node_modules\\node-inspector\\node_modules\\exit\\lib\\exit.js" +IDS_840 "node_modules\\node-inspector\\node_modules\\exit\\test\\exit_test.js" +IDS_841 "node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\10-stderr.txt" +IDS_842 "node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\10-stdout-stderr.txt" +IDS_843 "node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\10-stdout.txt" +IDS_844 "node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\100-stderr.txt" +IDS_845 "node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\100-stdout-stderr.txt" +IDS_846 "node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\100-stdout.txt" +IDS_847 "node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\1000-stderr.txt" +IDS_848 "node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\1000-stdout-stderr.txt" +IDS_849 "node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\1000-stdout.txt" +IDS_850 "node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\create-files.sh" +IDS_851 "node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\log-broken.js" +IDS_852 "node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\log.js" +IDS_853 "node_modules\\node-inspector\\node_modules\\express\\.npmignore" +IDS_854 "node_modules\\node-inspector\\node_modules\\express\\.travis.yml" +IDS_855 "node_modules\\node-inspector\\node_modules\\express\\History.md" +IDS_856 "node_modules\\node-inspector\\node_modules\\express\\index.js" +IDS_857 "node_modules\\node-inspector\\node_modules\\express\\LICENSE" +IDS_858 "node_modules\\node-inspector\\node_modules\\express\\Makefile" +IDS_859 "node_modules\\node-inspector\\node_modules\\express\\package.json" +IDS_860 "node_modules\\node-inspector\\node_modules\\express\\Readme.md" +IDS_861 "node_modules\\node-inspector\\node_modules\\express\\bin\\express" +IDS_862 "node_modules\\node-inspector\\node_modules\\express\\lib\\application.js" +IDS_863 "node_modules\\node-inspector\\node_modules\\express\\lib\\express.js" +IDS_864 "node_modules\\node-inspector\\node_modules\\express\\lib\\middleware.js" +IDS_865 "node_modules\\node-inspector\\node_modules\\express\\lib\\request.js" +IDS_866 "node_modules\\node-inspector\\node_modules\\express\\lib\\response.js" +IDS_867 "node_modules\\node-inspector\\node_modules\\express\\lib\\utils.js" +IDS_868 "node_modules\\node-inspector\\node_modules\\express\\lib\\view.js" +IDS_869 "node_modules\\node-inspector\\node_modules\\express\\lib\\router\\index.js" +IDS_870 "node_modules\\node-inspector\\node_modules\\express\\lib\\router\\route.js" +IDS_871 "node_modules\\node-inspector\\node_modules\\express-session\\.npmignore" +IDS_872 "node_modules\\node-inspector\\node_modules\\express-session\\index.js" +IDS_873 "node_modules\\node-inspector\\node_modules\\express-session\\package.json" +IDS_874 "node_modules\\node-inspector\\node_modules\\express-session\\README.md" +IDS_875 "node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\cookie\\.npmignore" +IDS_876 "node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\cookie\\.travis.yml" +IDS_877 "node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\cookie\\index.js" +IDS_878 "node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\cookie\\LICENSE" +IDS_879 "node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\cookie\\package.json" +IDS_880 "node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\cookie\\README.md" +IDS_881 "node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\cookie\\test\\mocha.opts" +IDS_882 "node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\cookie\\test\\parse.js" +IDS_883 "node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\cookie\\test\\serialize.js" +IDS_884 "node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\debug\\debug.js" +IDS_885 "node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\debug\\index.js" +IDS_886 "node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\debug\\package.json" +IDS_887 "node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\debug\\Readme.md" +IDS_888 "node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\debug\\lib\\debug.js" +IDS_889 "node_modules\\node-inspector\\node_modules\\express-session\\session\\cookie.js" +IDS_890 "node_modules\\node-inspector\\node_modules\\express-session\\session\\memory.js" +IDS_891 "node_modules\\node-inspector\\node_modules\\express-session\\session\\session.js" +IDS_892 "node_modules\\node-inspector\\node_modules\\express-session\\session\\store.js" +IDS_893 "node_modules\\node-inspector\\node_modules\\express-session\\test\\session.js" +IDS_894 "node_modules\\node-inspector\\node_modules\\fresh\\.npmignore" +IDS_895 "node_modules\\node-inspector\\node_modules\\fresh\\History.md" +IDS_896 "node_modules\\node-inspector\\node_modules\\fresh\\index.js" +IDS_897 "node_modules\\node-inspector\\node_modules\\fresh\\Makefile" +IDS_898 "node_modules\\node-inspector\\node_modules\\fresh\\package.json" +IDS_899 "node_modules\\node-inspector\\node_modules\\fresh\\Readme.md" +IDS_900 "node_modules\\node-inspector\\node_modules\\fs-extra\\.npmignore" +IDS_901 "node_modules\\node-inspector\\node_modules\\fs-extra\\CHANGELOG.md" +IDS_902 "node_modules\\node-inspector\\node_modules\\fs-extra\\LICENSE" +IDS_903 "node_modules\\node-inspector\\node_modules\\fs-extra\\package.json" +IDS_904 "node_modules\\node-inspector\\node_modules\\fs-extra\\README.md" +IDS_905 "node_modules\\node-inspector\\node_modules\\fs-extra\\lib\\copy.js" +IDS_906 "node_modules\\node-inspector\\node_modules\\fs-extra\\lib\\create.js" +IDS_907 "node_modules\\node-inspector\\node_modules\\fs-extra\\lib\\index.js" +IDS_908 "node_modules\\node-inspector\\node_modules\\fs-extra\\lib\\json.js" +IDS_909 "node_modules\\node-inspector\\node_modules\\fs-extra\\lib\\mkdir.js" +IDS_910 "node_modules\\node-inspector\\node_modules\\fs-extra\\lib\\output.js" +IDS_911 "node_modules\\node-inspector\\node_modules\\fs-extra\\lib\\remove.js" +IDS_912 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\.npmignore" +IDS_913 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\.travis.yml" +IDS_914 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\index.js" +IDS_915 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\LICENSE" +IDS_916 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\package.json" +IDS_917 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\readme.markdown" +IDS_918 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\examples\\pow.js" +IDS_919 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\chmod.js" +IDS_920 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\clobber.js" +IDS_921 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\mkdirp.js" +IDS_922 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\perm.js" +IDS_923 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\perm_sync.js" +IDS_924 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\race.js" +IDS_925 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\rel.js" +IDS_926 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\return.js" +IDS_927 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\return_sync.js" +IDS_928 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\root.js" +IDS_929 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\sync.js" +IDS_930 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\umask.js" +IDS_931 "node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\umask_sync.js" +IDS_932 "node_modules\\node-inspector\\node_modules\\glob\\.npmignore" +IDS_933 "node_modules\\node-inspector\\node_modules\\glob\\.travis.yml" +IDS_934 "node_modules\\node-inspector\\node_modules\\glob\\glob.js" +IDS_935 "node_modules\\node-inspector\\node_modules\\glob\\LICENSE" +IDS_936 "node_modules\\node-inspector\\node_modules\\glob\\package.json" +IDS_937 "node_modules\\node-inspector\\node_modules\\glob\\README.md" +IDS_938 "node_modules\\node-inspector\\node_modules\\glob\\examples\\g.js" +IDS_939 "node_modules\\node-inspector\\node_modules\\glob\\examples\\usr-local.js" +IDS_940 "node_modules\\node-inspector\\node_modules\\glob\\test\\00-setup.js" +IDS_941 "node_modules\\node-inspector\\node_modules\\glob\\test\\bash-comparison.js" +IDS_942 "node_modules\\node-inspector\\node_modules\\glob\\test\\bash-results.json" +IDS_943 "node_modules\\node-inspector\\node_modules\\glob\\test\\cwd-test.js" +IDS_944 "node_modules\\node-inspector\\node_modules\\glob\\test\\globstar-match.js" +IDS_945 "node_modules\\node-inspector\\node_modules\\glob\\test\\mark.js" +IDS_946 "node_modules\\node-inspector\\node_modules\\glob\\test\\new-glob-optional-options.js" +IDS_947 "node_modules\\node-inspector\\node_modules\\glob\\test\\nocase-nomagic.js" +IDS_948 "node_modules\\node-inspector\\node_modules\\glob\\test\\pause-resume.js" +IDS_949 "node_modules\\node-inspector\\node_modules\\glob\\test\\readme-issue.js" +IDS_950 "node_modules\\node-inspector\\node_modules\\glob\\test\\root-nomount.js" +IDS_951 "node_modules\\node-inspector\\node_modules\\glob\\test\\root.js" +IDS_952 "node_modules\\node-inspector\\node_modules\\glob\\test\\stat.js" +IDS_953 "node_modules\\node-inspector\\node_modules\\glob\\test\\zz-cleanup.js" +IDS_954 "node_modules\\node-inspector\\node_modules\\graceful-fs\\.npmignore" +IDS_955 "node_modules\\node-inspector\\node_modules\\graceful-fs\\graceful-fs.js" +IDS_956 "node_modules\\node-inspector\\node_modules\\graceful-fs\\LICENSE" +IDS_957 "node_modules\\node-inspector\\node_modules\\graceful-fs\\package.json" +IDS_958 "node_modules\\node-inspector\\node_modules\\graceful-fs\\polyfills.js" +IDS_959 "node_modules\\node-inspector\\node_modules\\graceful-fs\\README.md" +IDS_960 "node_modules\\node-inspector\\node_modules\\graceful-fs\\test\\open.js" +IDS_961 "node_modules\\node-inspector\\node_modules\\graceful-fs\\test\\readdir-sort.js" +IDS_962 "node_modules\\node-inspector\\node_modules\\growl\\History.md" +IDS_963 "node_modules\\node-inspector\\node_modules\\growl\\package.json" +IDS_964 "node_modules\\node-inspector\\node_modules\\growl\\Readme.md" +IDS_965 "node_modules\\node-inspector\\node_modules\\growl\\test.js" +IDS_966 "node_modules\\node-inspector\\node_modules\\growl\\lib\\growl.js" +IDS_967 "node_modules\\node-inspector\\node_modules\\htmlparser2\\.gitattributes" +IDS_968 "node_modules\\node-inspector\\node_modules\\htmlparser2\\.jscsrc" +IDS_969 "node_modules\\node-inspector\\node_modules\\htmlparser2\\.travis.yml" +IDS_970 "node_modules\\node-inspector\\node_modules\\htmlparser2\\LICENSE" +IDS_971 "node_modules\\node-inspector\\node_modules\\htmlparser2\\package.json" +IDS_972 "node_modules\\node-inspector\\node_modules\\htmlparser2\\README.md" +IDS_973 "node_modules\\node-inspector\\node_modules\\htmlparser2\\lib\\CollectingHandler.js" +IDS_974 "node_modules\\node-inspector\\node_modules\\htmlparser2\\lib\\FeedHandler.js" +IDS_975 "node_modules\\node-inspector\\node_modules\\htmlparser2\\lib\\index.js" +IDS_976 "node_modules\\node-inspector\\node_modules\\htmlparser2\\lib\\Parser.js" +IDS_977 "node_modules\\node-inspector\\node_modules\\htmlparser2\\lib\\ProxyHandler.js" +IDS_978 "node_modules\\node-inspector\\node_modules\\htmlparser2\\lib\\Stream.js" +IDS_979 "node_modules\\node-inspector\\node_modules\\htmlparser2\\lib\\Tokenizer.js" +IDS_980 "node_modules\\node-inspector\\node_modules\\htmlparser2\\lib\\WritableStream.js" +IDS_981 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\01-events.js" +IDS_982 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\02-stream.js" +IDS_983 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\03-feed.js" +IDS_984 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\api.js" +IDS_985 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\test-helper.js" +IDS_986 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Documents\\Atom_Example.xml" +IDS_987 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Documents\\Attributes.html" +IDS_988 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Documents\\Basic.html" +IDS_989 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Documents\\RDF_Example.xml" +IDS_990 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Documents\\RSS_Example.xml" +IDS_991 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\01-simple.json" +IDS_992 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\02-template.json" +IDS_993 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\03-lowercase_tags.json" +IDS_994 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\04-cdata.json" +IDS_995 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\05-cdata-special.json" +IDS_996 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\06-leading-lt.json" +IDS_997 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\07-self-closing.json" +IDS_998 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\08-implicit-close-tags.json" +IDS_999 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\09-attributes.json" +IDS_1000 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\10-crazy-attrib.json" +IDS_1001 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\11-script_in_script.json" +IDS_1002 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\12-long-comment-end.json" +IDS_1003 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\13-long-cdata-end.json" +IDS_1004 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\14-implicit-open-tags.json" +IDS_1005 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\15-lt-whitespace.json" +IDS_1006 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\16-double_attribs.json" +IDS_1007 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\17-numeric_entities.json" +IDS_1008 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\18-legacy_entities.json" +IDS_1009 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\19-named_entities.json" +IDS_1010 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\20-xml_entities.json" +IDS_1011 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\21-entity_in_attribute.json" +IDS_1012 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\22-double_brackets.json" +IDS_1013 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\23-legacy_entity_fail.json" +IDS_1014 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\24-special_special.json" +IDS_1015 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\25-empty_tag_name.json" +IDS_1016 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\26-not-quite-closed.json" +IDS_1017 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\27-entities_in_attributes.json" +IDS_1018 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\28-cdata_in_html.json" +IDS_1019 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\29-comment_edge-cases.json" +IDS_1020 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\30-cdata_edge-cases.json" +IDS_1021 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\31-comment_false-ending.json" +IDS_1022 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Feeds\\01-rss.js" +IDS_1023 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Feeds\\02-atom.js" +IDS_1024 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Feeds\\03-rdf.js" +IDS_1025 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Stream\\01-basic.json" +IDS_1026 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Stream\\02-RSS.json" +IDS_1027 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Stream\\03-Atom.json" +IDS_1028 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Stream\\04-RDF.json" +IDS_1029 "node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Stream\\05-Attributes.json" +IDS_1030 "node_modules\\node-inspector\\node_modules\\inherits\\inherits.js" +IDS_1031 "node_modules\\node-inspector\\node_modules\\inherits\\inherits_browser.js" +IDS_1032 "node_modules\\node-inspector\\node_modules\\inherits\\LICENSE" +IDS_1033 "node_modules\\node-inspector\\node_modules\\inherits\\package.json" +IDS_1034 "node_modules\\node-inspector\\node_modules\\inherits\\README.md" +IDS_1035 "node_modules\\node-inspector\\node_modules\\inherits\\test.js" +IDS_1036 "node_modules\\node-inspector\\node_modules\\ini\\ini.js" +IDS_1037 "node_modules\\node-inspector\\node_modules\\ini\\LICENSE" +IDS_1038 "node_modules\\node-inspector\\node_modules\\ini\\package.json" +IDS_1039 "node_modules\\node-inspector\\node_modules\\ini\\README.md" +IDS_1040 "node_modules\\node-inspector\\node_modules\\ini\\test\\bar.js" +IDS_1041 "node_modules\\node-inspector\\node_modules\\ini\\test\\foo.js" +IDS_1042 "node_modules\\node-inspector\\node_modules\\ini\\test\\fixtures\\foo.ini" +IDS_1043 "node_modules\\node-inspector\\node_modules\\isarray\\component.json" +IDS_1044 "node_modules\\node-inspector\\node_modules\\isarray\\index.js" +IDS_1045 "node_modules\\node-inspector\\node_modules\\isarray\\package.json" +IDS_1046 "node_modules\\node-inspector\\node_modules\\isarray\\README.md" +IDS_1047 "node_modules\\node-inspector\\node_modules\\isarray\\build\\build.js" +IDS_1048 "node_modules\\node-inspector\\node_modules\\jade\\.npmignore" +IDS_1049 "node_modules\\node-inspector\\node_modules\\jade\\index.js" +IDS_1050 "node_modules\\node-inspector\\node_modules\\jade\\jade.js" +IDS_1051 "node_modules\\node-inspector\\node_modules\\jade\\jade.md" +IDS_1052 "node_modules\\node-inspector\\node_modules\\jade\\jade.min.js" +IDS_1053 "node_modules\\node-inspector\\node_modules\\jade\\LICENSE" +IDS_1054 "node_modules\\node-inspector\\node_modules\\jade\\package.json" +IDS_1055 "node_modules\\node-inspector\\node_modules\\jade\\runtime.js" +IDS_1056 "node_modules\\node-inspector\\node_modules\\jade\\runtime.min.js" +IDS_1057 "node_modules\\node-inspector\\node_modules\\jade\\test.jade" +IDS_1058 "node_modules\\node-inspector\\node_modules\\jade\\bin\\jade" +IDS_1059 "node_modules\\node-inspector\\node_modules\\jade\\lib\\compiler.js" +IDS_1060 "node_modules\\node-inspector\\node_modules\\jade\\lib\\doctypes.js" +IDS_1061 "node_modules\\node-inspector\\node_modules\\jade\\lib\\filters.js" +IDS_1062 "node_modules\\node-inspector\\node_modules\\jade\\lib\\inline-tags.js" +IDS_1063 "node_modules\\node-inspector\\node_modules\\jade\\lib\\jade.js" +IDS_1064 "node_modules\\node-inspector\\node_modules\\jade\\lib\\lexer.js" +IDS_1065 "node_modules\\node-inspector\\node_modules\\jade\\lib\\parser.js" +IDS_1066 "node_modules\\node-inspector\\node_modules\\jade\\lib\\runtime.js" +IDS_1067 "node_modules\\node-inspector\\node_modules\\jade\\lib\\self-closing.js" +IDS_1068 "node_modules\\node-inspector\\node_modules\\jade\\lib\\utils.js" +IDS_1069 "node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\attrs.js" +IDS_1070 "node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\block-comment.js" +IDS_1071 "node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\block.js" +IDS_1072 "node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\case.js" +IDS_1073 "node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\code.js" +IDS_1074 "node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\comment.js" +IDS_1075 "node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\doctype.js" +IDS_1076 "node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\each.js" +IDS_1077 "node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\filter.js" +IDS_1078 "node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\index.js" +IDS_1079 "node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\literal.js" +IDS_1080 "node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\mixin.js" +IDS_1081 "node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\node.js" +IDS_1082 "node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\tag.js" +IDS_1083 "node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\text.js" +IDS_1084 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\commander\\.npmignore" +IDS_1085 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\commander\\.travis.yml" +IDS_1086 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\commander\\History.md" +IDS_1087 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\commander\\index.js" +IDS_1088 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\commander\\Makefile" +IDS_1089 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\commander\\package.json" +IDS_1090 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\commander\\Readme.md" +IDS_1091 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\commander\\lib\\commander.js" +IDS_1092 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\.gitignore.orig" +IDS_1093 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\.gitignore.rej" +IDS_1094 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\.npmignore" +IDS_1095 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\index.js" +IDS_1096 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\LICENSE" +IDS_1097 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\package.json" +IDS_1098 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\README.markdown" +IDS_1099 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\examples\\pow.js" +IDS_1100 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\examples\\pow.js.orig" +IDS_1101 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\examples\\pow.js.rej" +IDS_1102 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\chmod.js" +IDS_1103 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\clobber.js" +IDS_1104 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\mkdirp.js" +IDS_1105 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\perm.js" +IDS_1106 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\perm_sync.js" +IDS_1107 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\race.js" +IDS_1108 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\rel.js" +IDS_1109 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\sync.js" +IDS_1110 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\umask.js" +IDS_1111 "node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\umask_sync.js" +IDS_1112 "node_modules\\node-inspector\\node_modules\\jade\\testing\\head.jade" +IDS_1113 "node_modules\\node-inspector\\node_modules\\jade\\testing\\index.jade" +IDS_1114 "node_modules\\node-inspector\\node_modules\\jade\\testing\\index.js" +IDS_1115 "node_modules\\node-inspector\\node_modules\\jade\\testing\\layout.jade" +IDS_1116 "node_modules\\node-inspector\\node_modules\\jade\\testing\\user.jade" +IDS_1117 "node_modules\\node-inspector\\node_modules\\jade\\testing\\user.js" +IDS_1118 "node_modules\\node-inspector\\node_modules\\jshint\\CHANGELOG.md" +IDS_1119 "node_modules\\node-inspector\\node_modules\\jshint\\LICENSE" +IDS_1120 "node_modules\\node-inspector\\node_modules\\jshint\\package.json" +IDS_1121 "node_modules\\node-inspector\\node_modules\\jshint\\README.md" +IDS_1122 "node_modules\\node-inspector\\node_modules\\jshint\\bin\\apply" +IDS_1123 "node_modules\\node-inspector\\node_modules\\jshint\\bin\\build" +IDS_1124 "node_modules\\node-inspector\\node_modules\\jshint\\bin\\jshint" +IDS_1125 "node_modules\\node-inspector\\node_modules\\jshint\\bin\\land" +IDS_1126 "node_modules\\node-inspector\\node_modules\\jshint\\data\\ascii-identifier-data.js" +IDS_1127 "node_modules\\node-inspector\\node_modules\\jshint\\data\\non-ascii-identifier-part-only.js" +IDS_1128 "node_modules\\node-inspector\\node_modules\\jshint\\data\\non-ascii-identifier-start.js" +IDS_1129 "node_modules\\node-inspector\\node_modules\\jshint\\dist\\jshint-rhino.js" +IDS_1130 "node_modules\\node-inspector\\node_modules\\jshint\\dist\\jshint.js" +IDS_1131 "node_modules\\node-inspector\\node_modules\\jshint\\node_modules\\minimatch\\browser.js" +IDS_1132 "node_modules\\node-inspector\\node_modules\\jshint\\node_modules\\minimatch\\LICENSE" +IDS_1133 "node_modules\\node-inspector\\node_modules\\jshint\\node_modules\\minimatch\\minimatch.js" +IDS_1134 "node_modules\\node-inspector\\node_modules\\jshint\\node_modules\\minimatch\\package.json" +IDS_1135 "node_modules\\node-inspector\\node_modules\\jshint\\node_modules\\minimatch\\README.md" +IDS_1136 "node_modules\\node-inspector\\node_modules\\jshint\\src\\cli.js" +IDS_1137 "node_modules\\node-inspector\\node_modules\\jshint\\src\\jshint.js" +IDS_1138 "node_modules\\node-inspector\\node_modules\\jshint\\src\\lex.js" +IDS_1139 "node_modules\\node-inspector\\node_modules\\jshint\\src\\messages.js" +IDS_1140 "node_modules\\node-inspector\\node_modules\\jshint\\src\\name-stack.js" +IDS_1141 "node_modules\\node-inspector\\node_modules\\jshint\\src\\options.js" +IDS_1142 "node_modules\\node-inspector\\node_modules\\jshint\\src\\reg.js" +IDS_1143 "node_modules\\node-inspector\\node_modules\\jshint\\src\\scope-manager.js" +IDS_1144 "node_modules\\node-inspector\\node_modules\\jshint\\src\\state.js" +IDS_1145 "node_modules\\node-inspector\\node_modules\\jshint\\src\\style.js" +IDS_1146 "node_modules\\node-inspector\\node_modules\\jshint\\src\\vars.js" +IDS_1147 "node_modules\\node-inspector\\node_modules\\jshint\\src\\platforms\\rhino.js" +IDS_1148 "node_modules\\node-inspector\\node_modules\\jshint\\src\\reporters\\checkstyle.js" +IDS_1149 "node_modules\\node-inspector\\node_modules\\jshint\\src\\reporters\\default.js" +IDS_1150 "node_modules\\node-inspector\\node_modules\\jshint\\src\\reporters\\jslint_xml.js" +IDS_1151 "node_modules\\node-inspector\\node_modules\\jshint\\src\\reporters\\non_error.js" +IDS_1152 "node_modules\\node-inspector\\node_modules\\jshint\\src\\reporters\\unix.js" +IDS_1153 "node_modules\\node-inspector\\node_modules\\jsonfile\\.npmignore" +IDS_1154 "node_modules\\node-inspector\\node_modules\\jsonfile\\CHANGELOG.md" +IDS_1155 "node_modules\\node-inspector\\node_modules\\jsonfile\\LICENSE" +IDS_1156 "node_modules\\node-inspector\\node_modules\\jsonfile\\package.json" +IDS_1157 "node_modules\\node-inspector\\node_modules\\jsonfile\\README.md" +IDS_1158 "node_modules\\node-inspector\\node_modules\\jsonfile\\lib\\jsonfile.js" +IDS_1159 "node_modules\\node-inspector\\node_modules\\keypress\\index.js" +IDS_1160 "node_modules\\node-inspector\\node_modules\\keypress\\package.json" +IDS_1161 "node_modules\\node-inspector\\node_modules\\keypress\\README.md" +IDS_1162 "node_modules\\node-inspector\\node_modules\\keypress\\test.js" +IDS_1163 "node_modules\\node-inspector\\node_modules\\lodash\\array.js" +IDS_1164 "node_modules\\node-inspector\\node_modules\\lodash\\chain.js" +IDS_1165 "node_modules\\node-inspector\\node_modules\\lodash\\collection.js" +IDS_1166 "node_modules\\node-inspector\\node_modules\\lodash\\date.js" +IDS_1167 "node_modules\\node-inspector\\node_modules\\lodash\\function.js" +IDS_1168 "node_modules\\node-inspector\\node_modules\\lodash\\index.js" +IDS_1169 "node_modules\\node-inspector\\node_modules\\lodash\\lang.js" +IDS_1170 "node_modules\\node-inspector\\node_modules\\lodash\\LICENSE.txt" +IDS_1171 "node_modules\\node-inspector\\node_modules\\lodash\\math.js" +IDS_1172 "node_modules\\node-inspector\\node_modules\\lodash\\number.js" +IDS_1173 "node_modules\\node-inspector\\node_modules\\lodash\\object.js" +IDS_1174 "node_modules\\node-inspector\\node_modules\\lodash\\package.json" +IDS_1175 "node_modules\\node-inspector\\node_modules\\lodash\\README.md" +IDS_1176 "node_modules\\node-inspector\\node_modules\\lodash\\string.js" +IDS_1177 "node_modules\\node-inspector\\node_modules\\lodash\\support.js" +IDS_1178 "node_modules\\node-inspector\\node_modules\\lodash\\utility.js" +IDS_1179 "node_modules\\node-inspector\\node_modules\\lodash\\array\\chunk.js" +IDS_1180 "node_modules\\node-inspector\\node_modules\\lodash\\array\\compact.js" +IDS_1181 "node_modules\\node-inspector\\node_modules\\lodash\\array\\difference.js" +IDS_1182 "node_modules\\node-inspector\\node_modules\\lodash\\array\\drop.js" +IDS_1183 "node_modules\\node-inspector\\node_modules\\lodash\\array\\dropRight.js" +IDS_1184 "node_modules\\node-inspector\\node_modules\\lodash\\array\\dropRightWhile.js" +IDS_1185 "node_modules\\node-inspector\\node_modules\\lodash\\array\\dropWhile.js" +IDS_1186 "node_modules\\node-inspector\\node_modules\\lodash\\array\\fill.js" +IDS_1187 "node_modules\\node-inspector\\node_modules\\lodash\\array\\findIndex.js" +IDS_1188 "node_modules\\node-inspector\\node_modules\\lodash\\array\\findLastIndex.js" +IDS_1189 "node_modules\\node-inspector\\node_modules\\lodash\\array\\first.js" +IDS_1190 "node_modules\\node-inspector\\node_modules\\lodash\\array\\flatten.js" +IDS_1191 "node_modules\\node-inspector\\node_modules\\lodash\\array\\flattenDeep.js" +IDS_1192 "node_modules\\node-inspector\\node_modules\\lodash\\array\\head.js" +IDS_1193 "node_modules\\node-inspector\\node_modules\\lodash\\array\\indexOf.js" +IDS_1194 "node_modules\\node-inspector\\node_modules\\lodash\\array\\initial.js" +IDS_1195 "node_modules\\node-inspector\\node_modules\\lodash\\array\\intersection.js" +IDS_1196 "node_modules\\node-inspector\\node_modules\\lodash\\array\\last.js" +IDS_1197 "node_modules\\node-inspector\\node_modules\\lodash\\array\\lastIndexOf.js" +IDS_1198 "node_modules\\node-inspector\\node_modules\\lodash\\array\\object.js" +IDS_1199 "node_modules\\node-inspector\\node_modules\\lodash\\array\\pull.js" +IDS_1200 "node_modules\\node-inspector\\node_modules\\lodash\\array\\pullAt.js" +IDS_1201 "node_modules\\node-inspector\\node_modules\\lodash\\array\\remove.js" +IDS_1202 "node_modules\\node-inspector\\node_modules\\lodash\\array\\rest.js" +IDS_1203 "node_modules\\node-inspector\\node_modules\\lodash\\array\\slice.js" +IDS_1204 "node_modules\\node-inspector\\node_modules\\lodash\\array\\sortedIndex.js" +IDS_1205 "node_modules\\node-inspector\\node_modules\\lodash\\array\\sortedLastIndex.js" +IDS_1206 "node_modules\\node-inspector\\node_modules\\lodash\\array\\tail.js" +IDS_1207 "node_modules\\node-inspector\\node_modules\\lodash\\array\\take.js" +IDS_1208 "node_modules\\node-inspector\\node_modules\\lodash\\array\\takeRight.js" +IDS_1209 "node_modules\\node-inspector\\node_modules\\lodash\\array\\takeRightWhile.js" +IDS_1210 "node_modules\\node-inspector\\node_modules\\lodash\\array\\takeWhile.js" +IDS_1211 "node_modules\\node-inspector\\node_modules\\lodash\\array\\union.js" +IDS_1212 "node_modules\\node-inspector\\node_modules\\lodash\\array\\uniq.js" +IDS_1213 "node_modules\\node-inspector\\node_modules\\lodash\\array\\unique.js" +IDS_1214 "node_modules\\node-inspector\\node_modules\\lodash\\array\\unzip.js" +IDS_1215 "node_modules\\node-inspector\\node_modules\\lodash\\array\\without.js" +IDS_1216 "node_modules\\node-inspector\\node_modules\\lodash\\array\\xor.js" +IDS_1217 "node_modules\\node-inspector\\node_modules\\lodash\\array\\zip.js" +IDS_1218 "node_modules\\node-inspector\\node_modules\\lodash\\array\\zipObject.js" +IDS_1219 "node_modules\\node-inspector\\node_modules\\lodash\\chain\\chain.js" +IDS_1220 "node_modules\\node-inspector\\node_modules\\lodash\\chain\\commit.js" +IDS_1221 "node_modules\\node-inspector\\node_modules\\lodash\\chain\\lodash.js" +IDS_1222 "node_modules\\node-inspector\\node_modules\\lodash\\chain\\plant.js" +IDS_1223 "node_modules\\node-inspector\\node_modules\\lodash\\chain\\reverse.js" +IDS_1224 "node_modules\\node-inspector\\node_modules\\lodash\\chain\\run.js" +IDS_1225 "node_modules\\node-inspector\\node_modules\\lodash\\chain\\tap.js" +IDS_1226 "node_modules\\node-inspector\\node_modules\\lodash\\chain\\thru.js" +IDS_1227 "node_modules\\node-inspector\\node_modules\\lodash\\chain\\toJSON.js" +IDS_1228 "node_modules\\node-inspector\\node_modules\\lodash\\chain\\toString.js" +IDS_1229 "node_modules\\node-inspector\\node_modules\\lodash\\chain\\value.js" +IDS_1230 "node_modules\\node-inspector\\node_modules\\lodash\\chain\\valueOf.js" +IDS_1231 "node_modules\\node-inspector\\node_modules\\lodash\\chain\\wrapperChain.js" +IDS_1232 "node_modules\\node-inspector\\node_modules\\lodash\\chain\\wrapperCommit.js" +IDS_1233 "node_modules\\node-inspector\\node_modules\\lodash\\chain\\wrapperPlant.js" +IDS_1234 "node_modules\\node-inspector\\node_modules\\lodash\\chain\\wrapperReverse.js" +IDS_1235 "node_modules\\node-inspector\\node_modules\\lodash\\chain\\wrapperToString.js" +IDS_1236 "node_modules\\node-inspector\\node_modules\\lodash\\chain\\wrapperValue.js" +IDS_1237 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\all.js" +IDS_1238 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\any.js" +IDS_1239 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\at.js" +IDS_1240 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\collect.js" +IDS_1241 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\contains.js" +IDS_1242 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\countBy.js" +IDS_1243 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\detect.js" +IDS_1244 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\each.js" +IDS_1245 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\eachRight.js" +IDS_1246 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\every.js" +IDS_1247 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\filter.js" +IDS_1248 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\find.js" +IDS_1249 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\findLast.js" +IDS_1250 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\findWhere.js" +IDS_1251 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\foldl.js" +IDS_1252 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\foldr.js" +IDS_1253 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\forEach.js" +IDS_1254 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\forEachRight.js" +IDS_1255 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\groupBy.js" +IDS_1256 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\include.js" +IDS_1257 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\includes.js" +IDS_1258 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\indexBy.js" +IDS_1259 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\inject.js" +IDS_1260 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\invoke.js" +IDS_1261 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\map.js" +IDS_1262 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\max.js" +IDS_1263 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\min.js" +IDS_1264 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\partition.js" +IDS_1265 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\pluck.js" +IDS_1266 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\reduce.js" +IDS_1267 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\reduceRight.js" +IDS_1268 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\reject.js" +IDS_1269 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\sample.js" +IDS_1270 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\select.js" +IDS_1271 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\shuffle.js" +IDS_1272 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\size.js" +IDS_1273 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\some.js" +IDS_1274 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\sortBy.js" +IDS_1275 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\sortByAll.js" +IDS_1276 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\sortByOrder.js" +IDS_1277 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\sum.js" +IDS_1278 "node_modules\\node-inspector\\node_modules\\lodash\\collection\\where.js" +IDS_1279 "node_modules\\node-inspector\\node_modules\\lodash\\date\\now.js" +IDS_1280 "node_modules\\node-inspector\\node_modules\\lodash\\function\\after.js" +IDS_1281 "node_modules\\node-inspector\\node_modules\\lodash\\function\\ary.js" +IDS_1282 "node_modules\\node-inspector\\node_modules\\lodash\\function\\backflow.js" +IDS_1283 "node_modules\\node-inspector\\node_modules\\lodash\\function\\before.js" +IDS_1284 "node_modules\\node-inspector\\node_modules\\lodash\\function\\bind.js" +IDS_1285 "node_modules\\node-inspector\\node_modules\\lodash\\function\\bindAll.js" +IDS_1286 "node_modules\\node-inspector\\node_modules\\lodash\\function\\bindKey.js" +IDS_1287 "node_modules\\node-inspector\\node_modules\\lodash\\function\\compose.js" +IDS_1288 "node_modules\\node-inspector\\node_modules\\lodash\\function\\curry.js" +IDS_1289 "node_modules\\node-inspector\\node_modules\\lodash\\function\\curryRight.js" +IDS_1290 "node_modules\\node-inspector\\node_modules\\lodash\\function\\debounce.js" +IDS_1291 "node_modules\\node-inspector\\node_modules\\lodash\\function\\defer.js" +IDS_1292 "node_modules\\node-inspector\\node_modules\\lodash\\function\\delay.js" +IDS_1293 "node_modules\\node-inspector\\node_modules\\lodash\\function\\flow.js" +IDS_1294 "node_modules\\node-inspector\\node_modules\\lodash\\function\\flowRight.js" +IDS_1295 "node_modules\\node-inspector\\node_modules\\lodash\\function\\memoize.js" +IDS_1296 "node_modules\\node-inspector\\node_modules\\lodash\\function\\negate.js" +IDS_1297 "node_modules\\node-inspector\\node_modules\\lodash\\function\\once.js" +IDS_1298 "node_modules\\node-inspector\\node_modules\\lodash\\function\\partial.js" +IDS_1299 "node_modules\\node-inspector\\node_modules\\lodash\\function\\partialRight.js" +IDS_1300 "node_modules\\node-inspector\\node_modules\\lodash\\function\\rearg.js" +IDS_1301 "node_modules\\node-inspector\\node_modules\\lodash\\function\\restParam.js" +IDS_1302 "node_modules\\node-inspector\\node_modules\\lodash\\function\\spread.js" +IDS_1303 "node_modules\\node-inspector\\node_modules\\lodash\\function\\throttle.js" +IDS_1304 "node_modules\\node-inspector\\node_modules\\lodash\\function\\wrap.js" +IDS_1305 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayCopy.js" +IDS_1306 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayEach.js" +IDS_1307 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayEachRight.js" +IDS_1308 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayEvery.js" +IDS_1309 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayFilter.js" +IDS_1310 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayMap.js" +IDS_1311 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayMax.js" +IDS_1312 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayMin.js" +IDS_1313 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayReduce.js" +IDS_1314 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayReduceRight.js" +IDS_1315 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\arraySome.js" +IDS_1316 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\arraySum.js" +IDS_1317 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\assignDefaults.js" +IDS_1318 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\assignOwnDefaults.js" +IDS_1319 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\assignWith.js" +IDS_1320 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseAssign.js" +IDS_1321 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseAt.js" +IDS_1322 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseCallback.js" +IDS_1323 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseClone.js" +IDS_1324 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseCompareAscending.js" +IDS_1325 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseCopy.js" +IDS_1326 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseCreate.js" +IDS_1327 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseDelay.js" +IDS_1328 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseDifference.js" +IDS_1329 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseEach.js" +IDS_1330 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseEachRight.js" +IDS_1331 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseEvery.js" +IDS_1332 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseFill.js" +IDS_1333 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseFilter.js" +IDS_1334 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseFind.js" +IDS_1335 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseFindIndex.js" +IDS_1336 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseFlatten.js" +IDS_1337 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseFor.js" +IDS_1338 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseForIn.js" +IDS_1339 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseForOwn.js" +IDS_1340 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseForOwnRight.js" +IDS_1341 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseForRight.js" +IDS_1342 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseFunctions.js" +IDS_1343 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseGet.js" +IDS_1344 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseIndexOf.js" +IDS_1345 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseIsEqual.js" +IDS_1346 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseIsEqualDeep.js" +IDS_1347 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseIsFunction.js" +IDS_1348 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseIsMatch.js" +IDS_1349 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseLodash.js" +IDS_1350 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseMap.js" +IDS_1351 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseMatches.js" +IDS_1352 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseMatchesProperty.js" +IDS_1353 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseMerge.js" +IDS_1354 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseMergeDeep.js" +IDS_1355 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseProperty.js" +IDS_1356 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\basePropertyDeep.js" +IDS_1357 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\basePullAt.js" +IDS_1358 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseRandom.js" +IDS_1359 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseReduce.js" +IDS_1360 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseSetData.js" +IDS_1361 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseSlice.js" +IDS_1362 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseSome.js" +IDS_1363 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseSortBy.js" +IDS_1364 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseSortByOrder.js" +IDS_1365 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseSum.js" +IDS_1366 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseToString.js" +IDS_1367 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseUniq.js" +IDS_1368 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseValues.js" +IDS_1369 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseWhile.js" +IDS_1370 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseWrapperValue.js" +IDS_1371 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\binaryIndex.js" +IDS_1372 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\binaryIndexBy.js" +IDS_1373 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\bindCallback.js" +IDS_1374 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\bufferClone.js" +IDS_1375 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\cacheIndexOf.js" +IDS_1376 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\cachePush.js" +IDS_1377 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\charAtCallback.js" +IDS_1378 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\charsLeftIndex.js" +IDS_1379 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\charsRightIndex.js" +IDS_1380 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\compareAscending.js" +IDS_1381 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\compareMultiple.js" +IDS_1382 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\composeArgs.js" +IDS_1383 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\composeArgsRight.js" +IDS_1384 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createAggregator.js" +IDS_1385 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createAssigner.js" +IDS_1386 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createBaseEach.js" +IDS_1387 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createBaseFor.js" +IDS_1388 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createBindWrapper.js" +IDS_1389 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createCache.js" +IDS_1390 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createCompounder.js" +IDS_1391 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createCtorWrapper.js" +IDS_1392 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createCurry.js" +IDS_1393 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createExtremum.js" +IDS_1394 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createFind.js" +IDS_1395 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createFindIndex.js" +IDS_1396 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createFindKey.js" +IDS_1397 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createFlow.js" +IDS_1398 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createForEach.js" +IDS_1399 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createForIn.js" +IDS_1400 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createForOwn.js" +IDS_1401 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createHybridWrapper.js" +IDS_1402 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createPadding.js" +IDS_1403 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createPadDir.js" +IDS_1404 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createPartial.js" +IDS_1405 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createPartialWrapper.js" +IDS_1406 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createReduce.js" +IDS_1407 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createSortedIndex.js" +IDS_1408 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\createWrapper.js" +IDS_1409 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\deburrLetter.js" +IDS_1410 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\equalArrays.js" +IDS_1411 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\equalByTag.js" +IDS_1412 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\equalObjects.js" +IDS_1413 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\escapeHtmlChar.js" +IDS_1414 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\escapeStringChar.js" +IDS_1415 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\extremumBy.js" +IDS_1416 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\getData.js" +IDS_1417 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\getFuncName.js" +IDS_1418 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\getLength.js" +IDS_1419 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\getSymbols.js" +IDS_1420 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\getView.js" +IDS_1421 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\indexOfNaN.js" +IDS_1422 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\initCloneArray.js" +IDS_1423 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\initCloneByTag.js" +IDS_1424 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\initCloneObject.js" +IDS_1425 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\invokePath.js" +IDS_1426 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\isIndex.js" +IDS_1427 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\isIterateeCall.js" +IDS_1428 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\isKey.js" +IDS_1429 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\isLaziable.js" +IDS_1430 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\isLength.js" +IDS_1431 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\isObjectLike.js" +IDS_1432 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\isSpace.js" +IDS_1433 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\isStrictComparable.js" +IDS_1434 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\lazyClone.js" +IDS_1435 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\lazyReverse.js" +IDS_1436 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\lazyValue.js" +IDS_1437 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\LazyWrapper.js" +IDS_1438 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\LodashWrapper.js" +IDS_1439 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\MapCache.js" +IDS_1440 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\mapDelete.js" +IDS_1441 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\mapGet.js" +IDS_1442 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\mapHas.js" +IDS_1443 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\mapSet.js" +IDS_1444 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\mergeData.js" +IDS_1445 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\metaMap.js" +IDS_1446 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\pickByArray.js" +IDS_1447 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\pickByCallback.js" +IDS_1448 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\realNames.js" +IDS_1449 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\reEscape.js" +IDS_1450 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\reEvaluate.js" +IDS_1451 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\reInterpolate.js" +IDS_1452 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\reorder.js" +IDS_1453 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\replaceHolders.js" +IDS_1454 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\SetCache.js" +IDS_1455 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\setData.js" +IDS_1456 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\shimIsPlainObject.js" +IDS_1457 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\shimKeys.js" +IDS_1458 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\sortedUniq.js" +IDS_1459 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\toIterable.js" +IDS_1460 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\toObject.js" +IDS_1461 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\toPath.js" +IDS_1462 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\trimmedLeftIndex.js" +IDS_1463 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\trimmedRightIndex.js" +IDS_1464 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\unescapeHtmlChar.js" +IDS_1465 "node_modules\\node-inspector\\node_modules\\lodash\\internal\\wrapperClone.js" +IDS_1466 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\clone.js" +IDS_1467 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\cloneDeep.js" +IDS_1468 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isArguments.js" +IDS_1469 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isArray.js" +IDS_1470 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isBoolean.js" +IDS_1471 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isDate.js" +IDS_1472 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isElement.js" +IDS_1473 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isEmpty.js" +IDS_1474 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isEqual.js" +IDS_1475 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isError.js" +IDS_1476 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isFinite.js" +IDS_1477 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isFunction.js" +IDS_1478 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isMatch.js" +IDS_1479 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isNaN.js" +IDS_1480 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isNative.js" +IDS_1481 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isNull.js" +IDS_1482 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isNumber.js" +IDS_1483 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isObject.js" +IDS_1484 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isPlainObject.js" +IDS_1485 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isRegExp.js" +IDS_1486 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isString.js" +IDS_1487 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isTypedArray.js" +IDS_1488 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\isUndefined.js" +IDS_1489 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\toArray.js" +IDS_1490 "node_modules\\node-inspector\\node_modules\\lodash\\lang\\toPlainObject.js" +IDS_1491 "node_modules\\node-inspector\\node_modules\\lodash\\math\\add.js" +IDS_1492 "node_modules\\node-inspector\\node_modules\\lodash\\math\\max.js" +IDS_1493 "node_modules\\node-inspector\\node_modules\\lodash\\math\\min.js" +IDS_1494 "node_modules\\node-inspector\\node_modules\\lodash\\math\\sum.js" +IDS_1495 "node_modules\\node-inspector\\node_modules\\lodash\\number\\inRange.js" +IDS_1496 "node_modules\\node-inspector\\node_modules\\lodash\\number\\random.js" +IDS_1497 "node_modules\\node-inspector\\node_modules\\lodash\\object\\assign.js" +IDS_1498 "node_modules\\node-inspector\\node_modules\\lodash\\object\\create.js" +IDS_1499 "node_modules\\node-inspector\\node_modules\\lodash\\object\\defaults.js" +IDS_1500 "node_modules\\node-inspector\\node_modules\\lodash\\object\\extend.js" +IDS_1501 "node_modules\\node-inspector\\node_modules\\lodash\\object\\findKey.js" +IDS_1502 "node_modules\\node-inspector\\node_modules\\lodash\\object\\findLastKey.js" +IDS_1503 "node_modules\\node-inspector\\node_modules\\lodash\\object\\forIn.js" +IDS_1504 "node_modules\\node-inspector\\node_modules\\lodash\\object\\forInRight.js" +IDS_1505 "node_modules\\node-inspector\\node_modules\\lodash\\object\\forOwn.js" +IDS_1506 "node_modules\\node-inspector\\node_modules\\lodash\\object\\forOwnRight.js" +IDS_1507 "node_modules\\node-inspector\\node_modules\\lodash\\object\\functions.js" +IDS_1508 "node_modules\\node-inspector\\node_modules\\lodash\\object\\get.js" +IDS_1509 "node_modules\\node-inspector\\node_modules\\lodash\\object\\has.js" +IDS_1510 "node_modules\\node-inspector\\node_modules\\lodash\\object\\invert.js" +IDS_1511 "node_modules\\node-inspector\\node_modules\\lodash\\object\\keys.js" +IDS_1512 "node_modules\\node-inspector\\node_modules\\lodash\\object\\keysIn.js" +IDS_1513 "node_modules\\node-inspector\\node_modules\\lodash\\object\\mapValues.js" +IDS_1514 "node_modules\\node-inspector\\node_modules\\lodash\\object\\merge.js" +IDS_1515 "node_modules\\node-inspector\\node_modules\\lodash\\object\\methods.js" +IDS_1516 "node_modules\\node-inspector\\node_modules\\lodash\\object\\omit.js" +IDS_1517 "node_modules\\node-inspector\\node_modules\\lodash\\object\\pairs.js" +IDS_1518 "node_modules\\node-inspector\\node_modules\\lodash\\object\\pick.js" +IDS_1519 "node_modules\\node-inspector\\node_modules\\lodash\\object\\result.js" +IDS_1520 "node_modules\\node-inspector\\node_modules\\lodash\\object\\set.js" +IDS_1521 "node_modules\\node-inspector\\node_modules\\lodash\\object\\transform.js" +IDS_1522 "node_modules\\node-inspector\\node_modules\\lodash\\object\\values.js" +IDS_1523 "node_modules\\node-inspector\\node_modules\\lodash\\object\\valuesIn.js" +IDS_1524 "node_modules\\node-inspector\\node_modules\\lodash\\string\\camelCase.js" +IDS_1525 "node_modules\\node-inspector\\node_modules\\lodash\\string\\capitalize.js" +IDS_1526 "node_modules\\node-inspector\\node_modules\\lodash\\string\\deburr.js" +IDS_1527 "node_modules\\node-inspector\\node_modules\\lodash\\string\\endsWith.js" +IDS_1528 "node_modules\\node-inspector\\node_modules\\lodash\\string\\escape.js" +IDS_1529 "node_modules\\node-inspector\\node_modules\\lodash\\string\\escapeRegExp.js" +IDS_1530 "node_modules\\node-inspector\\node_modules\\lodash\\string\\kebabCase.js" +IDS_1531 "node_modules\\node-inspector\\node_modules\\lodash\\string\\pad.js" +IDS_1532 "node_modules\\node-inspector\\node_modules\\lodash\\string\\padLeft.js" +IDS_1533 "node_modules\\node-inspector\\node_modules\\lodash\\string\\padRight.js" +IDS_1534 "node_modules\\node-inspector\\node_modules\\lodash\\string\\parseInt.js" +IDS_1535 "node_modules\\node-inspector\\node_modules\\lodash\\string\\repeat.js" +IDS_1536 "node_modules\\node-inspector\\node_modules\\lodash\\string\\snakeCase.js" +IDS_1537 "node_modules\\node-inspector\\node_modules\\lodash\\string\\startCase.js" +IDS_1538 "node_modules\\node-inspector\\node_modules\\lodash\\string\\startsWith.js" +IDS_1539 "node_modules\\node-inspector\\node_modules\\lodash\\string\\template.js" +IDS_1540 "node_modules\\node-inspector\\node_modules\\lodash\\string\\templateSettings.js" +IDS_1541 "node_modules\\node-inspector\\node_modules\\lodash\\string\\trim.js" +IDS_1542 "node_modules\\node-inspector\\node_modules\\lodash\\string\\trimLeft.js" +IDS_1543 "node_modules\\node-inspector\\node_modules\\lodash\\string\\trimRight.js" +IDS_1544 "node_modules\\node-inspector\\node_modules\\lodash\\string\\trunc.js" +IDS_1545 "node_modules\\node-inspector\\node_modules\\lodash\\string\\unescape.js" +IDS_1546 "node_modules\\node-inspector\\node_modules\\lodash\\string\\words.js" +IDS_1547 "node_modules\\node-inspector\\node_modules\\lodash\\utility\\attempt.js" +IDS_1548 "node_modules\\node-inspector\\node_modules\\lodash\\utility\\callback.js" +IDS_1549 "node_modules\\node-inspector\\node_modules\\lodash\\utility\\constant.js" +IDS_1550 "node_modules\\node-inspector\\node_modules\\lodash\\utility\\identity.js" +IDS_1551 "node_modules\\node-inspector\\node_modules\\lodash\\utility\\iteratee.js" +IDS_1552 "node_modules\\node-inspector\\node_modules\\lodash\\utility\\matches.js" +IDS_1553 "node_modules\\node-inspector\\node_modules\\lodash\\utility\\matchesProperty.js" +IDS_1554 "node_modules\\node-inspector\\node_modules\\lodash\\utility\\method.js" +IDS_1555 "node_modules\\node-inspector\\node_modules\\lodash\\utility\\methodOf.js" +IDS_1556 "node_modules\\node-inspector\\node_modules\\lodash\\utility\\mixin.js" +IDS_1557 "node_modules\\node-inspector\\node_modules\\lodash\\utility\\noop.js" +IDS_1558 "node_modules\\node-inspector\\node_modules\\lodash\\utility\\property.js" +IDS_1559 "node_modules\\node-inspector\\node_modules\\lodash\\utility\\propertyOf.js" +IDS_1560 "node_modules\\node-inspector\\node_modules\\lodash\\utility\\range.js" +IDS_1561 "node_modules\\node-inspector\\node_modules\\lodash\\utility\\times.js" +IDS_1562 "node_modules\\node-inspector\\node_modules\\lodash\\utility\\uniqueId.js" +IDS_1563 "node_modules\\node-inspector\\node_modules\\lru-cache\\.npmignore" +IDS_1564 "node_modules\\node-inspector\\node_modules\\lru-cache\\.travis.yml" +IDS_1565 "node_modules\\node-inspector\\node_modules\\lru-cache\\CONTRIBUTORS" +IDS_1566 "node_modules\\node-inspector\\node_modules\\lru-cache\\LICENSE" +IDS_1567 "node_modules\\node-inspector\\node_modules\\lru-cache\\package.json" +IDS_1568 "node_modules\\node-inspector\\node_modules\\lru-cache\\README.md" +IDS_1569 "node_modules\\node-inspector\\node_modules\\lru-cache\\lib\\lru-cache.js" +IDS_1570 "node_modules\\node-inspector\\node_modules\\lru-cache\\test\\basic.js" +IDS_1571 "node_modules\\node-inspector\\node_modules\\lru-cache\\test\\foreach.js" +IDS_1572 "node_modules\\node-inspector\\node_modules\\lru-cache\\test\\memory-leak.js" +IDS_1573 "node_modules\\node-inspector\\node_modules\\lru-cache\\test\\serialize.js" +IDS_1574 "node_modules\\node-inspector\\node_modules\\merge-descriptors\\.npmignore" +IDS_1575 "node_modules\\node-inspector\\node_modules\\merge-descriptors\\component.json" +IDS_1576 "node_modules\\node-inspector\\node_modules\\merge-descriptors\\index.js" +IDS_1577 "node_modules\\node-inspector\\node_modules\\merge-descriptors\\package.json" +IDS_1578 "node_modules\\node-inspector\\node_modules\\merge-descriptors\\README.md" +IDS_1579 "node_modules\\node-inspector\\node_modules\\method-override\\.npmignore" +IDS_1580 "node_modules\\node-inspector\\node_modules\\method-override\\.travis.yml" +IDS_1581 "node_modules\\node-inspector\\node_modules\\method-override\\index.js" +IDS_1582 "node_modules\\node-inspector\\node_modules\\method-override\\Makefile" +IDS_1583 "node_modules\\node-inspector\\node_modules\\method-override\\package.json" +IDS_1584 "node_modules\\node-inspector\\node_modules\\method-override\\README.md" +IDS_1585 "node_modules\\node-inspector\\node_modules\\methods\\History.md" +IDS_1586 "node_modules\\node-inspector\\node_modules\\methods\\index.js" +IDS_1587 "node_modules\\node-inspector\\node_modules\\methods\\package.json" +IDS_1588 "node_modules\\node-inspector\\node_modules\\methods\\Readme.md" +IDS_1589 "node_modules\\node-inspector\\node_modules\\mime\\LICENSE" +IDS_1590 "node_modules\\node-inspector\\node_modules\\mime\\mime.js" +IDS_1591 "node_modules\\node-inspector\\node_modules\\mime\\package.json" +IDS_1592 "node_modules\\node-inspector\\node_modules\\mime\\README.md" +IDS_1593 "node_modules\\node-inspector\\node_modules\\mime\\test.js" +IDS_1594 "node_modules\\node-inspector\\node_modules\\mime\\types\\mime.types" +IDS_1595 "node_modules\\node-inspector\\node_modules\\mime\\types\\node.types" +IDS_1596 "node_modules\\node-inspector\\node_modules\\minimatch\\.npmignore" +IDS_1597 "node_modules\\node-inspector\\node_modules\\minimatch\\LICENSE" +IDS_1598 "node_modules\\node-inspector\\node_modules\\minimatch\\minimatch.js" +IDS_1599 "node_modules\\node-inspector\\node_modules\\minimatch\\package.json" +IDS_1600 "node_modules\\node-inspector\\node_modules\\minimatch\\README.md" +IDS_1601 "node_modules\\node-inspector\\node_modules\\minimatch\\test\\basic.js" +IDS_1602 "node_modules\\node-inspector\\node_modules\\minimatch\\test\\brace-expand.js" +IDS_1603 "node_modules\\node-inspector\\node_modules\\minimatch\\test\\caching.js" +IDS_1604 "node_modules\\node-inspector\\node_modules\\minimatch\\test\\defaults.js" +IDS_1605 "node_modules\\node-inspector\\node_modules\\minimatch\\test\\extglob-ending-with-state-char.js" +IDS_1606 "node_modules\\node-inspector\\node_modules\\minimist\\.travis.yml" +IDS_1607 "node_modules\\node-inspector\\node_modules\\minimist\\index.js" +IDS_1608 "node_modules\\node-inspector\\node_modules\\minimist\\LICENSE" +IDS_1609 "node_modules\\node-inspector\\node_modules\\minimist\\package.json" +IDS_1610 "node_modules\\node-inspector\\node_modules\\minimist\\readme.markdown" +IDS_1611 "node_modules\\node-inspector\\node_modules\\minimist\\example\\parse.js" +IDS_1612 "node_modules\\node-inspector\\node_modules\\minimist\\test\\bool.js" +IDS_1613 "node_modules\\node-inspector\\node_modules\\minimist\\test\\dash.js" +IDS_1614 "node_modules\\node-inspector\\node_modules\\minimist\\test\\default_bool.js" +IDS_1615 "node_modules\\node-inspector\\node_modules\\minimist\\test\\dotted.js" +IDS_1616 "node_modules\\node-inspector\\node_modules\\minimist\\test\\long.js" +IDS_1617 "node_modules\\node-inspector\\node_modules\\minimist\\test\\num.js" +IDS_1618 "node_modules\\node-inspector\\node_modules\\minimist\\test\\parse.js" +IDS_1619 "node_modules\\node-inspector\\node_modules\\minimist\\test\\parse_modified.js" +IDS_1620 "node_modules\\node-inspector\\node_modules\\minimist\\test\\short.js" +IDS_1621 "node_modules\\node-inspector\\node_modules\\minimist\\test\\whitespace.js" +IDS_1622 "node_modules\\node-inspector\\node_modules\\mkdirp\\.npmignore" +IDS_1623 "node_modules\\node-inspector\\node_modules\\mkdirp\\.travis.yml" +IDS_1624 "node_modules\\node-inspector\\node_modules\\mkdirp\\index.js" +IDS_1625 "node_modules\\node-inspector\\node_modules\\mkdirp\\LICENSE" +IDS_1626 "node_modules\\node-inspector\\node_modules\\mkdirp\\package.json" +IDS_1627 "node_modules\\node-inspector\\node_modules\\mkdirp\\readme.markdown" +IDS_1628 "node_modules\\node-inspector\\node_modules\\mkdirp\\bin\\cmd.js" +IDS_1629 "node_modules\\node-inspector\\node_modules\\mkdirp\\bin\\usage.txt" +IDS_1630 "node_modules\\node-inspector\\node_modules\\mkdirp\\examples\\pow.js" +IDS_1631 "node_modules\\node-inspector\\node_modules\\mkdirp\\test\\chmod.js" +IDS_1632 "node_modules\\node-inspector\\node_modules\\mkdirp\\test\\clobber.js" +IDS_1633 "node_modules\\node-inspector\\node_modules\\mkdirp\\test\\mkdirp.js" +IDS_1634 "node_modules\\node-inspector\\node_modules\\mkdirp\\test\\perm.js" +IDS_1635 "node_modules\\node-inspector\\node_modules\\mkdirp\\test\\perm_sync.js" +IDS_1636 "node_modules\\node-inspector\\node_modules\\mkdirp\\test\\race.js" +IDS_1637 "node_modules\\node-inspector\\node_modules\\mkdirp\\test\\rel.js" +IDS_1638 "node_modules\\node-inspector\\node_modules\\mkdirp\\test\\return.js" +IDS_1639 "node_modules\\node-inspector\\node_modules\\mkdirp\\test\\return_sync.js" +IDS_1640 "node_modules\\node-inspector\\node_modules\\mkdirp\\test\\root.js" +IDS_1641 "node_modules\\node-inspector\\node_modules\\mkdirp\\test\\sync.js" +IDS_1642 "node_modules\\node-inspector\\node_modules\\mkdirp\\test\\umask.js" +IDS_1643 "node_modules\\node-inspector\\node_modules\\mkdirp\\test\\umask_sync.js" +IDS_1644 "node_modules\\node-inspector\\node_modules\\mocha\\CHANGELOG.md" +IDS_1645 "node_modules\\node-inspector\\node_modules\\mocha\\index.js" +IDS_1646 "node_modules\\node-inspector\\node_modules\\mocha\\LICENSE" +IDS_1647 "node_modules\\node-inspector\\node_modules\\mocha\\mocha.css" +IDS_1648 "node_modules\\node-inspector\\node_modules\\mocha\\mocha.js" +IDS_1649 "node_modules\\node-inspector\\node_modules\\mocha\\package.json" +IDS_1650 "node_modules\\node-inspector\\node_modules\\mocha\\README.md" +IDS_1651 "node_modules\\node-inspector\\node_modules\\mocha\\bin\\.eslintrc" +IDS_1652 "node_modules\\node-inspector\\node_modules\\mocha\\bin\\mocha" +IDS_1653 "node_modules\\node-inspector\\node_modules\\mocha\\bin\\options.js" +IDS_1654 "node_modules\\node-inspector\\node_modules\\mocha\\bin\\_mocha" +IDS_1655 "node_modules\\node-inspector\\node_modules\\mocha\\images\\error.png" +IDS_1656 "node_modules\\node-inspector\\node_modules\\mocha\\images\\ok.png" +IDS_1657 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\context.js" +IDS_1658 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\hook.js" +IDS_1659 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\mocha.js" +IDS_1660 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\ms.js" +IDS_1661 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\pending.js" +IDS_1662 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\runnable.js" +IDS_1663 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\runner.js" +IDS_1664 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\suite.js" +IDS_1665 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\template.html" +IDS_1666 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\test.js" +IDS_1667 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\utils.js" +IDS_1668 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\browser\\debug.js" +IDS_1669 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\browser\\events.js" +IDS_1670 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\browser\\progress.js" +IDS_1671 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\browser\\tty.js" +IDS_1672 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\interfaces\\bdd.js" +IDS_1673 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\interfaces\\common.js" +IDS_1674 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\interfaces\\exports.js" +IDS_1675 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\interfaces\\index.js" +IDS_1676 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\interfaces\\qunit.js" +IDS_1677 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\interfaces\\tdd.js" +IDS_1678 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\base.js" +IDS_1679 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\doc.js" +IDS_1680 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\dot.js" +IDS_1681 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\html-cov.js" +IDS_1682 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\html.js" +IDS_1683 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\index.js" +IDS_1684 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\json-cov.js" +IDS_1685 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\json-stream.js" +IDS_1686 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\json.js" +IDS_1687 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\landing.js" +IDS_1688 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\list.js" +IDS_1689 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\markdown.js" +IDS_1690 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\min.js" +IDS_1691 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\nyan.js" +IDS_1692 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\progress.js" +IDS_1693 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\spec.js" +IDS_1694 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\tap.js" +IDS_1695 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\xunit.js" +IDS_1696 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\templates\\coverage.jade" +IDS_1697 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\templates\\menu.jade" +IDS_1698 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\templates\\script.html" +IDS_1699 "node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\templates\\style.html" +IDS_1700 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\.bin\\mkdirp" +IDS_1701 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\.bin\\mkdirp.cmd" +IDS_1702 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\commander\\index.js" +IDS_1703 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\commander\\package.json" +IDS_1704 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\commander\\Readme.md" +IDS_1705 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\.jshintrc" +IDS_1706 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\.npmignore" +IDS_1707 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\bower.json" +IDS_1708 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\browser.js" +IDS_1709 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\component.json" +IDS_1710 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\debug.js" +IDS_1711 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\History.md" +IDS_1712 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\Makefile" +IDS_1713 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\node.js" +IDS_1714 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\package.json" +IDS_1715 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\Readme.md" +IDS_1716 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\.npmignore" +IDS_1717 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\.travis.yml" +IDS_1718 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\glob.js" +IDS_1719 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\LICENSE" +IDS_1720 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\package.json" +IDS_1721 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\README.md" +IDS_1722 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\examples\\g.js" +IDS_1723 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\examples\\usr-local.js" +IDS_1724 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\00-setup.js" +IDS_1725 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\bash-comparison.js" +IDS_1726 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\bash-results.json" +IDS_1727 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\cwd-test.js" +IDS_1728 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\globstar-match.js" +IDS_1729 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\mark.js" +IDS_1730 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\nocase-nomagic.js" +IDS_1731 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\pause-resume.js" +IDS_1732 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\root-nomount.js" +IDS_1733 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\root.js" +IDS_1734 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\stat.js" +IDS_1735 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\zz-cleanup.js" +IDS_1736 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\.npmignore" +IDS_1737 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\LICENSE" +IDS_1738 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\minimatch.js" +IDS_1739 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\package.json" +IDS_1740 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\README.md" +IDS_1741 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\test\\basic.js" +IDS_1742 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\test\\brace-expand.js" +IDS_1743 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\test\\caching.js" +IDS_1744 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\test\\defaults.js" +IDS_1745 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\test\\extglob-ending-with-state-char.js" +IDS_1746 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\.travis.yml" +IDS_1747 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\index.js" +IDS_1748 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\LICENSE" +IDS_1749 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\package.json" +IDS_1750 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\readme.markdown" +IDS_1751 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\example\\parse.js" +IDS_1752 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\test\\dash.js" +IDS_1753 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\test\\default_bool.js" +IDS_1754 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\test\\dotted.js" +IDS_1755 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\test\\long.js" +IDS_1756 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\test\\parse.js" +IDS_1757 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\test\\parse_modified.js" +IDS_1758 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\test\\short.js" +IDS_1759 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\test\\whitespace.js" +IDS_1760 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\.travis.yml" +IDS_1761 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\index.js" +IDS_1762 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\LICENSE" +IDS_1763 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\package.json" +IDS_1764 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\readme.markdown" +IDS_1765 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\bin\\cmd.js" +IDS_1766 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\bin\\usage.txt" +IDS_1767 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\examples\\pow.js" +IDS_1768 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\chmod.js" +IDS_1769 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\clobber.js" +IDS_1770 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\mkdirp.js" +IDS_1771 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\opts_fs.js" +IDS_1772 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\opts_fs_sync.js" +IDS_1773 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\perm.js" +IDS_1774 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\perm_sync.js" +IDS_1775 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\race.js" +IDS_1776 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\rel.js" +IDS_1777 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\return.js" +IDS_1778 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\return_sync.js" +IDS_1779 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\root.js" +IDS_1780 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\sync.js" +IDS_1781 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\umask.js" +IDS_1782 "node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\umask_sync.js" +IDS_1783 "node_modules\\node-inspector\\node_modules\\morgan\\.npmignore" +IDS_1784 "node_modules\\node-inspector\\node_modules\\morgan\\index.js" +IDS_1785 "node_modules\\node-inspector\\node_modules\\morgan\\Makefile" +IDS_1786 "node_modules\\node-inspector\\node_modules\\morgan\\package.json" +IDS_1787 "node_modules\\node-inspector\\node_modules\\morgan\\README.md" +IDS_1788 "node_modules\\node-inspector\\node_modules\\morgan\\node_modules\\bytes\\.npmignore" +IDS_1789 "node_modules\\node-inspector\\node_modules\\morgan\\node_modules\\bytes\\component.json" +IDS_1790 "node_modules\\node-inspector\\node_modules\\morgan\\node_modules\\bytes\\History.md" +IDS_1791 "node_modules\\node-inspector\\node_modules\\morgan\\node_modules\\bytes\\index.js" +IDS_1792 "node_modules\\node-inspector\\node_modules\\morgan\\node_modules\\bytes\\Makefile" +IDS_1793 "node_modules\\node-inspector\\node_modules\\morgan\\node_modules\\bytes\\package.json" +IDS_1794 "node_modules\\node-inspector\\node_modules\\morgan\\node_modules\\bytes\\Readme.md" +IDS_1795 "node_modules\\node-inspector\\node_modules\\ms\\.npmignore" +IDS_1796 "node_modules\\node-inspector\\node_modules\\ms\\History.md" +IDS_1797 "node_modules\\node-inspector\\node_modules\\ms\\index.js" +IDS_1798 "node_modules\\node-inspector\\node_modules\\ms\\LICENSE" +IDS_1799 "node_modules\\node-inspector\\node_modules\\ms\\package.json" +IDS_1800 "node_modules\\node-inspector\\node_modules\\ms\\README.md" +IDS_1801 "node_modules\\node-inspector\\node_modules\\multiparty\\.jshintrc" +IDS_1802 "node_modules\\node-inspector\\node_modules\\multiparty\\.npmignore" +IDS_1803 "node_modules\\node-inspector\\node_modules\\multiparty\\.travis.yml" +IDS_1804 "node_modules\\node-inspector\\node_modules\\multiparty\\CHANGELOG.md" +IDS_1805 "node_modules\\node-inspector\\node_modules\\multiparty\\index.js" +IDS_1806 "node_modules\\node-inspector\\node_modules\\multiparty\\LICENSE" +IDS_1807 "node_modules\\node-inspector\\node_modules\\multiparty\\package.json" +IDS_1808 "node_modules\\node-inspector\\node_modules\\multiparty\\README.md" +IDS_1809 "node_modules\\node-inspector\\node_modules\\multiparty\\examples\\azureblobstorage.js" +IDS_1810 "node_modules\\node-inspector\\node_modules\\multiparty\\examples\\s3.js" +IDS_1811 "node_modules\\node-inspector\\node_modules\\multiparty\\examples\\upload.js" +IDS_1812 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\bench-multipart-parser.js" +IDS_1813 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\record.js" +IDS_1814 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\test.js" +IDS_1815 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\multipart.js" +IDS_1816 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\multi_video.upload" +IDS_1817 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\file\\beta-sticker-1.png" +IDS_1818 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\file\\binaryfile.tar.gz" +IDS_1819 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\file\\blank.gif" +IDS_1820 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\file\\funkyfilename.txt" +IDS_1821 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\file\\menu_separator.png" +IDS_1822 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\file\\pf1y5.png" +IDS_1823 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\file\\plain.txt" +IDS_1824 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\beta-sticker-1.png.http" +IDS_1825 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\binaryfile.tar.gz.http" +IDS_1826 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\blank.gif.http" +IDS_1827 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\menu_seperator.png.http" +IDS_1828 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\pf1y5.png.http" +IDS_1829 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\plain.txt.http" +IDS_1830 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\no-filename\\filename-name.http" +IDS_1831 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\no-filename\\generic.http" +IDS_1832 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\preamble\\crlf.http" +IDS_1833 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\preamble\\preamble.http" +IDS_1834 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\info.md" +IDS_1835 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\osx-chrome-13.http" +IDS_1836 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\osx-firefox-3.6.http" +IDS_1837 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\osx-safari-5.http" +IDS_1838 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\xp-chrome-12.http" +IDS_1839 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\xp-ie-7.http" +IDS_1840 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\xp-ie-8.http" +IDS_1841 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\xp-safari-5.http" +IDS_1842 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\workarounds\\missing-hyphens1.http" +IDS_1843 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\workarounds\\missing-hyphens2.http" +IDS_1844 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\js\\encoding.js" +IDS_1845 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\js\\no-filename.js" +IDS_1846 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\js\\preamble.js" +IDS_1847 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\js\\special-chars-in-filename.js" +IDS_1848 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\js\\workarounds.js" +IDS_1849 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\standalone\\test-connection-aborted.js" +IDS_1850 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\standalone\\test-content-transfer-encoding.js" +IDS_1851 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\standalone\\test-invalid.js" +IDS_1852 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\standalone\\test-issue-15.js" +IDS_1853 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\standalone\\test-issue-19.js" +IDS_1854 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\standalone\\test-issue-21.js" +IDS_1855 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\standalone\\test-issue-4.js" +IDS_1856 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\standalone\\test-issue-46.js" +IDS_1857 "node_modules\\node-inspector\\node_modules\\multiparty\\test\\standalone\\test-issue-5.js" +IDS_1858 "node_modules\\node-inspector\\node_modules\\nan\\.dntrc" +IDS_1859 "node_modules\\node-inspector\\node_modules\\nan\\include_dirs.js" +IDS_1860 "node_modules\\node-inspector\\node_modules\\nan\\LICENSE" +IDS_1861 "node_modules\\node-inspector\\node_modules\\nan\\nan.h" +IDS_1862 "node_modules\\node-inspector\\node_modules\\nan\\package.json" +IDS_1863 "node_modules\\node-inspector\\node_modules\\nan\\README.md" +IDS_1864 "node_modules\\node-inspector\\node_modules\\nan\\build\\config.gypi" +IDS_1865 "node_modules\\node-inspector\\node_modules\\ncp\\.npmignore" +IDS_1866 "node_modules\\node-inspector\\node_modules\\ncp\\.travis.yml" +IDS_1867 "node_modules\\node-inspector\\node_modules\\ncp\\LICENSE.md" +IDS_1868 "node_modules\\node-inspector\\node_modules\\ncp\\package.json" +IDS_1869 "node_modules\\node-inspector\\node_modules\\ncp\\README.md" +IDS_1870 "node_modules\\node-inspector\\node_modules\\ncp\\bin\\ncp" +IDS_1871 "node_modules\\node-inspector\\node_modules\\ncp\\lib\\ncp.js" +IDS_1872 "node_modules\\node-inspector\\node_modules\\ncp\\test\\ncp-test.js" +IDS_1873 "node_modules\\node-inspector\\node_modules\\ncp\\test\\fixtures\\src\\a" +IDS_1874 "node_modules\\node-inspector\\node_modules\\ncp\\test\\fixtures\\src\\b" +IDS_1875 "node_modules\\node-inspector\\node_modules\\ncp\\test\\fixtures\\src\\c" +IDS_1876 "node_modules\\node-inspector\\node_modules\\ncp\\test\\fixtures\\src\\d" +IDS_1877 "node_modules\\node-inspector\\node_modules\\ncp\\test\\fixtures\\src\\e" +IDS_1878 "node_modules\\node-inspector\\node_modules\\ncp\\test\\fixtures\\src\\f" +IDS_1879 "node_modules\\node-inspector\\node_modules\\ncp\\test\\fixtures\\src\\sub\\a" +IDS_1880 "node_modules\\node-inspector\\node_modules\\ncp\\test\\fixtures\\src\\sub\\b" +IDS_1881 "node_modules\\node-inspector\\node_modules\\negotiator\\LICENSE" +IDS_1882 "node_modules\\node-inspector\\node_modules\\negotiator\\package.json" +IDS_1883 "node_modules\\node-inspector\\node_modules\\negotiator\\readme.md" +IDS_1884 "node_modules\\node-inspector\\node_modules\\negotiator\\examples\\accept.js" +IDS_1885 "node_modules\\node-inspector\\node_modules\\negotiator\\examples\\charset.js" +IDS_1886 "node_modules\\node-inspector\\node_modules\\negotiator\\examples\\encoding.js" +IDS_1887 "node_modules\\node-inspector\\node_modules\\negotiator\\examples\\language.js" +IDS_1888 "node_modules\\node-inspector\\node_modules\\negotiator\\lib\\charset.js" +IDS_1889 "node_modules\\node-inspector\\node_modules\\negotiator\\lib\\encoding.js" +IDS_1890 "node_modules\\node-inspector\\node_modules\\negotiator\\lib\\language.js" +IDS_1891 "node_modules\\node-inspector\\node_modules\\negotiator\\lib\\mediaType.js" +IDS_1892 "node_modules\\node-inspector\\node_modules\\negotiator\\lib\\negotiator.js" +IDS_1893 "node_modules\\node-inspector\\node_modules\\negotiator\\test\\charset.js" +IDS_1894 "node_modules\\node-inspector\\node_modules\\negotiator\\test\\encoding.js" +IDS_1895 "node_modules\\node-inspector\\node_modules\\negotiator\\test\\language.js" +IDS_1896 "node_modules\\node-inspector\\node_modules\\negotiator\\test\\mediaType.js" +IDS_1897 "node_modules\\node-inspector\\node_modules\\opener\\LICENSE.txt" +IDS_1898 "node_modules\\node-inspector\\node_modules\\opener\\opener.js" +IDS_1899 "node_modules\\node-inspector\\node_modules\\opener\\package.json" +IDS_1900 "node_modules\\node-inspector\\node_modules\\opener\\README.md" +IDS_1901 "node_modules\\node-inspector\\node_modules\\options\\.npmignore" +IDS_1902 "node_modules\\node-inspector\\node_modules\\options\\Makefile" +IDS_1903 "node_modules\\node-inspector\\node_modules\\options\\package.json" +IDS_1904 "node_modules\\node-inspector\\node_modules\\options\\README.md" +IDS_1905 "node_modules\\node-inspector\\node_modules\\options\\lib\\options.js" +IDS_1906 "node_modules\\node-inspector\\node_modules\\parseurl\\.npmignore" +IDS_1907 "node_modules\\node-inspector\\node_modules\\parseurl\\index.js" +IDS_1908 "node_modules\\node-inspector\\node_modules\\parseurl\\package.json" +IDS_1909 "node_modules\\node-inspector\\node_modules\\parseurl\\README.md" +IDS_1910 "node_modules\\node-inspector\\node_modules\\pause\\.npmignore" +IDS_1911 "node_modules\\node-inspector\\node_modules\\pause\\History.md" +IDS_1912 "node_modules\\node-inspector\\node_modules\\pause\\index.js" +IDS_1913 "node_modules\\node-inspector\\node_modules\\pause\\Makefile" +IDS_1914 "node_modules\\node-inspector\\node_modules\\pause\\package.json" +IDS_1915 "node_modules\\node-inspector\\node_modules\\pause\\Readme.md" +IDS_1916 "node_modules\\node-inspector\\node_modules\\qs\\.gitmodules" +IDS_1917 "node_modules\\node-inspector\\node_modules\\qs\\.npmignore" +IDS_1918 "node_modules\\node-inspector\\node_modules\\qs\\index.js" +IDS_1919 "node_modules\\node-inspector\\node_modules\\qs\\package.json" +IDS_1920 "node_modules\\node-inspector\\node_modules\\qs\\Readme.md" +IDS_1921 "node_modules\\node-inspector\\node_modules\\range-parser\\.npmignore" +IDS_1922 "node_modules\\node-inspector\\node_modules\\range-parser\\History.md" +IDS_1923 "node_modules\\node-inspector\\node_modules\\range-parser\\index.js" +IDS_1924 "node_modules\\node-inspector\\node_modules\\range-parser\\Makefile" +IDS_1925 "node_modules\\node-inspector\\node_modules\\range-parser\\package.json" +IDS_1926 "node_modules\\node-inspector\\node_modules\\range-parser\\Readme.md" +IDS_1927 "node_modules\\node-inspector\\node_modules\\raw-body\\.npmignore" +IDS_1928 "node_modules\\node-inspector\\node_modules\\raw-body\\.travis.yml" +IDS_1929 "node_modules\\node-inspector\\node_modules\\raw-body\\index.js" +IDS_1930 "node_modules\\node-inspector\\node_modules\\raw-body\\Makefile" +IDS_1931 "node_modules\\node-inspector\\node_modules\\raw-body\\package.json" +IDS_1932 "node_modules\\node-inspector\\node_modules\\raw-body\\README.md" +IDS_1933 "node_modules\\node-inspector\\node_modules\\rc\\.npmignore" +IDS_1934 "node_modules\\node-inspector\\node_modules\\rc\\browser.js" +IDS_1935 "node_modules\\node-inspector\\node_modules\\rc\\index.js" +IDS_1936 "node_modules\\node-inspector\\node_modules\\rc\\LICENSE.APACHE2" +IDS_1937 "node_modules\\node-inspector\\node_modules\\rc\\LICENSE.BSD" +IDS_1938 "node_modules\\node-inspector\\node_modules\\rc\\LICENSE.MIT" +IDS_1939 "node_modules\\node-inspector\\node_modules\\rc\\package.json" +IDS_1940 "node_modules\\node-inspector\\node_modules\\rc\\README.md" +IDS_1941 "node_modules\\node-inspector\\node_modules\\rc\\lib\\utils.js" +IDS_1942 "node_modules\\node-inspector\\node_modules\\rc\\test\\ini.js" +IDS_1943 "node_modules\\node-inspector\\node_modules\\rc\\test\\test.js" +IDS_1944 "node_modules\\node-inspector\\node_modules\\readable-stream\\.npmignore" +IDS_1945 "node_modules\\node-inspector\\node_modules\\readable-stream\\duplex.js" +IDS_1946 "node_modules\\node-inspector\\node_modules\\readable-stream\\float.patch" +IDS_1947 "node_modules\\node-inspector\\node_modules\\readable-stream\\LICENSE" +IDS_1948 "node_modules\\node-inspector\\node_modules\\readable-stream\\package.json" +IDS_1949 "node_modules\\node-inspector\\node_modules\\readable-stream\\passthrough.js" +IDS_1950 "node_modules\\node-inspector\\node_modules\\readable-stream\\readable.js" +IDS_1951 "node_modules\\node-inspector\\node_modules\\readable-stream\\README.md" +IDS_1952 "node_modules\\node-inspector\\node_modules\\readable-stream\\transform.js" +IDS_1953 "node_modules\\node-inspector\\node_modules\\readable-stream\\writable.js" +IDS_1954 "node_modules\\node-inspector\\node_modules\\readable-stream\\lib\\_stream_duplex.js" +IDS_1955 "node_modules\\node-inspector\\node_modules\\readable-stream\\lib\\_stream_passthrough.js" +IDS_1956 "node_modules\\node-inspector\\node_modules\\readable-stream\\lib\\_stream_readable.js" +IDS_1957 "node_modules\\node-inspector\\node_modules\\readable-stream\\lib\\_stream_transform.js" +IDS_1958 "node_modules\\node-inspector\\node_modules\\readable-stream\\lib\\_stream_writable.js" +IDS_1959 "node_modules\\node-inspector\\node_modules\\response-time\\.npmignore" +IDS_1960 "node_modules\\node-inspector\\node_modules\\response-time\\index.js" +IDS_1961 "node_modules\\node-inspector\\node_modules\\response-time\\Makefile" +IDS_1962 "node_modules\\node-inspector\\node_modules\\response-time\\package.json" +IDS_1963 "node_modules\\node-inspector\\node_modules\\response-time\\README.md" +IDS_1964 "node_modules\\node-inspector\\node_modules\\rimraf\\AUTHORS" +IDS_1965 "node_modules\\node-inspector\\node_modules\\rimraf\\bin.js" +IDS_1966 "node_modules\\node-inspector\\node_modules\\rimraf\\LICENSE" +IDS_1967 "node_modules\\node-inspector\\node_modules\\rimraf\\package.json" +IDS_1968 "node_modules\\node-inspector\\node_modules\\rimraf\\README.md" +IDS_1969 "node_modules\\node-inspector\\node_modules\\rimraf\\rimraf.js" +IDS_1970 "node_modules\\node-inspector\\node_modules\\rimraf\\test\\run.sh" +IDS_1971 "node_modules\\node-inspector\\node_modules\\rimraf\\test\\setup.sh" +IDS_1972 "node_modules\\node-inspector\\node_modules\\rimraf\\test\\test-async.js" +IDS_1973 "node_modules\\node-inspector\\node_modules\\rimraf\\test\\test-sync.js" +IDS_1974 "node_modules\\node-inspector\\node_modules\\scmp\\.npmignore" +IDS_1975 "node_modules\\node-inspector\\node_modules\\scmp\\.travis.yml" +IDS_1976 "node_modules\\node-inspector\\node_modules\\scmp\\index.js" +IDS_1977 "node_modules\\node-inspector\\node_modules\\scmp\\package.json" +IDS_1978 "node_modules\\node-inspector\\node_modules\\scmp\\README.md" +IDS_1979 "node_modules\\node-inspector\\node_modules\\scmp\\benchmark\\benchmark.js" +IDS_1980 "node_modules\\node-inspector\\node_modules\\scmp\\test\\test.js" +IDS_1981 "node_modules\\node-inspector\\node_modules\\send\\.npmignore" +IDS_1982 "node_modules\\node-inspector\\node_modules\\send\\History.md" +IDS_1983 "node_modules\\node-inspector\\node_modules\\send\\index.js" +IDS_1984 "node_modules\\node-inspector\\node_modules\\send\\package.json" +IDS_1985 "node_modules\\node-inspector\\node_modules\\send\\Readme.md" +IDS_1986 "node_modules\\node-inspector\\node_modules\\send\\lib\\send.js" +IDS_1987 "node_modules\\node-inspector\\node_modules\\send\\lib\\utils.js" +IDS_1988 "node_modules\\node-inspector\\node_modules\\send\\node_modules\\debug\\debug.js" +IDS_1989 "node_modules\\node-inspector\\node_modules\\send\\node_modules\\debug\\package.json" +IDS_1990 "node_modules\\node-inspector\\node_modules\\send\\node_modules\\debug\\Readme.md" +IDS_1991 "node_modules\\node-inspector\\node_modules\\send\\node_modules\\debug\\lib\\debug.js" +IDS_1992 "node_modules\\node-inspector\\node_modules\\serve-index\\.npmignore" +IDS_1993 "node_modules\\node-inspector\\node_modules\\serve-index\\.travis.yml" +IDS_1994 "node_modules\\node-inspector\\node_modules\\serve-index\\index.js" +IDS_1995 "node_modules\\node-inspector\\node_modules\\serve-index\\LICENSE" +IDS_1996 "node_modules\\node-inspector\\node_modules\\serve-index\\package.json" +IDS_1997 "node_modules\\node-inspector\\node_modules\\serve-index\\Readme.md" +IDS_1998 "node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\.travis.yml" +IDS_1999 "node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\LICENSE" +IDS_2000 "node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\package.json" +IDS_2001 "node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\readme.md" +IDS_2002 "node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\examples\\accept.js" +IDS_2003 "node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\examples\\charset.js" +IDS_2004 "node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\examples\\encoding.js" +IDS_2005 "node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\examples\\language.js" +IDS_2006 "node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\charset.js" +IDS_2007 "node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\encoding.js" +IDS_2008 "node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\language.js" +IDS_2009 "node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\mediaType.js" +IDS_2010 "node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\negotiator.js" +IDS_2011 "node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\test\\charset.js" +IDS_2012 "node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\test\\encoding.js" +IDS_2013 "node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\test\\language.js" +IDS_2014 "node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\test\\mediaType.js" +IDS_2015 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\directory.html" +IDS_2016 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\style.css" +IDS_2017 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\application_xp.png" +IDS_2018 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\application_xp_terminal.png" +IDS_2019 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\box.png" +IDS_2020 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\cd.png" +IDS_2021 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\controller.png" +IDS_2022 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\drive.png" +IDS_2023 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\film.png" +IDS_2024 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\folder.png" +IDS_2025 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\font.png" +IDS_2026 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\image.png" +IDS_2027 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\map.png" +IDS_2028 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page.png" +IDS_2029 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_add.png" +IDS_2030 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_attach.png" +IDS_2031 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_code.png" +IDS_2032 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_copy.png" +IDS_2033 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_delete.png" +IDS_2034 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_edit.png" +IDS_2035 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_error.png" +IDS_2036 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_excel.png" +IDS_2037 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_find.png" +IDS_2038 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_gear.png" +IDS_2039 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_go.png" +IDS_2040 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_green.png" +IDS_2041 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_key.png" +IDS_2042 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_lightning.png" +IDS_2043 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_link.png" +IDS_2044 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_paintbrush.png" +IDS_2045 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_paste.png" +IDS_2046 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_red.png" +IDS_2047 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_refresh.png" +IDS_2048 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_save.png" +IDS_2049 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white.png" +IDS_2050 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_acrobat.png" +IDS_2051 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_actionscript.png" +IDS_2052 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_add.png" +IDS_2053 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_c.png" +IDS_2054 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_camera.png" +IDS_2055 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_cd.png" +IDS_2056 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_code.png" +IDS_2057 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_code_red.png" +IDS_2058 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_coldfusion.png" +IDS_2059 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_compressed.png" +IDS_2060 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_copy.png" +IDS_2061 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_cplusplus.png" +IDS_2062 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_csharp.png" +IDS_2063 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_cup.png" +IDS_2064 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_database.png" +IDS_2065 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_delete.png" +IDS_2066 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_dvd.png" +IDS_2067 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_edit.png" +IDS_2068 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_error.png" +IDS_2069 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_excel.png" +IDS_2070 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_find.png" +IDS_2071 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_flash.png" +IDS_2072 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_freehand.png" +IDS_2073 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_gear.png" +IDS_2074 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_get.png" +IDS_2075 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_go.png" +IDS_2076 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_h.png" +IDS_2077 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_horizontal.png" +IDS_2078 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_key.png" +IDS_2079 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_lightning.png" +IDS_2080 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_link.png" +IDS_2081 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_magnify.png" +IDS_2082 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_medal.png" +IDS_2083 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_office.png" +IDS_2084 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_paint.png" +IDS_2085 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_paintbrush.png" +IDS_2086 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_paste.png" +IDS_2087 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_php.png" +IDS_2088 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_picture.png" +IDS_2089 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_powerpoint.png" +IDS_2090 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_put.png" +IDS_2091 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_ruby.png" +IDS_2092 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_stack.png" +IDS_2093 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_star.png" +IDS_2094 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_swoosh.png" +IDS_2095 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_text.png" +IDS_2096 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_text_width.png" +IDS_2097 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_tux.png" +IDS_2098 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_vector.png" +IDS_2099 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_visualstudio.png" +IDS_2100 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_width.png" +IDS_2101 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_word.png" +IDS_2102 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_world.png" +IDS_2103 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_wrench.png" +IDS_2104 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_zip.png" +IDS_2105 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_word.png" +IDS_2106 "node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_world.png" +IDS_2107 "node_modules\\node-inspector\\node_modules\\serve-static\\.npmignore" +IDS_2108 "node_modules\\node-inspector\\node_modules\\serve-static\\.travis.yml" +IDS_2109 "node_modules\\node-inspector\\node_modules\\serve-static\\History.md" +IDS_2110 "node_modules\\node-inspector\\node_modules\\serve-static\\index.js" +IDS_2111 "node_modules\\node-inspector\\node_modules\\serve-static\\LICENSE" +IDS_2112 "node_modules\\node-inspector\\node_modules\\serve-static\\package.json" +IDS_2113 "node_modules\\node-inspector\\node_modules\\serve-static\\Readme.md" +IDS_2114 "node_modules\\node-inspector\\node_modules\\setimmediate\\LICENSE.txt" +IDS_2115 "node_modules\\node-inspector\\node_modules\\setimmediate\\package.json" +IDS_2116 "node_modules\\node-inspector\\node_modules\\setimmediate\\README.md" +IDS_2117 "node_modules\\node-inspector\\node_modules\\setimmediate\\setImmediate.js" +IDS_2118 "node_modules\\node-inspector\\node_modules\\setimmediate\\qUnitTest\\runner.htm" +IDS_2119 "node_modules\\node-inspector\\node_modules\\setimmediate\\qUnitTest\\selfClose.htm" +IDS_2120 "node_modules\\node-inspector\\node_modules\\setimmediate\\qUnitTest\\tests.js" +IDS_2121 "node_modules\\node-inspector\\node_modules\\setimmediate\\qUnitTest\\worker.js" +IDS_2122 "node_modules\\node-inspector\\node_modules\\setimmediate\\qUnitTest\\lib\\qunit.css" +IDS_2123 "node_modules\\node-inspector\\node_modules\\setimmediate\\qUnitTest\\lib\\qunit.js" +IDS_2124 "node_modules\\node-inspector\\node_modules\\shelljs\\.documentup.json" +IDS_2125 "node_modules\\node-inspector\\node_modules\\shelljs\\.jshintrc" +IDS_2126 "node_modules\\node-inspector\\node_modules\\shelljs\\.npmignore" +IDS_2127 "node_modules\\node-inspector\\node_modules\\shelljs\\.travis.yml" +IDS_2128 "node_modules\\node-inspector\\node_modules\\shelljs\\global.js" +IDS_2129 "node_modules\\node-inspector\\node_modules\\shelljs\\LICENSE" +IDS_2130 "node_modules\\node-inspector\\node_modules\\shelljs\\make.js" +IDS_2131 "node_modules\\node-inspector\\node_modules\\shelljs\\package.json" +IDS_2132 "node_modules\\node-inspector\\node_modules\\shelljs\\README.md" +IDS_2133 "node_modules\\node-inspector\\node_modules\\shelljs\\shell.js" +IDS_2134 "node_modules\\node-inspector\\node_modules\\shelljs\\bin\\shjs" +IDS_2135 "node_modules\\node-inspector\\node_modules\\shelljs\\scripts\\generate-docs.js" +IDS_2136 "node_modules\\node-inspector\\node_modules\\shelljs\\scripts\\run-tests.js" +IDS_2137 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\cat.js" +IDS_2138 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\cd.js" +IDS_2139 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\chmod.js" +IDS_2140 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\common.js" +IDS_2141 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\cp.js" +IDS_2142 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\dirs.js" +IDS_2143 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\echo.js" +IDS_2144 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\error.js" +IDS_2145 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\exec.js" +IDS_2146 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\find.js" +IDS_2147 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\grep.js" +IDS_2148 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\ln.js" +IDS_2149 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\ls.js" +IDS_2150 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\mkdir.js" +IDS_2151 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\mv.js" +IDS_2152 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\popd.js" +IDS_2153 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\pushd.js" +IDS_2154 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\pwd.js" +IDS_2155 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\rm.js" +IDS_2156 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\sed.js" +IDS_2157 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\tempdir.js" +IDS_2158 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\test.js" +IDS_2159 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\to.js" +IDS_2160 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\toEnd.js" +IDS_2161 "node_modules\\node-inspector\\node_modules\\shelljs\\src\\which.js" +IDS_2162 "node_modules\\node-inspector\\node_modules\\sigmund\\bench.js" +IDS_2163 "node_modules\\node-inspector\\node_modules\\sigmund\\LICENSE" +IDS_2164 "node_modules\\node-inspector\\node_modules\\sigmund\\package.json" +IDS_2165 "node_modules\\node-inspector\\node_modules\\sigmund\\README.md" +IDS_2166 "node_modules\\node-inspector\\node_modules\\sigmund\\sigmund.js" +IDS_2167 "node_modules\\node-inspector\\node_modules\\sigmund\\test\\basic.js" +IDS_2168 "node_modules\\node-inspector\\node_modules\\static-favicon\\.npmignore" +IDS_2169 "node_modules\\node-inspector\\node_modules\\static-favicon\\.travis.yml" +IDS_2170 "node_modules\\node-inspector\\node_modules\\static-favicon\\favicon.ico" +IDS_2171 "node_modules\\node-inspector\\node_modules\\static-favicon\\index.js" +IDS_2172 "node_modules\\node-inspector\\node_modules\\static-favicon\\LICENSE" +IDS_2173 "node_modules\\node-inspector\\node_modules\\static-favicon\\package.json" +IDS_2174 "node_modules\\node-inspector\\node_modules\\static-favicon\\README.md" +IDS_2175 "node_modules\\node-inspector\\node_modules\\stream-counter\\.npmignore" +IDS_2176 "node_modules\\node-inspector\\node_modules\\stream-counter\\index.js" +IDS_2177 "node_modules\\node-inspector\\node_modules\\stream-counter\\package.json" +IDS_2178 "node_modules\\node-inspector\\node_modules\\stream-counter\\README.md" +IDS_2179 "node_modules\\node-inspector\\node_modules\\stream-counter\\test\\test.js" +IDS_2180 "node_modules\\node-inspector\\node_modules\\stream-counter\\test\\test.txt" +IDS_2181 "node_modules\\node-inspector\\node_modules\\string_decoder\\.npmignore" +IDS_2182 "node_modules\\node-inspector\\node_modules\\string_decoder\\index.js" +IDS_2183 "node_modules\\node-inspector\\node_modules\\string_decoder\\LICENSE" +IDS_2184 "node_modules\\node-inspector\\node_modules\\string_decoder\\package.json" +IDS_2185 "node_modules\\node-inspector\\node_modules\\string_decoder\\README.md" +IDS_2186 "node_modules\\node-inspector\\node_modules\\strip-json-comments\\cli.js" +IDS_2187 "node_modules\\node-inspector\\node_modules\\strip-json-comments\\license" +IDS_2188 "node_modules\\node-inspector\\node_modules\\strip-json-comments\\package.json" +IDS_2189 "node_modules\\node-inspector\\node_modules\\strip-json-comments\\readme.md" +IDS_2190 "node_modules\\node-inspector\\node_modules\\strip-json-comments\\strip-json-comments.js" +IDS_2191 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.jshintrc" +IDS_2192 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.npmignore" +IDS_2193 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.travis.yml" +IDS_2194 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\index.js" +IDS_2195 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\LICENSE" +IDS_2196 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\package.json" +IDS_2197 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\README.md" +IDS_2198 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\.name" +IDS_2199 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\data-uri.iml" +IDS_2200 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\encodings.xml" +IDS_2201 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\jsLibraryMappings.xml" +IDS_2202 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\misc.xml" +IDS_2203 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\modules.xml" +IDS_2204 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\vcs.xml" +IDS_2205 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\workspace.xml" +IDS_2206 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\inspectionProfiles\\profiles_settings.xml" +IDS_2207 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\inspectionProfiles\\Project_Default.xml" +IDS_2208 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\jsLinters\\jshint.xml" +IDS_2209 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\scopes\\scope_settings.xml" +IDS_2210 "node_modules\\node-inspector\\node_modules\\strong-data-uri\\test\\decode.js" +IDS_2211 "node_modules\\node-inspector\\node_modules\\supports-color\\cli.js" +IDS_2212 "node_modules\\node-inspector\\node_modules\\supports-color\\index.js" +IDS_2213 "node_modules\\node-inspector\\node_modules\\supports-color\\package.json" +IDS_2214 "node_modules\\node-inspector\\node_modules\\supports-color\\readme.md" +IDS_2215 "node_modules\\node-inspector\\node_modules\\tinycolor\\.npmignore" +IDS_2216 "node_modules\\node-inspector\\node_modules\\tinycolor\\example.js" +IDS_2217 "node_modules\\node-inspector\\node_modules\\tinycolor\\package.json" +IDS_2218 "node_modules\\node-inspector\\node_modules\\tinycolor\\README.md" +IDS_2219 "node_modules\\node-inspector\\node_modules\\tinycolor\\tinycolor.js" +IDS_2220 "node_modules\\node-inspector\\node_modules\\truncate\\.npmignore" +IDS_2221 "node_modules\\node-inspector\\node_modules\\truncate\\CHANGELOG.md" +IDS_2222 "node_modules\\node-inspector\\node_modules\\truncate\\package.json" +IDS_2223 "node_modules\\node-inspector\\node_modules\\truncate\\README.md" +IDS_2224 "node_modules\\node-inspector\\node_modules\\truncate\\test.js" +IDS_2225 "node_modules\\node-inspector\\node_modules\\truncate\\truncate.js" +IDS_2226 "node_modules\\node-inspector\\node_modules\\truncate\\scripts\\changelog" +IDS_2227 "node_modules\\node-inspector\\node_modules\\type-detect\\.npmignore" +IDS_2228 "node_modules\\node-inspector\\node_modules\\type-detect\\History.md" +IDS_2229 "node_modules\\node-inspector\\node_modules\\type-detect\\index.js" +IDS_2230 "node_modules\\node-inspector\\node_modules\\type-detect\\package.json" +IDS_2231 "node_modules\\node-inspector\\node_modules\\type-detect\\README.md" +IDS_2232 "node_modules\\node-inspector\\node_modules\\type-detect\\ReleaseNotes.md" +IDS_2233 "node_modules\\node-inspector\\node_modules\\type-detect\\lib\\type.js" +IDS_2234 "node_modules\\node-inspector\\node_modules\\uid2\\index.js" +IDS_2235 "node_modules\\node-inspector\\node_modules\\uid2\\LICENSE" +IDS_2236 "node_modules\\node-inspector\\node_modules\\uid2\\package.json" +IDS_2237 "node_modules\\node-inspector\\node_modules\\utils-merge\\.travis.yml" +IDS_2238 "node_modules\\node-inspector\\node_modules\\utils-merge\\index.js" +IDS_2239 "node_modules\\node-inspector\\node_modules\\utils-merge\\LICENSE" +IDS_2240 "node_modules\\node-inspector\\node_modules\\utils-merge\\package.json" +IDS_2241 "node_modules\\node-inspector\\node_modules\\utils-merge\\README.md" +IDS_2242 "node_modules\\node-inspector\\node_modules\\vhost\\.npmignore" +IDS_2243 "node_modules\\node-inspector\\node_modules\\vhost\\.travis.yml" +IDS_2244 "node_modules\\node-inspector\\node_modules\\vhost\\index.js" +IDS_2245 "node_modules\\node-inspector\\node_modules\\vhost\\Makefile" +IDS_2246 "node_modules\\node-inspector\\node_modules\\vhost\\package.json" +IDS_2247 "node_modules\\node-inspector\\node_modules\\vhost\\README.md" +IDS_2248 "node_modules\\node-inspector\\node_modules\\which\\LICENSE" +IDS_2249 "node_modules\\node-inspector\\node_modules\\which\\package.json" +IDS_2250 "node_modules\\node-inspector\\node_modules\\which\\README.md" +IDS_2251 "node_modules\\node-inspector\\node_modules\\which\\which.js" +IDS_2252 "node_modules\\node-inspector\\node_modules\\which\\bin\\which" +IDS_2253 "node_modules\\node-inspector\\node_modules\\ws\\.npmignore" +IDS_2254 "node_modules\\node-inspector\\node_modules\\ws\\.travis.yml" +IDS_2255 "node_modules\\node-inspector\\node_modules\\ws\\binding.gyp" +IDS_2256 "node_modules\\node-inspector\\node_modules\\ws\\builderror.log" +IDS_2257 "node_modules\\node-inspector\\node_modules\\ws\\History.md" +IDS_2258 "node_modules\\node-inspector\\node_modules\\ws\\index.js" +IDS_2259 "node_modules\\node-inspector\\node_modules\\ws\\Makefile" +IDS_2260 "node_modules\\node-inspector\\node_modules\\ws\\package.json" +IDS_2261 "node_modules\\node-inspector\\node_modules\\ws\\README.md" +IDS_2262 "node_modules\\node-inspector\\node_modules\\ws\\bin\\wscat" +IDS_2263 "node_modules\\node-inspector\\node_modules\\ws\\build\\binding.sln" +IDS_2264 "node_modules\\node-inspector\\node_modules\\ws\\build\\bufferutil.vcxproj" +IDS_2265 "node_modules\\node-inspector\\node_modules\\ws\\build\\bufferutil.vcxproj.filters" +IDS_2266 "node_modules\\node-inspector\\node_modules\\ws\\build\\config.gypi" +IDS_2267 "node_modules\\node-inspector\\node_modules\\ws\\build\\validation.vcxproj" +IDS_2268 "node_modules\\node-inspector\\node_modules\\ws\\build\\validation.vcxproj.filters" +IDS_2269 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\vc140.pdb" +IDS_2270 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\bufferutil.tlog\\bufferutil.lastbuildstate" +IDS_2271 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\bufferutil.tlog\\CL.command.1.tlog" +IDS_2272 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\bufferutil.tlog\\unsuccessfulbuild" +IDS_2273 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\vc140.pdb" +IDS_2274 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\validation.tlog\\CL.command.1.tlog" +IDS_2275 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\validation.tlog\\unsuccessfulbuild" +IDS_2276 "node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\validation.tlog\\validation.lastbuildstate" +IDS_2277 "node_modules\\node-inspector\\node_modules\\ws\\lib\\browser.js" +IDS_2278 "node_modules\\node-inspector\\node_modules\\ws\\lib\\BufferPool.js" +IDS_2279 "node_modules\\node-inspector\\node_modules\\ws\\lib\\BufferUtil.fallback.js" +IDS_2280 "node_modules\\node-inspector\\node_modules\\ws\\lib\\BufferUtil.js" +IDS_2281 "node_modules\\node-inspector\\node_modules\\ws\\lib\\ErrorCodes.js" +IDS_2282 "node_modules\\node-inspector\\node_modules\\ws\\lib\\Receiver.hixie.js" +IDS_2283 "node_modules\\node-inspector\\node_modules\\ws\\lib\\Receiver.js" +IDS_2284 "node_modules\\node-inspector\\node_modules\\ws\\lib\\Sender.hixie.js" +IDS_2285 "node_modules\\node-inspector\\node_modules\\ws\\lib\\Sender.js" +IDS_2286 "node_modules\\node-inspector\\node_modules\\ws\\lib\\Validation.fallback.js" +IDS_2287 "node_modules\\node-inspector\\node_modules\\ws\\lib\\Validation.js" +IDS_2288 "node_modules\\node-inspector\\node_modules\\ws\\lib\\WebSocket.js" +IDS_2289 "node_modules\\node-inspector\\node_modules\\ws\\lib\\WebSocketServer.js" +IDS_2290 "node_modules\\node-inspector\\node_modules\\ws\\node_modules\\commander\\index.js" +IDS_2291 "node_modules\\node-inspector\\node_modules\\ws\\node_modules\\commander\\package.json" +IDS_2292 "node_modules\\node-inspector\\node_modules\\ws\\node_modules\\commander\\Readme.md" +IDS_2293 "node_modules\\node-inspector\\node_modules\\ws\\src\\bufferutil.cc" +IDS_2294 "node_modules\\node-inspector\\node_modules\\ws\\src\\validation.cc" +IDS_2295 "node_modules\\node-inspector\\node_modules\\yargs\\.npmignore" +IDS_2296 "node_modules\\node-inspector\\node_modules\\yargs\\.travis.yml" +IDS_2297 "node_modules\\node-inspector\\node_modules\\yargs\\index.js" +IDS_2298 "node_modules\\node-inspector\\node_modules\\yargs\\LICENSE" +IDS_2299 "node_modules\\node-inspector\\node_modules\\yargs\\package.json" +IDS_2300 "node_modules\\node-inspector\\node_modules\\yargs\\README.md" +IDS_2301 "node_modules\\node-inspector\\node_modules\\yargs\\example\\bool.js" +IDS_2302 "node_modules\\node-inspector\\node_modules\\yargs\\example\\boolean_double.js" +IDS_2303 "node_modules\\node-inspector\\node_modules\\yargs\\example\\boolean_single.js" +IDS_2304 "node_modules\\node-inspector\\node_modules\\yargs\\example\\count.js" +IDS_2305 "node_modules\\node-inspector\\node_modules\\yargs\\example\\default_hash.js" +IDS_2306 "node_modules\\node-inspector\\node_modules\\yargs\\example\\default_singles.js" +IDS_2307 "node_modules\\node-inspector\\node_modules\\yargs\\example\\demand_count.js" +IDS_2308 "node_modules\\node-inspector\\node_modules\\yargs\\example\\divide.js" +IDS_2309 "node_modules\\node-inspector\\node_modules\\yargs\\example\\implies.js" +IDS_2310 "node_modules\\node-inspector\\node_modules\\yargs\\example\\implies_hash.js" +IDS_2311 "node_modules\\node-inspector\\node_modules\\yargs\\example\\line_count.js" +IDS_2312 "node_modules\\node-inspector\\node_modules\\yargs\\example\\line_count_options.js" +IDS_2313 "node_modules\\node-inspector\\node_modules\\yargs\\example\\line_count_wrap.js" +IDS_2314 "node_modules\\node-inspector\\node_modules\\yargs\\example\\nonopt.js" +IDS_2315 "node_modules\\node-inspector\\node_modules\\yargs\\example\\short.js" +IDS_2316 "node_modules\\node-inspector\\node_modules\\yargs\\example\\string.js" +IDS_2317 "node_modules\\node-inspector\\node_modules\\yargs\\example\\usage-options.js" +IDS_2318 "node_modules\\node-inspector\\node_modules\\yargs\\example\\xup.js" +IDS_2319 "node_modules\\node-inspector\\node_modules\\yargs\\lib\\minimist.js" +IDS_2320 "node_modules\\node-inspector\\node_modules\\yargs\\lib\\wordwrap.js" +IDS_2321 "node_modules\\node-inspector\\node_modules\\yargs\\test\\config.json" +IDS_2322 "node_modules\\node-inspector\\node_modules\\yargs\\test\\count.js" +IDS_2323 "node_modules\\node-inspector\\node_modules\\yargs\\test\\dash.js" +IDS_2324 "node_modules\\node-inspector\\node_modules\\yargs\\test\\mocha.opts" +IDS_2325 "node_modules\\node-inspector\\node_modules\\yargs\\test\\parse.js" +IDS_2326 "node_modules\\node-inspector\\node_modules\\yargs\\test\\parse_modified.js" +IDS_2327 "node_modules\\node-inspector\\node_modules\\yargs\\test\\short.js" +IDS_2328 "node_modules\\node-inspector\\node_modules\\yargs\\test\\usage.js" +IDS_2329 "node_modules\\node-inspector\\node_modules\\yargs\\test\\whitespace.js" +IDS_2330 "node_modules\\node-inspector\\node_modules\\yargs\\test\\_.js" +IDS_2331 "node_modules\\node-inspector\\node_modules\\yargs\\test\\_\\bin.js" END -F1 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\.jshintignore" -F2 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\.jshintrc" -F3 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\AUTHORS" -F4 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\config.json" -F5 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\index.js" -F6 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\LICENSE" -F7 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\package.json" -F8 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\bin\\inspector.js" -F9 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\bin\\node-debug.js" -F10 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\bin\\run-repl.js" -F11 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\build\\config.gypi" -F12 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\docs\\embedding.md" -F13 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\AdvancedSearchController.js" -F14 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ApplicationCacheItemsView.js" -F15 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ApplicationCacheModel.js" -F16 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\AuditCategories.js" -F17 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\AuditController.js" -F18 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\AuditFormatters.js" -F19 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\AuditLauncherView.js" -F20 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\AuditResultView.js" -F21 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\AuditRules.js" -F22 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\auditsPanel.css" -F23 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\AuditsPanel.js" -F24 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\BottomUpProfileDataGridTree.js" -F25 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\breadcrumbList.css" -F26 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\BreakpointManager.js" -F27 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\breakpointsList.css" -F28 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\BreakpointsSidebarPane.js" -F29 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\buildSystemOnly.js" -F30 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CallStackSidebarPane.js" -F31 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\canvasProfiler.css" -F32 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CanvasProfileView.js" -F33 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CanvasReplayStateView.js" -F34 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Checkbox.js" -F35 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CodeMirrorTextEditor.js" -F36 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CodeMirrorUtils.js" -F37 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Color.js" -F38 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CompilerScriptMapping.js" -F39 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CompletionDictionary.js" -F40 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ConsoleMessage.js" -F41 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ConsoleModel.js" -F42 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ConsolePanel.js" -F43 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ConsoleView.js" -F44 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ContentProvider.js" -F45 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ContentProviderBasedProjectDelegate.js" -F46 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ContentProviders.js" -F47 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ContextMenu.js" -F48 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CookieItemsView.js" -F49 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CookieParser.js" -F50 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CookiesTable.js" -F51 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CPUProfileView.js" -F52 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CSSMetadata.js" -F53 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CSSNamedFlowCollectionsView.js" -F54 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cssNamedFlows.css" -F55 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CSSNamedFlowView.js" -F56 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CSSStyleModel.js" -F57 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CSSStyleSheetMapping.js" -F58 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Database.js" -F59 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DatabaseQueryView.js" -F60 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DatabaseTableView.js" -F61 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\dataGrid.css" -F62 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DataGrid.js" -F63 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DebuggerModel.js" -F64 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DebuggerScriptMapping.js" -F65 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DefaultScriptMapping.js" -F66 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DevToolsExtensionAPI.js" -F67 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\dialog.css" -F68 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Dialog.js" -F69 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DirectoryContentView.js" -F70 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DockController.js" -F71 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DOMAgent.js" -F72 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DOMBreakpointsSidebarPane.js" -F73 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DOMCountersGraph.js" -F74 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DOMExtension.js" -F75 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DOMPresentationUtils.js" -F76 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DOMStorage.js" -F77 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DOMStorageItemsView.js" -F78 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DOMSyntaxHighlighter.js" -F79 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Drawer.js" -F80 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\EditFileSystemDialog.js" -F81 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\elementsPanel.css" -F82 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ElementsPanel.js" -F83 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ElementsPanelDescriptor.js" -F84 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ElementsTreeOutline.js" -F85 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\EmptyView.js" -F86 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\EventListenersSidebarPane.js" -F87 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ExtensionAPI.js" -F88 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ExtensionAuditCategory.js" -F89 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ExtensionPanel.js" -F90 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ExtensionRegistryStub.js" -F91 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ExtensionServer.js" -F92 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ExtensionView.js" -F93 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\externs.js" -F94 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FileContentView.js" -F95 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FileManager.js" -F96 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FilePathScoreFunction.js" -F97 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FileSystemMapping.js" -F98 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FileSystemModel.js" -F99 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FileSystemProjectDelegate.js" -F100 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FileSystemView.js" -F101 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FileUtils.js" -F102 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\filteredItemSelectionDialog.css" -F103 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FilteredItemSelectionDialog.js" -F104 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\flameChart.css" -F105 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FlameChart.js" -F106 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FontView.js" -F107 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\GoToLineDialog.js" -F108 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HandlerRegistry.js" -F109 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HAREntry.js" -F110 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\heapProfiler.css" -F111 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HeapSnapshot.js" -F112 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HeapSnapshotDataGrids.js" -F113 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HeapSnapshotGridNodes.js" -F114 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HeapSnapshotLoader.js" -F115 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HeapSnapshotProxy.js" -F116 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HeapSnapshotView.js" -F117 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HeapSnapshotWorker.js" -F118 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HeapSnapshotWorkerDispatcher.js" -F119 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\helpScreen.css" -F120 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HelpScreen.js" -F121 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ImageView.js" -F122 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\IndexedDBModel.js" -F123 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\indexedDBViews.css" -F124 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\IndexedDBViews.js" -F125 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\InspectElementModeController.js" -F126 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\inspector.css" -F127 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\inspector.html" -F128 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\inspector.js" -F129 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\InspectorBackend.js" -F130 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\InspectorBackendCommands.js" -F131 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\inspectorCommon.css" -F132 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\InspectorFrontendAPI.js" -F133 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\InspectorFrontendHostStub.js" -F134 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\inspectorSyntaxHighlight.css" -F135 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\InspectorView.js" -F136 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\IsolatedFileSystem.js" -F137 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\IsolatedFileSystemManager.js" -F138 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\JavaScriptFormatter.js" -F139 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\JavaScriptSourceFrame.js" -F140 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\jsdifflib.js" -F141 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\JSHeapSnapshot.js" -F142 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\KeyboardShortcut.js" -F143 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\LayerDetailsView.js" -F144 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Layers3DView.js" -F145 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\layersPanel.css" -F146 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\LayersPanel.js" -F147 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\LayersPanelDescriptor.js" -F148 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\LayerTree.js" -F149 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\LayerTreeModel.js" -F150 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Linkifier.js" -F151 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\LiveEditSupport.js" -F152 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\MemoryStatistics.js" -F153 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\MetricsSidebarPane.js" -F154 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NativeBreakpointsSidebarPane.js" -F155 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NavigatorOverlayController.js" -F156 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\navigatorView.css" -F157 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NavigatorView.js" -F158 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NetworkItemView.js" -F159 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NetworkLog.js" -F160 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\networkLogView.css" -F161 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NetworkManager.js" -F162 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\networkPanel.css" -F163 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NetworkPanel.js" -F164 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NetworkPanelDescriptor.js" -F165 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NetworkRequest.js" -F166 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NetworkUISourceCodeProvider.js" -F167 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Object.js" -F168 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ObjectPopoverHelper.js" -F169 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ObjectPropertiesSection.js" -F170 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\OverridesSupport.js" -F171 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\OverridesView.js" -F172 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\OverviewGrid.js" -F173 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\OWNERS" -F174 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Panel.js" -F175 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\panelEnablerView.css" -F176 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ParsedURL.js" -F177 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Placard.js" -F178 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\PlatformFontsSidebarPane.js" -F179 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\popover.css" -F180 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Popover.js" -F181 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\PresentationConsoleMessageHelper.js" -F182 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ProfileDataGridTree.js" -F183 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ProfileLauncherView.js" -F184 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\profilesPanel.css" -F185 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ProfilesPanel.js" -F186 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ProfilesPanelDescriptor.js" -F187 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Progress.js" -F188 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ProgressIndicator.js" -F189 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\PropertiesSection.js" -F190 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\PropertiesSidebarPane.js" -F191 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RawSourceCode.js" -F192 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RemoteObject.js" -F193 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RequestCookiesView.js" -F194 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RequestHeadersView.js" -F195 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RequestHTMLView.js" -F196 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RequestJSONView.js" -F197 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RequestPreviewView.js" -F198 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RequestResponseView.js" -F199 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RequestTimingView.js" -F200 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RequestView.js" -F201 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Resource.js" -F202 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ResourceScriptMapping.js" -F203 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\resourcesPanel.css" -F204 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ResourcesPanel.js" -F205 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ResourceTreeModel.js" -F206 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ResourceType.js" -F207 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ResourceUtils.js" -F208 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\resourceView.css" -F209 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ResourceView.js" -F210 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ResourceWebSocketFrameView.js" -F211 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\revisionHistory.css" -F212 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RevisionHistoryView.js" -F213 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RuntimeModel.js" -F214 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SASSSourceMapping.js" -F215 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ScopeChainSidebarPane.js" -F216 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\screencastView.css" -F217 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ScreencastView.js" -F218 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Script.js" -F219 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ScriptFormatter.js" -F220 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ScriptFormatterWorker.js" -F221 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ScriptsNavigator.js" -F222 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ScriptSnippetModel.js" -F223 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\scriptsPanel.css" -F224 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ScriptsPanel.js" -F225 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ScriptsPanelDescriptor.js" -F226 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ScriptsSearchScope.js" -F227 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SearchController.js" -F228 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Section.js" -F229 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Settings.js" -F230 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SettingsScreen.js" -F231 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ShortcutsScreen.js" -F232 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ShowMoreDataGridNode.js" -F233 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SidebarOverlay.js" -F234 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\sidebarPane.css" -F235 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SidebarPane.js" -F236 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SidebarTreeElement.js" -F237 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SidebarView.js" -F238 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SimpleWorkspaceProvider.js" -F239 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SnippetStorage.js" -F240 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SoftContextMenu.js" -F241 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SourceFrame.js" -F242 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SourceMap.js" -F243 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SourceMapping.js" -F244 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\spectrum.css" -F245 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Spectrum.js" -F246 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\splitView.css" -F247 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SplitView.js" -F248 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\StatusBarButton.js" -F249 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\StyleSheetOutlineDialog.js" -F250 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\StylesSidebarPane.js" -F251 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\StylesSourceMapping.js" -F252 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SuggestBox.js" -F253 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TabbedEditorContainer.js" -F254 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\tabbedPane.css" -F255 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TabbedPane.js" -F256 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\test-runner.html" -F257 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TestController.js" -F258 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Tests.js" -F259 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TextEditor.js" -F260 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\textPrompt.css" -F261 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TextPrompt.js" -F262 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TextRange.js" -F263 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TextUtils.js" -F264 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TimelineFrameController.js" -F265 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TimelineGrid.js" -F266 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TimelineManager.js" -F267 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TimelineModel.js" -F268 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TimelineOverviewPane.js" -F269 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\timelinePanel.css" -F270 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TimelinePanel.js" -F271 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TimelinePanelDescriptor.js" -F272 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TimelinePresentationModel.js" -F273 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Toolbar.js" -F274 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TopDownProfileDataGridTree.js" -F275 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TracingAgent.js" -F276 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\treeoutline.js" -F277 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\UISourceCode.js" -F278 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\UISourceCodeFrame.js" -F279 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\UIString.js" -F280 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\UIUtils.js" -F281 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\UserMetrics.js" -F282 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\utilities.js" -F283 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\View.js" -F284 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ViewportControl.js" -F285 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\WatchExpressionsSidebarPane.js" -F286 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\WorkerManager.js" -F287 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\WorkersSidebarPane.js" -F288 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Workspace.js" -F289 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\WorkspaceController.js" -F290 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\clike.js" -F291 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\closebrackets.js" -F292 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\cmdevtools.css" -F293 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\codemirror.css" -F294 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\codemirror.js" -F295 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\coffeescript.js" -F296 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\comment.js" -F297 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\css.js" -F298 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\headlesscodemirror.js" -F299 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\htmlembedded.js" -F300 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\htmlmixed.js" -F301 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\javascript.js" -F302 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\LICENSE" -F303 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\LICENSE_python" -F304 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\markselection.js" -F305 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\matchbrackets.js" -F306 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\overlay.js" -F307 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\php.js" -F308 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\python.js" -F309 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\shell.js" -F310 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\xml.js" -F311 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\addIcon.png" -F312 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\applicationCache.png" -F313 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\back.png" -F314 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\breakpoint2.png" -F315 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\breakpoint2_2x.png" -F316 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\breakpointBorder.png" -F317 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\breakpointConditional2.png" -F318 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\breakpointConditional2_2x.png" -F319 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\breakpointConditionalBorder.png" -F320 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\breakpointConditionalCounterBorder.png" -F321 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\breakpointCounterBorder.png" -F322 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\checker.png" -F323 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\cookie.png" -F324 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\database.png" -F325 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\databaseTable.png" -F326 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\deleteIcon.png" -F327 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\domain.png" -F328 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\fileSystem.png" -F329 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\forward.png" -F330 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\frame.png" -F331 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\glossyHeader.png" -F332 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\glossyHeaderPressed.png" -F333 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\glossyHeaderSelected.png" -F334 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\glossyHeaderSelectedPressed.png" -F335 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\graphLabelCalloutLeft.png" -F336 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\graphLabelCalloutRight.png" -F337 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\indexedDB.png" -F338 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\indexedDBIndex.png" -F339 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\indexedDBObjectStore.png" -F340 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\localStorage.png" -F341 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\namedFlowOverflow.png" -F342 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\paneAddButtons.png" -F343 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\paneElementStateButtons.png" -F344 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\paneFilterButtons.png" -F345 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\paneRefreshButtons.png" -F346 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\paneSettingsButtons.png" -F347 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\popoverArrows.png" -F348 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\popoverBackground.png" -F349 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\profileGroupIcon.png" -F350 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\profileIcon.png" -F351 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\profileSmallIcon.png" -F352 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\programCounterBorder.png" -F353 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\radioDot.png" -F354 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\regionEmpty.png" -F355 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\regionFit.png" -F356 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\regionOverset.png" -F357 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\resourceCSSIcon.png" -F358 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\resourceDocumentIcon.png" -F359 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\resourceDocumentIconSmall.png" -F360 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\resourceJSIcon.png" -F361 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\resourcePlainIcon.png" -F362 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\resourcePlainIconSmall.png" -F363 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\resourcesTimeGraphIcon.png" -F364 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\searchNext.png" -F365 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\searchPrev.png" -F366 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\searchSmallBlue.png" -F367 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\searchSmallBrightBlue.png" -F368 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\searchSmallGray.png" -F369 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\searchSmallWhite.png" -F370 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\segment.png" -F371 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\segmentEnd.png" -F372 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\segmentHover.png" -F373 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\segmentHoverEnd.png" -F374 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\segmentSelected.png" -F375 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\segmentSelectedEnd.png" -F376 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\sessionStorage.png" -F377 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\settingsListRemove.png" -F378 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\settingsListRemove_2x.png" -F379 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\spinner.gif" -F380 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\spinnerActive.gif" -F381 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\spinnerActiveSelected.gif" -F382 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\spinnerInactive.gif" -F383 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\spinnerInactiveSelected.gif" -F384 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\statusbarButtonGlyphs.png" -F385 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\statusbarButtonGlyphs2x.png" -F386 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\statusbarResizerHorizontal.png" -F387 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\statusbarResizerVertical.png" -F388 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\thumbActiveHoriz.png" -F389 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\thumbActiveVert.png" -F390 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\thumbHoriz.png" -F391 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\thumbHoverHoriz.png" -F392 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\thumbHoverVert.png" -F393 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\thumbVert.png" -F394 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillBlue.png" -F395 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillGray.png" -F396 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillGreen.png" -F397 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillOrange.png" -F398 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillPurple.png" -F399 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillRed.png" -F400 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillYellow.png" -F401 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelinePillBlue.png" -F402 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelinePillGray.png" -F403 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelinePillGreen.png" -F404 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelinePillOrange.png" -F405 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelinePillPurple.png" -F406 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelinePillRed.png" -F407 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelinePillYellow.png" -F408 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\toolbarItemSelected.png" -F409 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\trackHoriz.png" -F410 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\trackVert.png" -F411 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\src\\breakpoints2.svg" -F412 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\src\\settingListRemove.svg" -F413 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\src\\statusbarButtonGlyphs.svg" -F414 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\UglifyJS\\parse-js.js" -F415 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end-node\\Overrides.js" -F416 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\BreakEventHandler.js" -F417 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\callback.js" -F418 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\CallFramesProvider.js" -F419 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\config.js" -F420 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\convert.js" -F421 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\debug-server.js" -F422 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\debugger.js" -F423 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\DebuggerAgent.js" -F424 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\DebuggerClient.js" -F425 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\FrontendClient.js" -F426 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\FrontendCommandHandler.js" -F427 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\NetworkAgent.js" -F428 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\PageAgent.js" -F429 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\RuntimeAgent.js" -F430 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\ScriptFileStorage.js" -F431 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\ScriptManager.js" -F432 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\session.js" -F433 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\express" -F434 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\express.cmd" -F435 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\opener" -F436 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\opener.cmd" -F437 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\rc" -F438 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\rc.cmd" -F439 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\which" -F440 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\which.cmd" -F441 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\wscat" -F442 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\wscat.cmd" -F443 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\async\\.travis.yml" -F444 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\async\\component.json" -F445 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\async\\LICENSE" -F446 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\async\\package.json" -F447 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\async\\lib\\async.js" -F448 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\debug\\debug.js" -F449 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\debug\\package.json" -F450 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\debug\\lib\\debug.js" -F451 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\.travis.yml" -F452 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\index.js" -F453 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\LICENSE" -F454 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\package.json" -F455 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\bin\\express" -F456 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\lib\\application.js" -F457 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\lib\\express.js" -F458 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\lib\\middleware.js" -F459 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\lib\\request.js" -F460 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\lib\\response.js" -F461 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\lib\\utils.js" -F462 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\lib\\view.js" -F463 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\lib\\router\\index.js" -F464 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\lib\\router\\route.js" -F465 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\.bin\\mkdirp" -F466 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\.bin\\mkdirp.cmd" -F467 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\buffer-crc32\\.travis.yml" -F468 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\buffer-crc32\\index.js" -F469 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\buffer-crc32\\package.json" -F470 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\buffer-crc32\\tests\\crc.test.js" -F471 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\commander\\index.js" -F472 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\commander\\package.json" -F473 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\commander\\node_modules\\keypress\\index.js" -F474 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\commander\\node_modules\\keypress\\package.json" -F475 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\commander\\node_modules\\keypress\\test.js" -F476 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\.travis.yml" -F477 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\index.js" -F478 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\LICENSE" -F479 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\package.json" -F480 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\cache.js" -F481 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\connect.js" -F482 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\index.js" -F483 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\patch.js" -F484 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\proto.js" -F485 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\utils.js" -F486 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\basicAuth.js" -F487 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\bodyParser.js" -F488 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\compress.js" -F489 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\cookieParser.js" -F490 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\cookieSession.js" -F491 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\csrf.js" -F492 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\directory.js" -F493 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\errorHandler.js" -F494 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\favicon.js" -F495 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\json.js" -F496 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\limit.js" -F497 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\logger.js" -F498 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\methodOverride.js" -F499 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\multipart.js" -F500 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\query.js" -F501 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\responseTime.js" -F502 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\session.js" -F503 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\static.js" -F504 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\staticCache.js" -F505 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\timeout.js" -F506 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\urlencoded.js" -F507 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\lib\\middleware\\vhost.js" -F508 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\basic-auth-connect\\.travis.yml" -F509 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\basic-auth-connect\\index.js" -F510 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\basic-auth-connect\\package.json" -F511 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\bytes\\component.json" -F512 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\bytes\\index.js" -F513 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\bytes\\package.json" -F514 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\.travis.yml" -F515 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\index.js" -F516 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\package.json" -F517 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\bytes\\component.json" -F518 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\bytes\\index.js" -F519 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\bytes\\package.json" -F520 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\compressible\\.travis.yml" -F521 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\compressible\\bench.js" -F522 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\compressible\\index.js" -F523 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\compressible\\package.json" -F524 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\compressible\\specifications.json" -F525 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\compressible\\test.js" -F526 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\LICENSE" -F527 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\package.json" -F528 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\examples\\accept.js" -F529 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\examples\\charset.js" -F530 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\examples\\encoding.js" -F531 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\examples\\language.js" -F532 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\lib\\charset.js" -F533 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\lib\\encoding.js" -F534 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\lib\\language.js" -F535 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\lib\\mediaType.js" -F536 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\lib\\negotiator.js" -F537 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\test\\charset.js" -F538 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\test\\encoding.js" -F539 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\test\\language.js" -F540 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\compression\\node_modules\\negotiator\\test\\mediaType.js" -F541 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\connect-timeout\\.travis.yml" -F542 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\connect-timeout\\index.js" -F543 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\connect-timeout\\package.json" -F544 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\index.js" -F545 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\package.json" -F546 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\lib\\parse.js" -F547 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\node_modules\\cookie\\.travis.yml" -F548 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\node_modules\\cookie\\index.js" -F549 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\node_modules\\cookie\\LICENSE" -F550 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\node_modules\\cookie\\package.json" -F551 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\node_modules\\cookie\\test\\mocha.opts" -F552 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\node_modules\\cookie\\test\\parse.js" -F553 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\node_modules\\cookie\\test\\serialize.js" -F554 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\cookie-parser\\test\\cookieParser.js" -F555 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\.travis.yml" -F556 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\index.js" -F557 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\LICENSE" -F558 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\package.json" -F559 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\node_modules\\scmp\\.travis.yml" -F560 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\node_modules\\scmp\\index.js" -F561 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\node_modules\\scmp\\package.json" -F562 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\node_modules\\scmp\\benchmark\\benchmark.js" -F563 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\node_modules\\scmp\\test\\test.js" -F564 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\node_modules\\uid2\\index.js" -F565 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\node_modules\\uid2\\LICENSE" -F566 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\csurf\\node_modules\\uid2\\package.json" -F567 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\errorhandler\\.travis.yml" -F568 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\errorhandler\\index.js" -F569 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\errorhandler\\package.json" -F570 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\errorhandler\\public\\error.html" -F571 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\errorhandler\\public\\style.css" -F572 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\index.js" -F573 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\package.json" -F574 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\cookie\\.travis.yml" -F575 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\cookie\\index.js" -F576 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\cookie\\LICENSE" -F577 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\cookie\\package.json" -F578 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\cookie\\test\\mocha.opts" -F579 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\cookie\\test\\parse.js" -F580 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\cookie\\test\\serialize.js" -F581 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\debug\\debug.js" -F582 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\debug\\index.js" -F583 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\debug\\package.json" -F584 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\debug\\lib\\debug.js" -F585 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\uid2\\index.js" -F586 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\uid2\\LICENSE" -F587 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\uid2\\package.json" -F588 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\utils-merge\\.travis.yml" -F589 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\utils-merge\\index.js" -F590 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\utils-merge\\LICENSE" -F591 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\node_modules\\utils-merge\\package.json" -F592 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\session\\cookie.js" -F593 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\session\\memory.js" -F594 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\session\\session.js" -F595 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\session\\store.js" -F596 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\express-session\\test\\session.js" -F597 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\method-override\\.travis.yml" -F598 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\method-override\\index.js" -F599 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\method-override\\package.json" -F600 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\morgan\\index.js" -F601 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\morgan\\package.json" -F602 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\morgan\\node_modules\\bytes\\component.json" -F603 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\morgan\\node_modules\\bytes\\index.js" -F604 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\morgan\\node_modules\\bytes\\package.json" -F605 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\.jshintrc" -F606 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\.travis.yml" -F607 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\CHANGELOG.md" -F608 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\index.js" -F609 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\LICENSE" -F610 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\package.json" -F611 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\examples\\azureblobstorage.js" -F612 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\examples\\s3.js" -F613 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\examples\\upload.js" -F614 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\duplex.js" -F615 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\float.patch" -F616 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\LICENSE" -F617 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\package.json" -F618 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\passthrough.js" -F619 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\readable.js" -F620 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\transform.js" -F621 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\writable.js" -F622 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\lib\\_stream_duplex.js" -F623 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\lib\\_stream_passthrough.js" -F624 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\lib\\_stream_readable.js" -F625 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\lib\\_stream_transform.js" -F626 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\lib\\_stream_writable.js" -F627 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\core-util-is\\float.patch" -F628 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\core-util-is\\package.json" -F629 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\core-util-is\\util.js" -F630 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\core-util-is\\lib\\util.js" -F631 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\inherits\\inherits.js" -F632 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\inherits\\inherits_browser.js" -F633 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\inherits\\LICENSE" -F634 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\inherits\\package.json" -F635 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\inherits\\test.js" -F636 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\isarray\\component.json" -F637 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\isarray\\index.js" -F638 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\isarray\\package.json" -F639 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\isarray\\build\\build.js" -F640 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\string_decoder\\index.js" -F641 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\string_decoder\\LICENSE" -F642 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\readable-stream\\node_modules\\string_decoder\\package.json" -F643 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\stream-counter\\index.js" -F644 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\stream-counter\\package.json" -F645 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\stream-counter\\test\\test.js" -F646 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\node_modules\\stream-counter\\test\\test.txt" -F647 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\bench-multipart-parser.js" -F648 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\record.js" -F649 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\test.js" -F650 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\multipart.js" -F651 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\multi_video.upload" -F652 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\file\\beta-sticker-1.png" -F653 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\file\\binaryfile.tar.gz" -F654 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\file\\blank.gif" -F655 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\file\\funkyfilename.txt" -F656 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\file\\menu_separator.png" -F657 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\file\\pf1y5.png" -F658 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\file\\plain.txt" -F659 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\beta-sticker-1.png.http" -F660 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\binaryfile.tar.gz.http" -F661 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\blank.gif.http" -F662 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\menu_seperator.png.http" -F663 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\pf1y5.png.http" -F664 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\plain.txt.http" -F665 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\no-filename\\filename-name.http" -F666 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\no-filename\\generic.http" -F667 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\preamble\\crlf.http" -F668 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\preamble\\preamble.http" -F669 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\info.md" -F670 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\osx-chrome-13.http" -F671 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\osx-firefox-3.6.http" -F672 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\osx-safari-5.http" -F673 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\xp-chrome-12.http" -F674 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\xp-ie-7.http" -F675 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\xp-ie-8.http" -F676 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\xp-safari-5.http" -F677 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\workarounds\\missing-hyphens1.http" -F678 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\http\\workarounds\\missing-hyphens2.http" -F679 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\js\\encoding.js" -F680 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\js\\no-filename.js" -F681 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\js\\preamble.js" -F682 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\js\\special-chars-in-filename.js" -F683 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\fixture\\js\\workarounds.js" -F684 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\standalone\\test-connection-aborted.js" -F685 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\standalone\\test-content-transfer-encoding.js" -F686 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\standalone\\test-invalid.js" -F687 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\standalone\\test-issue-15.js" -F688 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\standalone\\test-issue-19.js" -F689 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\standalone\\test-issue-21.js" -F690 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\standalone\\test-issue-4.js" -F691 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\standalone\\test-issue-46.js" -F692 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\multiparty\\test\\standalone\\test-issue-5.js" -F693 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\pause\\index.js" -F694 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\pause\\package.json" -F695 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\qs\\.gitmodules" -F696 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\qs\\index.js" -F697 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\qs\\package.json" -F698 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\raw-body\\.travis.yml" -F699 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\raw-body\\index.js" -F700 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\raw-body\\package.json" -F701 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\response-time\\index.js" -F702 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\response-time\\package.json" -F703 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\.travis.yml" -F704 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\index.js" -F705 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\LICENSE" -F706 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\package.json" -F707 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\batch\\component.json" -F708 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\batch\\index.js" -F709 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\batch\\package.json" -F710 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\.travis.yml" -F711 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\LICENSE" -F712 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\package.json" -F713 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\examples\\accept.js" -F714 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\examples\\charset.js" -F715 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\examples\\encoding.js" -F716 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\examples\\language.js" -F717 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\charset.js" -F718 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\encoding.js" -F719 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\language.js" -F720 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\mediaType.js" -F721 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\negotiator.js" -F722 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\test\\charset.js" -F723 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\test\\encoding.js" -F724 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\test\\language.js" -F725 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\node_modules\\negotiator\\test\\mediaType.js" -F726 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\directory.html" -F727 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\style.css" -F728 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\application_xp.png" -F729 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\application_xp_terminal.png" -F730 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\box.png" -F731 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\cd.png" -F732 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\controller.png" -F733 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\drive.png" -F734 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\film.png" -F735 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\folder.png" -F736 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\font.png" -F737 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\image.png" -F738 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\map.png" -F739 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page.png" -F740 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_add.png" -F741 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_attach.png" -F742 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_code.png" -F743 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_copy.png" -F744 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_delete.png" -F745 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_edit.png" -F746 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_error.png" -F747 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_excel.png" -F748 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_find.png" -F749 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_gear.png" -F750 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_go.png" -F751 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_green.png" -F752 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_key.png" -F753 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_lightning.png" -F754 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_link.png" -F755 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_paintbrush.png" -F756 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_paste.png" -F757 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_red.png" -F758 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_refresh.png" -F759 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_save.png" -F760 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white.png" -F761 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_acrobat.png" -F762 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_actionscript.png" -F763 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_add.png" -F764 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_c.png" -F765 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_camera.png" -F766 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_cd.png" -F767 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_code.png" -F768 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_code_red.png" -F769 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_coldfusion.png" -F770 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_compressed.png" -F771 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_copy.png" -F772 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_cplusplus.png" -F773 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_csharp.png" -F774 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_cup.png" -F775 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_database.png" -F776 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_delete.png" -F777 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_dvd.png" -F778 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_edit.png" -F779 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_error.png" -F780 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_excel.png" -F781 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_find.png" -F782 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_flash.png" -F783 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_freehand.png" -F784 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_gear.png" -F785 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_get.png" -F786 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_go.png" -F787 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_h.png" -F788 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_horizontal.png" -F789 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_key.png" -F790 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_lightning.png" -F791 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_link.png" -F792 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_magnify.png" -F793 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_medal.png" -F794 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_office.png" -F795 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_paint.png" -F796 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_paintbrush.png" -F797 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_paste.png" -F798 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_php.png" -F799 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_picture.png" -F800 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_powerpoint.png" -F801 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_put.png" -F802 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_ruby.png" -F803 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_stack.png" -F804 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_star.png" -F805 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_swoosh.png" -F806 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_text.png" -F807 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_text_width.png" -F808 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_tux.png" -F809 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_vector.png" -F810 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_visualstudio.png" -F811 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_width.png" -F812 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_word.png" -F813 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_world.png" -F814 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_wrench.png" -F815 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_white_zip.png" -F816 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_word.png" -F817 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-index\\public\\icons\\page_world.png" -F818 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-static\\.travis.yml" -F819 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-static\\index.js" -F820 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-static\\LICENSE" -F821 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-static\\package.json" -F822 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-static\\node_modules\\parseurl\\index.js" -F823 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\serve-static\\node_modules\\parseurl\\package.json" -F824 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\setimmediate\\LICENSE.txt" -F825 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\setimmediate\\package.json" -F826 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\setimmediate\\setImmediate.js" -F827 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\setimmediate\\qUnitTest\\runner.htm" -F828 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\setimmediate\\qUnitTest\\selfClose.htm" -F829 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\setimmediate\\qUnitTest\\tests.js" -F830 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\setimmediate\\qUnitTest\\worker.js" -F831 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\setimmediate\\qUnitTest\\lib\\qunit.css" -F832 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\setimmediate\\qUnitTest\\lib\\qunit.js" -F833 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\static-favicon\\.travis.yml" -F834 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\static-favicon\\favicon.ico" -F835 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\static-favicon\\index.js" -F836 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\static-favicon\\LICENSE" -F837 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\static-favicon\\package.json" -F838 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\vhost\\.travis.yml" -F839 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\vhost\\index.js" -F840 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\connect\\node_modules\\vhost\\package.json" -F841 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\cookie\\index.js" -F842 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\cookie\\LICENSE" -F843 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\cookie\\package.json" -F844 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\cookie-signature\\index.js" -F845 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\cookie-signature\\package.json" -F846 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\fresh\\index.js" -F847 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\fresh\\package.json" -F848 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\merge-descriptors\\component.json" -F849 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\merge-descriptors\\index.js" -F850 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\merge-descriptors\\package.json" -F851 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\methods\\index.js" -F852 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\methods\\package.json" -F853 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\.travis.yml" -F854 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\index.js" -F855 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\LICENSE" -F856 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\package.json" -F857 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\readme.markdown" -F858 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\bin\\cmd.js" -F859 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\bin\\usage.txt" -F860 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\examples\\pow.js" -F861 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\chmod.js" -F862 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\clobber.js" -F863 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\mkdirp.js" -F864 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\perm.js" -F865 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\perm_sync.js" -F866 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\race.js" -F867 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\rel.js" -F868 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\return.js" -F869 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\return_sync.js" -F870 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\root.js" -F871 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\sync.js" -F872 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\umask.js" -F873 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\mkdirp\\test\\umask_sync.js" -F874 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\range-parser\\index.js" -F875 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\range-parser\\package.json" -F876 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\index.js" -F877 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\package.json" -F878 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\lib\\send.js" -F879 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\lib\\utils.js" -F880 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\node_modules\\debug\\debug.js" -F881 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\node_modules\\debug\\package.json" -F882 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\node_modules\\debug\\lib\\debug.js" -F883 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\node_modules\\mime\\LICENSE" -F884 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\node_modules\\mime\\mime.js" -F885 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\node_modules\\mime\\package.json" -F886 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\node_modules\\mime\\test.js" -F887 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\node_modules\\mime\\types\\mime.types" -F888 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\node_modules\\send\\node_modules\\mime\\types\\node.types" -F889 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\.travis.yml" -F890 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\glob.js" -F891 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\LICENSE" -F892 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\package.json" -F893 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\examples\\g.js" -F894 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\examples\\usr-local.js" -F895 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\inherits\\inherits.js" -F896 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\inherits\\inherits_browser.js" -F897 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\inherits\\LICENSE" -F898 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\inherits\\package.json" -F899 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\inherits\\test.js" -F900 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\LICENSE" -F901 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\minimatch.js" -F902 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\package.json" -F903 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\lru-cache\\CONTRIBUTORS" -F904 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\lru-cache\\LICENSE" -F905 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\lru-cache\\package.json" -F906 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\lru-cache\\lib\\lru-cache.js" -F907 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\lru-cache\\test\\basic.js" -F908 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\lru-cache\\test\\foreach.js" -F909 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\lru-cache\\test\\memory-leak.js" -F910 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\sigmund\\bench.js" -F911 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\sigmund\\LICENSE" -F912 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\sigmund\\package.json" -F913 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\sigmund\\sigmund.js" -F914 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\sigmund\\test\\basic.js" -F915 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\test\\basic.js" -F916 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\test\\brace-expand.js" -F917 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\test\\caching.js" -F918 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\test\\defaults.js" -F919 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\node_modules\\minimatch\\test\\extglob-ending-with-state-char.js" -F920 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\00-setup.js" -F921 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\bash-comparison.js" -F922 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\bash-results.json" -F923 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\cwd-test.js" -F924 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\globstar-match.js" -F925 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\mark.js" -F926 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\new-glob-optional-options.js" -F927 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\nocase-nomagic.js" -F928 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\pause-resume.js" -F929 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\readme-issue.js" -F930 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\root-nomount.js" -F931 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\root.js" -F932 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\stat.js" -F933 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\zz-cleanup.js" -F934 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\opener\\LICENSE.txt" -F935 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\opener\\opener.js" -F936 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\opener\\package.json" -F937 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\browser.js" -F938 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\index.js" -F939 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\LICENSE.APACHE2" -F940 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\LICENSE.BSD" -F941 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\LICENSE.MIT" -F942 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\package.json" -F943 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\lib\\utils.js" -F944 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\deep-extend\\index.js" -F945 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\deep-extend\\LICENSE" -F946 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\deep-extend\\package.json" -F947 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\ini\\ini.js" -F948 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\ini\\LICENSE" -F949 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\ini\\package.json" -F950 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\ini\\test\\bar.js" -F951 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\ini\\test\\foo.js" -F952 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\ini\\test\\fixtures\\foo.ini" -F953 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\.travis.yml" -F954 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\index.js" -F955 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\LICENSE" -F956 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\package.json" -F957 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\readme.markdown" -F958 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\example\\parse.js" -F959 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\bool.js" -F960 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\dash.js" -F961 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\default_bool.js" -F962 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\dotted.js" -F963 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\long.js" -F964 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\num.js" -F965 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\parse.js" -F966 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\parse_modified.js" -F967 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\short.js" -F968 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\node_modules\\minimist\\test\\whitespace.js" -F969 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\test\\ini.js" -F970 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\test\\test.js" -F971 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.jshintrc" -F972 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.travis.yml" -F973 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\index.js" -F974 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\LICENSE" -F975 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\package.json" -F976 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\.name" -F977 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\data-uri.iml" -F978 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\encodings.xml" -F979 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\jsLibraryMappings.xml" -F980 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\misc.xml" -F981 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\modules.xml" -F982 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\vcs.xml" -F983 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\workspace.xml" -F984 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\inspectionProfiles\\profiles_settings.xml" -F985 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\inspectionProfiles\\Project_Default.xml" -F986 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\jsLinters\\jshint.xml" -F987 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\scopes\\scope_settings.xml" -F988 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\node_modules\\truncate\\package.json" -F989 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\node_modules\\truncate\\test.js" -F990 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\node_modules\\truncate\\truncate.js" -F991 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\test\\decode.js" -F992 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\which\\LICENSE" -F993 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\which\\package.json" -F994 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\which\\which.js" -F995 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\which\\bin\\which" -F996 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\.travis.yml" -F997 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\binding.gyp" -F998 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\builderror.log" -F999 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\index.js" -F1000 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\package.json" -F1001 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\bench\\parser.benchmark.js" -F1002 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\bench\\sender.benchmark.js" -F1003 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\bench\\speed.js" -F1004 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\bench\\util.js" -F1005 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\bin\\wscat" -F1006 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\binding.sln" -F1007 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\bufferutil.vcxproj" -F1008 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\bufferutil.vcxproj.filters" -F1009 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\config.gypi" -F1010 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\validation.vcxproj" -F1011 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\validation.vcxproj.filters" -F1012 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\bufferutil.exp" -F1013 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\bufferutil.lib" -F1014 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\bufferutil.node" -F1015 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\bufferutil.pdb" -F1016 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\validation.exp" -F1017 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\validation.lib" -F1018 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\validation.node" -F1019 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\validation.pdb" -F1020 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\bufferutil.lastbuildstate" -F1021 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\bufferutil.obj" -F1022 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\bufferutil.write.1.tlog" -F1023 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\cl.command.1.tlog" -F1024 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\CL.read.1.tlog" -F1025 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\CL.write.1.tlog" -F1026 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\link-cvtres.read.1.tlog" -F1027 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\link-cvtres.write.1.tlog" -F1028 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\link-rc.read.1.tlog" -F1029 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\link-rc.write.1.tlog" -F1030 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\link.command.1.tlog" -F1031 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\link.read.1.tlog" -F1032 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\link.write.1.tlog" -F1033 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\vc110.pdb" -F1034 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\cl.command.1.tlog" -F1035 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\CL.read.1.tlog" -F1036 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\CL.write.1.tlog" -F1037 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\link-cvtres.read.1.tlog" -F1038 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\link-cvtres.write.1.tlog" -F1039 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\link-rc.read.1.tlog" -F1040 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\link-rc.write.1.tlog" -F1041 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\link.command.1.tlog" -F1042 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\link.read.1.tlog" -F1043 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\link.write.1.tlog" -F1044 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\validation.lastbuildstate" -F1045 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\validation.obj" -F1046 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\validation.write.1.tlog" -F1047 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\vc110.pdb" -F1048 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\doc\\ws.md" -F1049 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\examples\\ssl.js" -F1050 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\examples\\fileapi\\package.json" -F1051 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\examples\\fileapi\\server.js" -F1052 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\examples\\fileapi\\public\\app.js" -F1053 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\examples\\fileapi\\public\\index.html" -F1054 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\examples\\fileapi\\public\\uploader.js" -F1055 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\examples\\serverstats\\package.json" -F1056 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\examples\\serverstats\\server.js" -F1057 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\examples\\serverstats\\public\\index.html" -F1058 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\examples\\serverstats-express_3\\package.json" -F1059 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\examples\\serverstats-express_3\\server.js" -F1060 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\examples\\serverstats-express_3\\public\\index.html" -F1061 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\browser.js" -F1062 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\BufferPool.js" -F1063 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\BufferUtil.fallback.js" -F1064 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\BufferUtil.js" -F1065 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\ErrorCodes.js" -F1066 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\Receiver.hixie.js" -F1067 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\Receiver.js" -F1068 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\Sender.hixie.js" -F1069 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\Sender.js" -F1070 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\Validation.fallback.js" -F1071 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\Validation.js" -F1072 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\WebSocket.js" -F1073 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\WebSocketServer.js" -F1074 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\node_modules\\commander\\.travis.yml" -F1075 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\node_modules\\commander\\index.js" -F1076 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\node_modules\\commander\\package.json" -F1077 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\node_modules\\commander\\lib\\commander.js" -F1078 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\node_modules\\nan\\.index.js" -F1079 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\node_modules\\nan\\LICENSE" -F1080 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\node_modules\\nan\\nan.h" -F1081 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\node_modules\\nan\\package.json" -F1082 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\node_modules\\options\\package.json" -F1083 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\node_modules\\options\\lib\\options.js" -F1084 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\node_modules\\options\\test\\options.test.js" -F1085 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\node_modules\\options\\test\\fixtures\\test.conf" -F1086 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\node_modules\\tinycolor\\example.js" -F1087 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\node_modules\\tinycolor\\package.json" -F1088 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\node_modules\\tinycolor\\tinycolor.js" -F1089 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\src\\bufferutil.cc" -F1090 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\src\\validation.cc" -F1091 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\autobahn-server.js" -F1092 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\autobahn.js" -F1093 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\BufferPool.test.js" -F1094 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\hybi-common.js" -F1095 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\Receiver.hixie.test.js" -F1096 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\Receiver.test.js" -F1097 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\Sender.hixie.test.js" -F1098 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\Sender.test.js" -F1099 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\testserver.js" -F1100 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\Validation.test.js" -F1101 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\WebSocket.integration.js" -F1102 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\WebSocket.test.js" -F1103 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\WebSocketServer.test.js" -F1104 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\fixtures\\agent1-cert.pem" -F1105 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\fixtures\\agent1-key.pem" -F1106 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\fixtures\\ca1-cert.pem" -F1107 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\fixtures\\ca1-key.pem" -F1108 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\fixtures\\certificate.pem" -F1109 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\fixtures\\key.pem" -F1110 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\fixtures\\request.pem" -F1111 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\test\\fixtures\\textfile" -F1112 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\.travis.yml" -F1113 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\index.js" -F1114 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\LICENSE" -F1115 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\package.json" -F1116 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\bool.js" -F1117 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\boolean_double.js" -F1118 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\boolean_single.js" -F1119 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\count.js" -F1120 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\default_hash.js" -F1121 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\default_singles.js" -F1122 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\demand_count.js" -F1123 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\divide.js" -F1124 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\implies.js" -F1125 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\implies_hash.js" -F1126 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\line_count.js" -F1127 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\line_count_options.js" -F1128 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\line_count_wrap.js" -F1129 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\nonopt.js" -F1130 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\short.js" -F1131 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\string.js" -F1132 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\usage-options.js" -F1133 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\xup.js" -F1134 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\lib\\minimist.js" -F1135 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\lib\\wordwrap.js" -F1136 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\.travis.yml" -F1137 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\index.js" -F1138 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\LICENSE" -F1139 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\package.json" -F1140 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\readme.markdown" -F1141 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\example\\parse.js" -F1142 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\bool.js" -F1143 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\dash.js" -F1144 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\default_bool.js" -F1145 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\dotted.js" -F1146 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\long.js" -F1147 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\num.js" -F1148 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\parse.js" -F1149 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\parse_modified.js" -F1150 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\short.js" -F1151 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\node_modules\\minimist\\test\\whitespace.js" -F1152 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\config.json" -F1153 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\count.js" -F1154 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\dash.js" -F1155 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\mocha.opts" -F1156 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\parse.js" -F1157 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\parse_modified.js" -F1158 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\short.js" -F1159 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\usage.js" -F1160 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\whitespace.js" -F1161 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\_.js" -F1162 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\_\\bin.js" +F1 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\.bin\\node-debug" +F2 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\.bin\\node-debug.cmd" +F3 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\.bin\\node-inspector" +F4 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\.bin\\node-inspector.cmd" +F5 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\.jshintignore" +F6 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\.jshintrc" +F7 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\AUTHORS" +F8 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\config.json" +F9 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\index.js" +F10 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\LICENSE" +F11 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\package.json" +F12 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\bin\\inspector.js" +F13 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\bin\\node-debug.js" +F14 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\bin\\run-repl.js" +F15 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\build\\config.gypi" +F16 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\docs\\embedding.md" +F17 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\AdvancedSearchController.js" +F18 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ApplicationCacheItemsView.js" +F19 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ApplicationCacheModel.js" +F20 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\AuditCategories.js" +F21 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\AuditController.js" +F22 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\AuditFormatters.js" +F23 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\AuditLauncherView.js" +F24 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\AuditResultView.js" +F25 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\AuditRules.js" +F26 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\auditsPanel.css" +F27 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\AuditsPanel.js" +F28 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\BottomUpProfileDataGridTree.js" +F29 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\breadcrumbList.css" +F30 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\BreakpointManager.js" +F31 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\breakpointsList.css" +F32 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\BreakpointsSidebarPane.js" +F33 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\buildSystemOnly.js" +F34 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CallStackSidebarPane.js" +F35 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\canvasProfiler.css" +F36 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CanvasProfileView.js" +F37 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CanvasReplayStateView.js" +F38 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Checkbox.js" +F39 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CodeMirrorTextEditor.js" +F40 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CodeMirrorUtils.js" +F41 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Color.js" +F42 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CompilerScriptMapping.js" +F43 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CompletionDictionary.js" +F44 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ConsoleMessage.js" +F45 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ConsoleModel.js" +F46 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ConsolePanel.js" +F47 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ConsoleView.js" +F48 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ContentProvider.js" +F49 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ContentProviderBasedProjectDelegate.js" +F50 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ContentProviders.js" +F51 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ContextMenu.js" +F52 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CookieItemsView.js" +F53 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CookieParser.js" +F54 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CookiesTable.js" +F55 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CPUProfileView.js" +F56 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CSSMetadata.js" +F57 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CSSNamedFlowCollectionsView.js" +F58 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cssNamedFlows.css" +F59 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CSSNamedFlowView.js" +F60 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CSSStyleModel.js" +F61 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\CSSStyleSheetMapping.js" +F62 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Database.js" +F63 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DatabaseQueryView.js" +F64 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DatabaseTableView.js" +F65 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\dataGrid.css" +F66 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DataGrid.js" +F67 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DebuggerModel.js" +F68 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DebuggerScriptMapping.js" +F69 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DefaultScriptMapping.js" +F70 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DevToolsExtensionAPI.js" +F71 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\dialog.css" +F72 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Dialog.js" +F73 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DirectoryContentView.js" +F74 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DockController.js" +F75 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DOMAgent.js" +F76 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DOMBreakpointsSidebarPane.js" +F77 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DOMCountersGraph.js" +F78 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DOMExtension.js" +F79 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DOMPresentationUtils.js" +F80 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DOMStorage.js" +F81 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DOMStorageItemsView.js" +F82 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\DOMSyntaxHighlighter.js" +F83 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Drawer.js" +F84 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\EditFileSystemDialog.js" +F85 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\elementsPanel.css" +F86 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ElementsPanel.js" +F87 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ElementsPanelDescriptor.js" +F88 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ElementsTreeOutline.js" +F89 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\EmptyView.js" +F90 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\EventListenersSidebarPane.js" +F91 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ExtensionAPI.js" +F92 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ExtensionAuditCategory.js" +F93 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ExtensionPanel.js" +F94 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ExtensionRegistryStub.js" +F95 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ExtensionServer.js" +F96 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ExtensionView.js" +F97 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\externs.js" +F98 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FileContentView.js" +F99 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FileManager.js" +F100 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FilePathScoreFunction.js" +F101 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FileSystemMapping.js" +F102 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FileSystemModel.js" +F103 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FileSystemProjectDelegate.js" +F104 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FileSystemView.js" +F105 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FileUtils.js" +F106 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\filteredItemSelectionDialog.css" +F107 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FilteredItemSelectionDialog.js" +F108 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\flameChart.css" +F109 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FlameChart.js" +F110 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\FontView.js" +F111 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\GoToLineDialog.js" +F112 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HandlerRegistry.js" +F113 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HAREntry.js" +F114 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\heapProfiler.css" +F115 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HeapSnapshot.js" +F116 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HeapSnapshotDataGrids.js" +F117 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HeapSnapshotGridNodes.js" +F118 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HeapSnapshotLoader.js" +F119 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HeapSnapshotProxy.js" +F120 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HeapSnapshotView.js" +F121 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HeapSnapshotWorker.js" +F122 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HeapSnapshotWorkerDispatcher.js" +F123 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\helpScreen.css" +F124 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\HelpScreen.js" +F125 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ImageView.js" +F126 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\IndexedDBModel.js" +F127 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\indexedDBViews.css" +F128 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\IndexedDBViews.js" +F129 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\InspectElementModeController.js" +F130 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\inspector.css" +F131 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\inspector.html" +F132 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\inspector.js" +F133 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\InspectorBackend.js" +F134 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\InspectorBackendCommands.js" +F135 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\inspectorCommon.css" +F136 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\InspectorFrontendAPI.js" +F137 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\InspectorFrontendHostStub.js" +F138 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\inspectorSyntaxHighlight.css" +F139 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\InspectorView.js" +F140 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\IsolatedFileSystem.js" +F141 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\IsolatedFileSystemManager.js" +F142 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\JavaScriptFormatter.js" +F143 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\JavaScriptSourceFrame.js" +F144 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\jsdifflib.js" +F145 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\JSHeapSnapshot.js" +F146 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\KeyboardShortcut.js" +F147 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\LayerDetailsView.js" +F148 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Layers3DView.js" +F149 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\layersPanel.css" +F150 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\LayersPanel.js" +F151 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\LayersPanelDescriptor.js" +F152 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\LayerTree.js" +F153 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\LayerTreeModel.js" +F154 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Linkifier.js" +F155 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\LiveEditSupport.js" +F156 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\MemoryStatistics.js" +F157 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\MetricsSidebarPane.js" +F158 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NativeBreakpointsSidebarPane.js" +F159 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NavigatorOverlayController.js" +F160 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\navigatorView.css" +F161 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NavigatorView.js" +F162 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NetworkItemView.js" +F163 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NetworkLog.js" +F164 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\networkLogView.css" +F165 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NetworkManager.js" +F166 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\networkPanel.css" +F167 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NetworkPanel.js" +F168 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NetworkPanelDescriptor.js" +F169 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NetworkRequest.js" +F170 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\NetworkUISourceCodeProvider.js" +F171 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Object.js" +F172 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ObjectPopoverHelper.js" +F173 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ObjectPropertiesSection.js" +F174 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\OverridesSupport.js" +F175 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\OverridesView.js" +F176 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\OverviewGrid.js" +F177 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\OWNERS" +F178 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Panel.js" +F179 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\panelEnablerView.css" +F180 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ParsedURL.js" +F181 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Placard.js" +F182 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\PlatformFontsSidebarPane.js" +F183 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\popover.css" +F184 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Popover.js" +F185 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\PresentationConsoleMessageHelper.js" +F186 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ProfileDataGridTree.js" +F187 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ProfileLauncherView.js" +F188 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\profilesPanel.css" +F189 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ProfilesPanel.js" +F190 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ProfilesPanelDescriptor.js" +F191 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Progress.js" +F192 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ProgressIndicator.js" +F193 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\PropertiesSection.js" +F194 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\PropertiesSidebarPane.js" +F195 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RawSourceCode.js" +F196 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RemoteObject.js" +F197 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RequestCookiesView.js" +F198 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RequestHeadersView.js" +F199 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RequestHTMLView.js" +F200 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RequestJSONView.js" +F201 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RequestPreviewView.js" +F202 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RequestResponseView.js" +F203 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RequestTimingView.js" +F204 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RequestView.js" +F205 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Resource.js" +F206 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ResourceScriptMapping.js" +F207 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\resourcesPanel.css" +F208 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ResourcesPanel.js" +F209 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ResourceTreeModel.js" +F210 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ResourceType.js" +F211 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ResourceUtils.js" +F212 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\resourceView.css" +F213 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ResourceView.js" +F214 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ResourceWebSocketFrameView.js" +F215 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\revisionHistory.css" +F216 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RevisionHistoryView.js" +F217 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\RuntimeModel.js" +F218 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SASSSourceMapping.js" +F219 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ScopeChainSidebarPane.js" +F220 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\screencastView.css" +F221 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ScreencastView.js" +F222 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Script.js" +F223 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ScriptFormatter.js" +F224 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ScriptFormatterWorker.js" +F225 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ScriptsNavigator.js" +F226 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ScriptSnippetModel.js" +F227 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\scriptsPanel.css" +F228 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ScriptsPanel.js" +F229 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ScriptsPanelDescriptor.js" +F230 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ScriptsSearchScope.js" +F231 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SearchController.js" +F232 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Section.js" +F233 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Settings.js" +F234 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SettingsScreen.js" +F235 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ShortcutsScreen.js" +F236 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ShowMoreDataGridNode.js" +F237 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SidebarOverlay.js" +F238 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\sidebarPane.css" +F239 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SidebarPane.js" +F240 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SidebarTreeElement.js" +F241 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SidebarView.js" +F242 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SimpleWorkspaceProvider.js" +F243 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SnippetStorage.js" +F244 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SoftContextMenu.js" +F245 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SourceFrame.js" +F246 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SourceMap.js" +F247 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SourceMapping.js" +F248 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\spectrum.css" +F249 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Spectrum.js" +F250 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\splitView.css" +F251 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SplitView.js" +F252 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\StatusBarButton.js" +F253 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\StyleSheetOutlineDialog.js" +F254 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\StylesSidebarPane.js" +F255 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\StylesSourceMapping.js" +F256 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\SuggestBox.js" +F257 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TabbedEditorContainer.js" +F258 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\tabbedPane.css" +F259 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TabbedPane.js" +F260 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\test-runner.html" +F261 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TestController.js" +F262 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Tests.js" +F263 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TextEditor.js" +F264 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\textPrompt.css" +F265 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TextPrompt.js" +F266 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TextRange.js" +F267 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TextUtils.js" +F268 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TimelineFrameController.js" +F269 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TimelineGrid.js" +F270 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TimelineManager.js" +F271 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TimelineModel.js" +F272 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TimelineOverviewPane.js" +F273 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\timelinePanel.css" +F274 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TimelinePanel.js" +F275 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TimelinePanelDescriptor.js" +F276 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TimelinePresentationModel.js" +F277 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Toolbar.js" +F278 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TopDownProfileDataGridTree.js" +F279 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\TracingAgent.js" +F280 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\treeoutline.js" +F281 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\UISourceCode.js" +F282 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\UISourceCodeFrame.js" +F283 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\UIString.js" +F284 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\UIUtils.js" +F285 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\UserMetrics.js" +F286 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\utilities.js" +F287 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\View.js" +F288 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\ViewportControl.js" +F289 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\WatchExpressionsSidebarPane.js" +F290 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\WorkerManager.js" +F291 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\WorkersSidebarPane.js" +F292 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Workspace.js" +F293 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\WorkspaceController.js" +F294 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\clike.js" +F295 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\closebrackets.js" +F296 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\cmdevtools.css" +F297 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\codemirror.css" +F298 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\codemirror.js" +F299 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\coffeescript.js" +F300 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\comment.js" +F301 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\css.js" +F302 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\headlesscodemirror.js" +F303 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\htmlembedded.js" +F304 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\htmlmixed.js" +F305 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\javascript.js" +F306 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\LICENSE" +F307 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\LICENSE_python" +F308 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\markselection.js" +F309 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\matchbrackets.js" +F310 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\overlay.js" +F311 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\php.js" +F312 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\python.js" +F313 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\shell.js" +F314 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\cm\\xml.js" +F315 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\addIcon.png" +F316 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\applicationCache.png" +F317 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\back.png" +F318 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\breakpoint2.png" +F319 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\breakpoint2_2x.png" +F320 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\breakpointBorder.png" +F321 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\breakpointConditional2.png" +F322 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\breakpointConditional2_2x.png" +F323 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\breakpointConditionalBorder.png" +F324 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\breakpointConditionalCounterBorder.png" +F325 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\breakpointCounterBorder.png" +F326 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\checker.png" +F327 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\cookie.png" +F328 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\database.png" +F329 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\databaseTable.png" +F330 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\deleteIcon.png" +F331 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\domain.png" +F332 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\fileSystem.png" +F333 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\forward.png" +F334 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\frame.png" +F335 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\glossyHeader.png" +F336 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\glossyHeaderPressed.png" +F337 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\glossyHeaderSelected.png" +F338 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\glossyHeaderSelectedPressed.png" +F339 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\graphLabelCalloutLeft.png" +F340 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\graphLabelCalloutRight.png" +F341 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\indexedDB.png" +F342 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\indexedDBIndex.png" +F343 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\indexedDBObjectStore.png" +F344 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\localStorage.png" +F345 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\namedFlowOverflow.png" +F346 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\paneAddButtons.png" +F347 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\paneElementStateButtons.png" +F348 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\paneFilterButtons.png" +F349 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\paneRefreshButtons.png" +F350 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\paneSettingsButtons.png" +F351 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\popoverArrows.png" +F352 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\popoverBackground.png" +F353 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\profileGroupIcon.png" +F354 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\profileIcon.png" +F355 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\profileSmallIcon.png" +F356 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\programCounterBorder.png" +F357 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\radioDot.png" +F358 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\regionEmpty.png" +F359 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\regionFit.png" +F360 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\regionOverset.png" +F361 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\resourceCSSIcon.png" +F362 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\resourceDocumentIcon.png" +F363 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\resourceDocumentIconSmall.png" +F364 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\resourceJSIcon.png" +F365 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\resourcePlainIcon.png" +F366 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\resourcePlainIconSmall.png" +F367 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\resourcesTimeGraphIcon.png" +F368 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\searchNext.png" +F369 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\searchPrev.png" +F370 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\searchSmallBlue.png" +F371 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\searchSmallBrightBlue.png" +F372 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\searchSmallGray.png" +F373 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\searchSmallWhite.png" +F374 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\segment.png" +F375 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\segmentEnd.png" +F376 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\segmentHover.png" +F377 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\segmentHoverEnd.png" +F378 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\segmentSelected.png" +F379 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\segmentSelectedEnd.png" +F380 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\sessionStorage.png" +F381 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\settingsListRemove.png" +F382 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\settingsListRemove_2x.png" +F383 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\spinner.gif" +F384 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\spinnerActive.gif" +F385 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\spinnerActiveSelected.gif" +F386 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\spinnerInactive.gif" +F387 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\spinnerInactiveSelected.gif" +F388 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\statusbarButtonGlyphs.png" +F389 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\statusbarButtonGlyphs2x.png" +F390 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\statusbarResizerHorizontal.png" +F391 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\statusbarResizerVertical.png" +F392 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\thumbActiveHoriz.png" +F393 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\thumbActiveVert.png" +F394 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\thumbHoriz.png" +F395 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\thumbHoverHoriz.png" +F396 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\thumbHoverVert.png" +F397 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\thumbVert.png" +F398 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillBlue.png" +F399 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillGray.png" +F400 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillGreen.png" +F401 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillOrange.png" +F402 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillPurple.png" +F403 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillRed.png" +F404 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelineHollowPillYellow.png" +F405 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelinePillBlue.png" +F406 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelinePillGray.png" +F407 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelinePillGreen.png" +F408 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelinePillOrange.png" +F409 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelinePillPurple.png" +F410 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelinePillRed.png" +F411 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\timelinePillYellow.png" +F412 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\toolbarItemSelected.png" +F413 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\trackHoriz.png" +F414 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\trackVert.png" +F415 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\src\\breakpoints2.svg" +F416 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\src\\settingListRemove.svg" +F417 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\Images\\src\\statusbarButtonGlyphs.svg" +F418 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end\\UglifyJS\\parse-js.js" +F419 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\front-end-node\\Overrides.js" +F420 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\BreakEventHandler.js" +F421 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\callback.js" +F422 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\CallFramesProvider.js" +F423 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\config.js" +F424 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\convert.js" +F425 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\debug-server.js" +F426 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\debugger.js" +F427 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\DebuggerAgent.js" +F428 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\DebuggerClient.js" +F429 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\FrontendClient.js" +F430 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\FrontendCommandHandler.js" +F431 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\NetworkAgent.js" +F432 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\PageAgent.js" +F433 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\RuntimeAgent.js" +F434 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\ScriptFileStorage.js" +F435 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\ScriptManager.js" +F436 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\lib\\session.js" +F437 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\express" +F438 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\express.cmd" +F439 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\jade" +F440 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\jade.cmd" +F441 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\jshint" +F442 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\jshint.cmd" +F443 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\mkdirp" +F444 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\mkdirp.cmd" +F445 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\mocha" +F446 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\mocha.cmd" +F447 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\ncp" +F448 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\ncp.cmd" +F449 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\opener" +F450 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\opener.cmd" +F451 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\rc" +F452 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\rc.cmd" +F453 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\rimraf" +F454 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\rimraf.cmd" +F455 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\shjs" +F456 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\shjs.cmd" +F457 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\strip-json-comments" +F458 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\strip-json-comments.cmd" +F459 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\supports-color" +F460 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\supports-color.cmd" +F461 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\which" +F462 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\which.cmd" +F463 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\wscat" +F464 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\wscat.cmd" +F465 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\_mocha" +F466 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\.bin\\_mocha.cmd" +F467 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\assertion-error\\.npmignore" +F468 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\assertion-error\\History.md" +F469 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\assertion-error\\index.js" +F470 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\assertion-error\\package.json" +F471 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\assertion-error\\README.md" +F472 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\async\\.travis.yml" +F473 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\async\\component.json" +F474 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\async\\LICENSE" +F475 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\async\\package.json" +F476 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\async\\README.md" +F477 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\async\\lib\\async.js" +F478 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\balanced-match\\.npmignore" +F479 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\balanced-match\\.travis.yml" +F480 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\balanced-match\\example.js" +F481 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\balanced-match\\index.js" +F482 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\balanced-match\\LICENSE.md" +F483 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\balanced-match\\Makefile" +F484 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\balanced-match\\package.json" +F485 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\balanced-match\\README.md" +F486 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\balanced-match\\test\\balanced.js" +F487 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\basic-auth-connect\\.npmignore" +F488 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\basic-auth-connect\\.travis.yml" +F489 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\basic-auth-connect\\index.js" +F490 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\basic-auth-connect\\Makefile" +F491 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\basic-auth-connect\\package.json" +F492 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\basic-auth-connect\\README.md" +F493 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\batch\\.npmignore" +F494 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\batch\\component.json" +F495 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\batch\\History.md" +F496 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\batch\\index.js" +F497 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\batch\\Makefile" +F498 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\batch\\package.json" +F499 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\batch\\Readme.md" +F500 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\brace-expansion\\.npmignore" +F501 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\brace-expansion\\example.js" +F502 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\brace-expansion\\index.js" +F503 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\brace-expansion\\package.json" +F504 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\brace-expansion\\README.md" +F505 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\buffer-crc32\\.npmignore" +F506 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\buffer-crc32\\.travis.yml" +F507 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\buffer-crc32\\index.js" +F508 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\buffer-crc32\\package.json" +F509 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\buffer-crc32\\README.md" +F510 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\buffer-crc32\\tests\\crc.test.js" +F511 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\bytes\\.npmignore" +F512 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\bytes\\component.json" +F513 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\bytes\\History.md" +F514 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\bytes\\index.js" +F515 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\bytes\\Makefile" +F516 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\bytes\\package.json" +F517 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\bytes\\Readme.md" +F518 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\.npmignore" +F519 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\bower.json" +F520 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\chai.js" +F521 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\CODE_OF_CONDUCT.md" +F522 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\CONTRIBUTING.md" +F523 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\History.md" +F524 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\index.js" +F525 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\karma.conf.js" +F526 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\karma.sauce.js" +F527 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\package.json" +F528 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\README.md" +F529 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\ReleaseNotes.md" +F530 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\sauce.browsers.js" +F531 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai.js" +F532 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\assertion.js" +F533 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\config.js" +F534 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\core\\assertions.js" +F535 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\interface\\assert.js" +F536 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\interface\\expect.js" +F537 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\interface\\should.js" +F538 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\addChainableMethod.js" +F539 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\addMethod.js" +F540 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\addProperty.js" +F541 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\expectTypes.js" +F542 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\flag.js" +F543 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\getActual.js" +F544 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\getEnumerableProperties.js" +F545 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\getMessage.js" +F546 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\getName.js" +F547 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\getPathInfo.js" +F548 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\getPathValue.js" +F549 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\getProperties.js" +F550 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\hasProperty.js" +F551 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\index.js" +F552 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\inspect.js" +F553 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\objDisplay.js" +F554 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\overwriteChainableMethod.js" +F555 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\overwriteMethod.js" +F556 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\overwriteProperty.js" +F557 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\test.js" +F558 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai\\lib\\chai\\utils\\transferFlags.js" +F559 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cli\\cli.js" +F560 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cli\\index.js" +F561 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cli\\package.json" +F562 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cli\\progress.js" +F563 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cli\\README.md" +F564 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cli\\spinner.js" +F565 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cli\\examples\\cat.js" +F566 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cli\\examples\\command.js" +F567 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cli\\examples\\echo.js" +F568 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cli\\examples\\glob.js" +F569 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cli\\examples\\long_desc.js" +F570 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cli\\examples\\progress.js" +F571 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cli\\examples\\sort.js" +F572 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cli\\examples\\spinner.js" +F573 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cli\\examples\\static.coffee" +F574 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cli\\examples\\static.js" +F575 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\commander\\History.md" +F576 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\commander\\index.js" +F577 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\commander\\package.json" +F578 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\commander\\Readme.md" +F579 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compressible\\.npmignore" +F580 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compressible\\.travis.yml" +F581 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compressible\\bench.js" +F582 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compressible\\index.js" +F583 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compressible\\package.json" +F584 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compressible\\README.md" +F585 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compressible\\specifications.json" +F586 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compressible\\test.js" +F587 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression\\.npmignore" +F588 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression\\.travis.yml" +F589 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression\\index.js" +F590 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression\\Makefile" +F591 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression\\package.json" +F592 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression\\README.md" +F593 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression\\node_modules\\bytes\\.npmignore" +F594 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression\\node_modules\\bytes\\component.json" +F595 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression\\node_modules\\bytes\\History.md" +F596 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression\\node_modules\\bytes\\index.js" +F597 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression\\node_modules\\bytes\\Makefile" +F598 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression\\node_modules\\bytes\\package.json" +F599 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression\\node_modules\\bytes\\Readme.md" +F600 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\concat-map\\.travis.yml" +F601 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\concat-map\\index.js" +F602 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\concat-map\\LICENSE" +F603 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\concat-map\\package.json" +F604 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\concat-map\\README.markdown" +F605 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\concat-map\\example\\map.js" +F606 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\concat-map\\test\\map.js" +F607 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\.npmignore" +F608 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\.travis.yml" +F609 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\index.js" +F610 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\LICENSE" +F611 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\package.json" +F612 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\Readme.md" +F613 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\cache.js" +F614 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\connect.js" +F615 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\index.js" +F616 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\patch.js" +F617 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\proto.js" +F618 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\utils.js" +F619 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\basicAuth.js" +F620 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\bodyParser.js" +F621 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\compress.js" +F622 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\cookieParser.js" +F623 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\cookieSession.js" +F624 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\csrf.js" +F625 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\directory.js" +F626 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\errorHandler.js" +F627 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\favicon.js" +F628 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\json.js" +F629 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\limit.js" +F630 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\logger.js" +F631 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\methodOverride.js" +F632 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\multipart.js" +F633 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\query.js" +F634 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\responseTime.js" +F635 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\session.js" +F636 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\static.js" +F637 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\staticCache.js" +F638 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\timeout.js" +F639 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\urlencoded.js" +F640 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect\\lib\\middleware\\vhost.js" +F641 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect-timeout\\.npmignore" +F642 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect-timeout\\.travis.yml" +F643 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect-timeout\\index.js" +F644 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect-timeout\\Makefile" +F645 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect-timeout\\package.json" +F646 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect-timeout\\README.md" +F647 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\console-browserify\\.npmignore" +F648 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\console-browserify\\.testem.json" +F649 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\console-browserify\\.travis.yml" +F650 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\console-browserify\\index.js" +F651 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\console-browserify\\LICENCE" +F652 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\console-browserify\\package.json" +F653 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\console-browserify\\README.md" +F654 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\console-browserify\\test\\index.js" +F655 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\console-browserify\\test\\static\\index.html" +F656 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\console-browserify\\test\\static\\test-adapter.js" +F657 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie\\.npmignore" +F658 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie\\index.js" +F659 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie\\LICENSE" +F660 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie\\package.json" +F661 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie\\README.md" +F662 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-parser\\.npmignore" +F663 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-parser\\index.js" +F664 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-parser\\package.json" +F665 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-parser\\README.md" +F666 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-parser\\lib\\parse.js" +F667 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-parser\\node_modules\\cookie\\.npmignore" +F668 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-parser\\node_modules\\cookie\\.travis.yml" +F669 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-parser\\node_modules\\cookie\\index.js" +F670 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-parser\\node_modules\\cookie\\LICENSE" +F671 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-parser\\node_modules\\cookie\\package.json" +F672 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-parser\\node_modules\\cookie\\README.md" +F673 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-parser\\node_modules\\cookie\\test\\mocha.opts" +F674 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-parser\\node_modules\\cookie\\test\\parse.js" +F675 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-parser\\node_modules\\cookie\\test\\serialize.js" +F676 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-parser\\test\\cookieParser.js" +F677 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-signature\\.npmignore" +F678 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-signature\\History.md" +F679 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-signature\\index.js" +F680 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-signature\\Makefile" +F681 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-signature\\package.json" +F682 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-signature\\Readme.md" +F683 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\core-util-is\\float.patch" +F684 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\core-util-is\\LICENSE" +F685 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\core-util-is\\package.json" +F686 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\core-util-is\\README.md" +F687 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\core-util-is\\test.js" +F688 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\core-util-is\\lib\\util.js" +F689 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\csurf\\.npmignore" +F690 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\csurf\\.travis.yml" +F691 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\csurf\\HISTORY.md" +F692 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\csurf\\index.js" +F693 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\csurf\\LICENSE" +F694 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\csurf\\Makefile" +F695 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\csurf\\package.json" +F696 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\csurf\\README.md" +F697 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\date-now\\.npmignore" +F698 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\date-now\\.testem.json" +F699 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\date-now\\.travis.yml" +F700 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\date-now\\index.js" +F701 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\date-now\\LICENCE" +F702 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\date-now\\package.json" +F703 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\date-now\\README.md" +F704 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\date-now\\seed.js" +F705 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\date-now\\test\\index.js" +F706 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\date-now\\test\\static\\index.html" +F707 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\debug\\debug.js" +F708 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\debug\\package.json" +F709 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\debug\\Readme.md" +F710 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\debug\\lib\\debug.js" +F711 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-eql\\.npmignore" +F712 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-eql\\History.md" +F713 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-eql\\index.js" +F714 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-eql\\karma.conf.js" +F715 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-eql\\package.json" +F716 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-eql\\README.md" +F717 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-eql\\lib\\eql.js" +F718 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-eql\\node_modules\\type-detect\\.npmignore" +F719 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-eql\\node_modules\\type-detect\\History.md" +F720 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-eql\\node_modules\\type-detect\\index.js" +F721 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-eql\\node_modules\\type-detect\\package.json" +F722 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-eql\\node_modules\\type-detect\\README.md" +F723 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-eql\\node_modules\\type-detect\\lib\\type.js" +F724 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-extend\\.npmignore" +F725 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-extend\\index.js" +F726 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-extend\\LICENSE" +F727 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-extend\\package.json" +F728 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-extend\\README.md" +F729 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-extend\\test\\index.spec.js" +F730 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-extend\\test\\mocha.opts" +F731 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\diff\\diff.js" +F732 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\diff\\package.json" +F733 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\diff\\README.md" +F734 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\index.js" +F735 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\LICENSE" +F736 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\package.json" +F737 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\domelementtype\\index.js" +F738 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\domelementtype\\LICENSE" +F739 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\domelementtype\\package.json" +F740 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\domelementtype\\readme.md" +F741 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\.travis.yml" +F742 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\index.js" +F743 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\LICENSE" +F744 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\package.json" +F745 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\readme.md" +F746 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\lib\\decode.js" +F747 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\lib\\decode_codepoint.js" +F748 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\lib\\encode.js" +F749 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\maps\\decode.json" +F750 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\maps\\entities.json" +F751 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\maps\\legacy.json" +F752 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\maps\\xml.json" +F753 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\test\\mocha.opts" +F754 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\dom-serializer\\node_modules\\entities\\test\\test.js" +F755 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domelementtype\\index.js" +F756 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domelementtype\\LICENSE" +F757 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domelementtype\\package.json" +F758 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domelementtype\\readme.md" +F759 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\.travis.yml" +F760 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\index.js" +F761 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\LICENSE" +F762 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\package.json" +F763 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\readme.md" +F764 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\lib\\element.js" +F765 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\lib\\node.js" +F766 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\tests.js" +F767 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\01-basic.json" +F768 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\02-single_tag_1.json" +F769 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\03-single_tag_2.json" +F770 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\04-unescaped_in_script.json" +F771 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\05-tags_in_comment.json" +F772 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\06-comment_in_script.json" +F773 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\07-unescaped_in_style.json" +F774 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\08-extra_spaces_in_tag.json" +F775 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\09-unquoted_attrib.json" +F776 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\10-singular_attribute.json" +F777 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\11-text_outside_tags.json" +F778 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\12-text_only.json" +F779 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\13-comment_in_text.json" +F780 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\14-comment_in_text_in_script.json" +F781 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\15-non-verbose.json" +F782 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\16-normalize_whitespace.json" +F783 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\17-xml_namespace.json" +F784 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\18-enforce_empty_tags.json" +F785 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\19-ignore_empty_tags.json" +F786 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\20-template_script_tags.json" +F787 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\21-conditional_comments.json" +F788 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\22-lowercase_tags.json" +F789 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\23-dom-lvl1.json" +F790 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domhandler\\test\\cases\\24-with-start-indices.json" +F791 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domutils\\.npmignore" +F792 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domutils\\index.js" +F793 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domutils\\LICENSE" +F794 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domutils\\package.json" +F795 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domutils\\readme.md" +F796 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domutils\\lib\\helpers.js" +F797 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domutils\\lib\\legacy.js" +F798 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domutils\\lib\\manipulation.js" +F799 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domutils\\lib\\querying.js" +F800 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domutils\\lib\\stringify.js" +F801 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domutils\\lib\\traversal.js" +F802 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domutils\\test\\fixture.js" +F803 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domutils\\test\\utils.js" +F804 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domutils\\test\\tests\\helpers.js" +F805 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domutils\\test\\tests\\legacy.js" +F806 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\domutils\\test\\tests\\traversal.js" +F807 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\entities\\.travis.yml" +F808 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\entities\\index.js" +F809 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\entities\\LICENSE" +F810 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\entities\\package.json" +F811 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\entities\\readme.md" +F812 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\entities\\lib\\decode.js" +F813 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\entities\\lib\\decode_codepoint.js" +F814 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\entities\\lib\\encode.js" +F815 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\entities\\maps\\decode.json" +F816 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\entities\\maps\\entities.json" +F817 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\entities\\maps\\legacy.json" +F818 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\entities\\maps\\xml.json" +F819 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\entities\\test\\mocha.opts" +F820 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\entities\\test\\test.js" +F821 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\errorhandler\\.npmignore" +F822 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\errorhandler\\.travis.yml" +F823 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\errorhandler\\index.js" +F824 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\errorhandler\\Makefile" +F825 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\errorhandler\\package.json" +F826 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\errorhandler\\README.md" +F827 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\errorhandler\\public\\error.html" +F828 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\errorhandler\\public\\style.css" +F829 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\escape-string-regexp\\index.js" +F830 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\escape-string-regexp\\package.json" +F831 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\escape-string-regexp\\readme.md" +F832 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\.jshintrc" +F833 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\.npmignore" +F834 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\.travis.yml" +F835 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\Gruntfile.js" +F836 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\LICENSE-MIT" +F837 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\package.json" +F838 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\README.md" +F839 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\lib\\exit.js" +F840 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\test\\exit_test.js" +F841 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\10-stderr.txt" +F842 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\10-stdout-stderr.txt" +F843 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\10-stdout.txt" +F844 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\100-stderr.txt" +F845 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\100-stdout-stderr.txt" +F846 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\100-stdout.txt" +F847 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\1000-stderr.txt" +F848 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\1000-stdout-stderr.txt" +F849 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\1000-stdout.txt" +F850 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\create-files.sh" +F851 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\log-broken.js" +F852 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\exit\\test\\fixtures\\log.js" +F853 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\.npmignore" +F854 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\.travis.yml" +F855 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\History.md" +F856 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\index.js" +F857 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\LICENSE" +F858 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\Makefile" +F859 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\package.json" +F860 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\Readme.md" +F861 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\bin\\express" +F862 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\lib\\application.js" +F863 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\lib\\express.js" +F864 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\lib\\middleware.js" +F865 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\lib\\request.js" +F866 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\lib\\response.js" +F867 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\lib\\utils.js" +F868 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\lib\\view.js" +F869 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\lib\\router\\index.js" +F870 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express\\lib\\router\\route.js" +F871 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\.npmignore" +F872 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\index.js" +F873 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\package.json" +F874 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\README.md" +F875 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\cookie\\.npmignore" +F876 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\cookie\\.travis.yml" +F877 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\cookie\\index.js" +F878 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\cookie\\LICENSE" +F879 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\cookie\\package.json" +F880 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\cookie\\README.md" +F881 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\cookie\\test\\mocha.opts" +F882 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\cookie\\test\\parse.js" +F883 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\cookie\\test\\serialize.js" +F884 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\debug\\debug.js" +F885 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\debug\\index.js" +F886 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\debug\\package.json" +F887 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\debug\\Readme.md" +F888 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\node_modules\\debug\\lib\\debug.js" +F889 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\session\\cookie.js" +F890 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\session\\memory.js" +F891 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\session\\session.js" +F892 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\session\\store.js" +F893 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session\\test\\session.js" +F894 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fresh\\.npmignore" +F895 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fresh\\History.md" +F896 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fresh\\index.js" +F897 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fresh\\Makefile" +F898 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fresh\\package.json" +F899 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fresh\\Readme.md" +F900 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\.npmignore" +F901 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\CHANGELOG.md" +F902 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\LICENSE" +F903 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\package.json" +F904 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\README.md" +F905 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\lib\\copy.js" +F906 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\lib\\create.js" +F907 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\lib\\index.js" +F908 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\lib\\json.js" +F909 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\lib\\mkdir.js" +F910 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\lib\\output.js" +F911 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\lib\\remove.js" +F912 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\.npmignore" +F913 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\.travis.yml" +F914 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\index.js" +F915 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\LICENSE" +F916 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\package.json" +F917 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\readme.markdown" +F918 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\examples\\pow.js" +F919 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\chmod.js" +F920 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\clobber.js" +F921 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\mkdirp.js" +F922 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\perm.js" +F923 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\perm_sync.js" +F924 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\race.js" +F925 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\rel.js" +F926 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\return.js" +F927 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\return_sync.js" +F928 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\root.js" +F929 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\sync.js" +F930 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\umask.js" +F931 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra\\node_modules\\mkdirp\\test\\umask_sync.js" +F932 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\.npmignore" +F933 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\.travis.yml" +F934 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\glob.js" +F935 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\LICENSE" +F936 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\package.json" +F937 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\README.md" +F938 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\examples\\g.js" +F939 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\examples\\usr-local.js" +F940 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\00-setup.js" +F941 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\bash-comparison.js" +F942 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\bash-results.json" +F943 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\cwd-test.js" +F944 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\globstar-match.js" +F945 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\mark.js" +F946 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\new-glob-optional-options.js" +F947 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\nocase-nomagic.js" +F948 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\pause-resume.js" +F949 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\readme-issue.js" +F950 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\root-nomount.js" +F951 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\root.js" +F952 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\stat.js" +F953 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\glob\\test\\zz-cleanup.js" +F954 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\graceful-fs\\.npmignore" +F955 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\graceful-fs\\graceful-fs.js" +F956 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\graceful-fs\\LICENSE" +F957 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\graceful-fs\\package.json" +F958 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\graceful-fs\\polyfills.js" +F959 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\graceful-fs\\README.md" +F960 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\graceful-fs\\test\\open.js" +F961 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\graceful-fs\\test\\readdir-sort.js" +F962 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\growl\\History.md" +F963 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\growl\\package.json" +F964 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\growl\\Readme.md" +F965 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\growl\\test.js" +F966 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\growl\\lib\\growl.js" +F967 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\.gitattributes" +F968 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\.jscsrc" +F969 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\.travis.yml" +F970 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\LICENSE" +F971 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\package.json" +F972 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\README.md" +F973 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\lib\\CollectingHandler.js" +F974 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\lib\\FeedHandler.js" +F975 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\lib\\index.js" +F976 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\lib\\Parser.js" +F977 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\lib\\ProxyHandler.js" +F978 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\lib\\Stream.js" +F979 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\lib\\Tokenizer.js" +F980 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\lib\\WritableStream.js" +F981 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\01-events.js" +F982 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\02-stream.js" +F983 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\03-feed.js" +F984 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\api.js" +F985 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\test-helper.js" +F986 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Documents\\Atom_Example.xml" +F987 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Documents\\Attributes.html" +F988 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Documents\\Basic.html" +F989 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Documents\\RDF_Example.xml" +F990 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Documents\\RSS_Example.xml" +F991 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\01-simple.json" +F992 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\02-template.json" +F993 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\03-lowercase_tags.json" +F994 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\04-cdata.json" +F995 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\05-cdata-special.json" +F996 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\06-leading-lt.json" +F997 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\07-self-closing.json" +F998 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\08-implicit-close-tags.json" +F999 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\09-attributes.json" +F1000 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\10-crazy-attrib.json" +F1001 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\11-script_in_script.json" +F1002 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\12-long-comment-end.json" +F1003 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\13-long-cdata-end.json" +F1004 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\14-implicit-open-tags.json" +F1005 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\15-lt-whitespace.json" +F1006 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\16-double_attribs.json" +F1007 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\17-numeric_entities.json" +F1008 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\18-legacy_entities.json" +F1009 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\19-named_entities.json" +F1010 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\20-xml_entities.json" +F1011 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\21-entity_in_attribute.json" +F1012 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\22-double_brackets.json" +F1013 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\23-legacy_entity_fail.json" +F1014 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\24-special_special.json" +F1015 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\25-empty_tag_name.json" +F1016 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\26-not-quite-closed.json" +F1017 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\27-entities_in_attributes.json" +F1018 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\28-cdata_in_html.json" +F1019 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\29-comment_edge-cases.json" +F1020 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\30-cdata_edge-cases.json" +F1021 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Events\\31-comment_false-ending.json" +F1022 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Feeds\\01-rss.js" +F1023 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Feeds\\02-atom.js" +F1024 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Feeds\\03-rdf.js" +F1025 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Stream\\01-basic.json" +F1026 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Stream\\02-RSS.json" +F1027 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Stream\\03-Atom.json" +F1028 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Stream\\04-RDF.json" +F1029 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2\\test\\Stream\\05-Attributes.json" +F1030 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\inherits\\inherits.js" +F1031 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\inherits\\inherits_browser.js" +F1032 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\inherits\\LICENSE" +F1033 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\inherits\\package.json" +F1034 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\inherits\\README.md" +F1035 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\inherits\\test.js" +F1036 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ini\\ini.js" +F1037 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ini\\LICENSE" +F1038 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ini\\package.json" +F1039 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ini\\README.md" +F1040 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ini\\test\\bar.js" +F1041 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ini\\test\\foo.js" +F1042 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ini\\test\\fixtures\\foo.ini" +F1043 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\isarray\\component.json" +F1044 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\isarray\\index.js" +F1045 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\isarray\\package.json" +F1046 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\isarray\\README.md" +F1047 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\isarray\\build\\build.js" +F1048 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\.npmignore" +F1049 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\index.js" +F1050 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\jade.js" +F1051 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\jade.md" +F1052 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\jade.min.js" +F1053 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\LICENSE" +F1054 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\package.json" +F1055 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\runtime.js" +F1056 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\runtime.min.js" +F1057 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\test.jade" +F1058 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\bin\\jade" +F1059 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\compiler.js" +F1060 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\doctypes.js" +F1061 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\filters.js" +F1062 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\inline-tags.js" +F1063 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\jade.js" +F1064 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\lexer.js" +F1065 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\parser.js" +F1066 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\runtime.js" +F1067 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\self-closing.js" +F1068 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\utils.js" +F1069 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\attrs.js" +F1070 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\block-comment.js" +F1071 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\block.js" +F1072 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\case.js" +F1073 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\code.js" +F1074 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\comment.js" +F1075 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\doctype.js" +F1076 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\each.js" +F1077 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\filter.js" +F1078 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\index.js" +F1079 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\literal.js" +F1080 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\mixin.js" +F1081 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\node.js" +F1082 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\tag.js" +F1083 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\lib\\nodes\\text.js" +F1084 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\commander\\.npmignore" +F1085 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\commander\\.travis.yml" +F1086 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\commander\\History.md" +F1087 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\commander\\index.js" +F1088 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\commander\\Makefile" +F1089 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\commander\\package.json" +F1090 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\commander\\Readme.md" +F1091 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\commander\\lib\\commander.js" +F1092 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\.gitignore.orig" +F1093 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\.gitignore.rej" +F1094 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\.npmignore" +F1095 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\index.js" +F1096 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\LICENSE" +F1097 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\package.json" +F1098 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\README.markdown" +F1099 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\examples\\pow.js" +F1100 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\examples\\pow.js.orig" +F1101 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\examples\\pow.js.rej" +F1102 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\chmod.js" +F1103 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\clobber.js" +F1104 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\mkdirp.js" +F1105 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\perm.js" +F1106 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\perm_sync.js" +F1107 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\race.js" +F1108 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\rel.js" +F1109 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\sync.js" +F1110 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\umask.js" +F1111 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\node_modules\\mkdirp\\test\\umask_sync.js" +F1112 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\testing\\head.jade" +F1113 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\testing\\index.jade" +F1114 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\testing\\index.js" +F1115 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\testing\\layout.jade" +F1116 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\testing\\user.jade" +F1117 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade\\testing\\user.js" +F1118 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\CHANGELOG.md" +F1119 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\LICENSE" +F1120 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\package.json" +F1121 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\README.md" +F1122 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\bin\\apply" +F1123 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\bin\\build" +F1124 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\bin\\jshint" +F1125 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\bin\\land" +F1126 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\data\\ascii-identifier-data.js" +F1127 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\data\\non-ascii-identifier-part-only.js" +F1128 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\data\\non-ascii-identifier-start.js" +F1129 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\dist\\jshint-rhino.js" +F1130 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\dist\\jshint.js" +F1131 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\node_modules\\minimatch\\browser.js" +F1132 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\node_modules\\minimatch\\LICENSE" +F1133 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\node_modules\\minimatch\\minimatch.js" +F1134 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\node_modules\\minimatch\\package.json" +F1135 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\node_modules\\minimatch\\README.md" +F1136 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\src\\cli.js" +F1137 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\src\\jshint.js" +F1138 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\src\\lex.js" +F1139 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\src\\messages.js" +F1140 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\src\\name-stack.js" +F1141 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\src\\options.js" +F1142 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\src\\reg.js" +F1143 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\src\\scope-manager.js" +F1144 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\src\\state.js" +F1145 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\src\\style.js" +F1146 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\src\\vars.js" +F1147 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\src\\platforms\\rhino.js" +F1148 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\src\\reporters\\checkstyle.js" +F1149 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\src\\reporters\\default.js" +F1150 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\src\\reporters\\jslint_xml.js" +F1151 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\src\\reporters\\non_error.js" +F1152 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\src\\reporters\\unix.js" +F1153 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jsonfile\\.npmignore" +F1154 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jsonfile\\CHANGELOG.md" +F1155 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jsonfile\\LICENSE" +F1156 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jsonfile\\package.json" +F1157 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jsonfile\\README.md" +F1158 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jsonfile\\lib\\jsonfile.js" +F1159 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\keypress\\index.js" +F1160 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\keypress\\package.json" +F1161 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\keypress\\README.md" +F1162 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\keypress\\test.js" +F1163 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array.js" +F1164 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain.js" +F1165 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection.js" +F1166 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\date.js" +F1167 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function.js" +F1168 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\index.js" +F1169 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang.js" +F1170 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\LICENSE.txt" +F1171 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\math.js" +F1172 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\number.js" +F1173 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object.js" +F1174 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\package.json" +F1175 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\README.md" +F1176 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string.js" +F1177 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\support.js" +F1178 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\utility.js" +F1179 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\chunk.js" +F1180 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\compact.js" +F1181 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\difference.js" +F1182 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\drop.js" +F1183 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\dropRight.js" +F1184 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\dropRightWhile.js" +F1185 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\dropWhile.js" +F1186 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\fill.js" +F1187 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\findIndex.js" +F1188 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\findLastIndex.js" +F1189 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\first.js" +F1190 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\flatten.js" +F1191 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\flattenDeep.js" +F1192 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\head.js" +F1193 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\indexOf.js" +F1194 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\initial.js" +F1195 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\intersection.js" +F1196 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\last.js" +F1197 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\lastIndexOf.js" +F1198 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\object.js" +F1199 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\pull.js" +F1200 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\pullAt.js" +F1201 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\remove.js" +F1202 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\rest.js" +F1203 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\slice.js" +F1204 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\sortedIndex.js" +F1205 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\sortedLastIndex.js" +F1206 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\tail.js" +F1207 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\take.js" +F1208 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\takeRight.js" +F1209 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\takeRightWhile.js" +F1210 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\takeWhile.js" +F1211 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\union.js" +F1212 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\uniq.js" +F1213 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\unique.js" +F1214 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\unzip.js" +F1215 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\without.js" +F1216 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\xor.js" +F1217 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\zip.js" +F1218 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\array\\zipObject.js" +F1219 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain\\chain.js" +F1220 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain\\commit.js" +F1221 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain\\lodash.js" +F1222 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain\\plant.js" +F1223 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain\\reverse.js" +F1224 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain\\run.js" +F1225 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain\\tap.js" +F1226 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain\\thru.js" +F1227 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain\\toJSON.js" +F1228 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain\\toString.js" +F1229 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain\\value.js" +F1230 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain\\valueOf.js" +F1231 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain\\wrapperChain.js" +F1232 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain\\wrapperCommit.js" +F1233 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain\\wrapperPlant.js" +F1234 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain\\wrapperReverse.js" +F1235 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain\\wrapperToString.js" +F1236 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\chain\\wrapperValue.js" +F1237 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\all.js" +F1238 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\any.js" +F1239 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\at.js" +F1240 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\collect.js" +F1241 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\contains.js" +F1242 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\countBy.js" +F1243 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\detect.js" +F1244 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\each.js" +F1245 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\eachRight.js" +F1246 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\every.js" +F1247 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\filter.js" +F1248 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\find.js" +F1249 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\findLast.js" +F1250 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\findWhere.js" +F1251 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\foldl.js" +F1252 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\foldr.js" +F1253 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\forEach.js" +F1254 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\forEachRight.js" +F1255 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\groupBy.js" +F1256 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\include.js" +F1257 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\includes.js" +F1258 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\indexBy.js" +F1259 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\inject.js" +F1260 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\invoke.js" +F1261 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\map.js" +F1262 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\max.js" +F1263 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\min.js" +F1264 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\partition.js" +F1265 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\pluck.js" +F1266 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\reduce.js" +F1267 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\reduceRight.js" +F1268 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\reject.js" +F1269 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\sample.js" +F1270 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\select.js" +F1271 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\shuffle.js" +F1272 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\size.js" +F1273 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\some.js" +F1274 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\sortBy.js" +F1275 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\sortByAll.js" +F1276 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\sortByOrder.js" +F1277 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\sum.js" +F1278 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\collection\\where.js" +F1279 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\date\\now.js" +F1280 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\after.js" +F1281 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\ary.js" +F1282 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\backflow.js" +F1283 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\before.js" +F1284 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\bind.js" +F1285 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\bindAll.js" +F1286 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\bindKey.js" +F1287 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\compose.js" +F1288 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\curry.js" +F1289 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\curryRight.js" +F1290 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\debounce.js" +F1291 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\defer.js" +F1292 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\delay.js" +F1293 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\flow.js" +F1294 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\flowRight.js" +F1295 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\memoize.js" +F1296 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\negate.js" +F1297 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\once.js" +F1298 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\partial.js" +F1299 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\partialRight.js" +F1300 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\rearg.js" +F1301 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\restParam.js" +F1302 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\spread.js" +F1303 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\throttle.js" +F1304 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\function\\wrap.js" +F1305 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayCopy.js" +F1306 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayEach.js" +F1307 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayEachRight.js" +F1308 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayEvery.js" +F1309 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayFilter.js" +F1310 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayMap.js" +F1311 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayMax.js" +F1312 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayMin.js" +F1313 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayReduce.js" +F1314 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\arrayReduceRight.js" +F1315 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\arraySome.js" +F1316 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\arraySum.js" +F1317 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\assignDefaults.js" +F1318 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\assignOwnDefaults.js" +F1319 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\assignWith.js" +F1320 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseAssign.js" +F1321 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseAt.js" +F1322 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseCallback.js" +F1323 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseClone.js" +F1324 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseCompareAscending.js" +F1325 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseCopy.js" +F1326 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseCreate.js" +F1327 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseDelay.js" +F1328 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseDifference.js" +F1329 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseEach.js" +F1330 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseEachRight.js" +F1331 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseEvery.js" +F1332 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseFill.js" +F1333 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseFilter.js" +F1334 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseFind.js" +F1335 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseFindIndex.js" +F1336 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseFlatten.js" +F1337 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseFor.js" +F1338 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseForIn.js" +F1339 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseForOwn.js" +F1340 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseForOwnRight.js" +F1341 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseForRight.js" +F1342 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseFunctions.js" +F1343 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseGet.js" +F1344 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseIndexOf.js" +F1345 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseIsEqual.js" +F1346 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseIsEqualDeep.js" +F1347 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseIsFunction.js" +F1348 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseIsMatch.js" +F1349 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseLodash.js" +F1350 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseMap.js" +F1351 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseMatches.js" +F1352 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseMatchesProperty.js" +F1353 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseMerge.js" +F1354 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseMergeDeep.js" +F1355 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseProperty.js" +F1356 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\basePropertyDeep.js" +F1357 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\basePullAt.js" +F1358 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseRandom.js" +F1359 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseReduce.js" +F1360 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseSetData.js" +F1361 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseSlice.js" +F1362 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseSome.js" +F1363 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseSortBy.js" +F1364 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseSortByOrder.js" +F1365 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseSum.js" +F1366 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseToString.js" +F1367 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseUniq.js" +F1368 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseValues.js" +F1369 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseWhile.js" +F1370 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\baseWrapperValue.js" +F1371 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\binaryIndex.js" +F1372 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\binaryIndexBy.js" +F1373 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\bindCallback.js" +F1374 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\bufferClone.js" +F1375 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\cacheIndexOf.js" +F1376 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\cachePush.js" +F1377 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\charAtCallback.js" +F1378 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\charsLeftIndex.js" +F1379 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\charsRightIndex.js" +F1380 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\compareAscending.js" +F1381 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\compareMultiple.js" +F1382 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\composeArgs.js" +F1383 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\composeArgsRight.js" +F1384 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createAggregator.js" +F1385 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createAssigner.js" +F1386 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createBaseEach.js" +F1387 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createBaseFor.js" +F1388 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createBindWrapper.js" +F1389 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createCache.js" +F1390 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createCompounder.js" +F1391 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createCtorWrapper.js" +F1392 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createCurry.js" +F1393 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createExtremum.js" +F1394 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createFind.js" +F1395 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createFindIndex.js" +F1396 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createFindKey.js" +F1397 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createFlow.js" +F1398 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createForEach.js" +F1399 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createForIn.js" +F1400 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createForOwn.js" +F1401 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createHybridWrapper.js" +F1402 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createPadding.js" +F1403 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createPadDir.js" +F1404 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createPartial.js" +F1405 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createPartialWrapper.js" +F1406 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createReduce.js" +F1407 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createSortedIndex.js" +F1408 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\createWrapper.js" +F1409 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\deburrLetter.js" +F1410 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\equalArrays.js" +F1411 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\equalByTag.js" +F1412 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\equalObjects.js" +F1413 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\escapeHtmlChar.js" +F1414 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\escapeStringChar.js" +F1415 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\extremumBy.js" +F1416 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\getData.js" +F1417 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\getFuncName.js" +F1418 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\getLength.js" +F1419 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\getSymbols.js" +F1420 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\getView.js" +F1421 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\indexOfNaN.js" +F1422 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\initCloneArray.js" +F1423 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\initCloneByTag.js" +F1424 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\initCloneObject.js" +F1425 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\invokePath.js" +F1426 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\isIndex.js" +F1427 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\isIterateeCall.js" +F1428 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\isKey.js" +F1429 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\isLaziable.js" +F1430 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\isLength.js" +F1431 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\isObjectLike.js" +F1432 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\isSpace.js" +F1433 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\isStrictComparable.js" +F1434 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\lazyClone.js" +F1435 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\lazyReverse.js" +F1436 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\lazyValue.js" +F1437 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\LazyWrapper.js" +F1438 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\LodashWrapper.js" +F1439 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\MapCache.js" +F1440 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\mapDelete.js" +F1441 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\mapGet.js" +F1442 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\mapHas.js" +F1443 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\mapSet.js" +F1444 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\mergeData.js" +F1445 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\metaMap.js" +F1446 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\pickByArray.js" +F1447 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\pickByCallback.js" +F1448 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\realNames.js" +F1449 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\reEscape.js" +F1450 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\reEvaluate.js" +F1451 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\reInterpolate.js" +F1452 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\reorder.js" +F1453 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\replaceHolders.js" +F1454 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\SetCache.js" +F1455 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\setData.js" +F1456 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\shimIsPlainObject.js" +F1457 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\shimKeys.js" +F1458 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\sortedUniq.js" +F1459 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\toIterable.js" +F1460 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\toObject.js" +F1461 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\toPath.js" +F1462 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\trimmedLeftIndex.js" +F1463 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\trimmedRightIndex.js" +F1464 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\unescapeHtmlChar.js" +F1465 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\internal\\wrapperClone.js" +F1466 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\clone.js" +F1467 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\cloneDeep.js" +F1468 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isArguments.js" +F1469 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isArray.js" +F1470 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isBoolean.js" +F1471 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isDate.js" +F1472 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isElement.js" +F1473 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isEmpty.js" +F1474 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isEqual.js" +F1475 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isError.js" +F1476 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isFinite.js" +F1477 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isFunction.js" +F1478 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isMatch.js" +F1479 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isNaN.js" +F1480 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isNative.js" +F1481 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isNull.js" +F1482 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isNumber.js" +F1483 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isObject.js" +F1484 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isPlainObject.js" +F1485 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isRegExp.js" +F1486 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isString.js" +F1487 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isTypedArray.js" +F1488 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\isUndefined.js" +F1489 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\toArray.js" +F1490 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\lang\\toPlainObject.js" +F1491 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\math\\add.js" +F1492 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\math\\max.js" +F1493 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\math\\min.js" +F1494 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\math\\sum.js" +F1495 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\number\\inRange.js" +F1496 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\number\\random.js" +F1497 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\assign.js" +F1498 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\create.js" +F1499 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\defaults.js" +F1500 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\extend.js" +F1501 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\findKey.js" +F1502 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\findLastKey.js" +F1503 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\forIn.js" +F1504 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\forInRight.js" +F1505 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\forOwn.js" +F1506 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\forOwnRight.js" +F1507 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\functions.js" +F1508 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\get.js" +F1509 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\has.js" +F1510 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\invert.js" +F1511 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\keys.js" +F1512 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\keysIn.js" +F1513 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\mapValues.js" +F1514 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\merge.js" +F1515 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\methods.js" +F1516 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\omit.js" +F1517 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\pairs.js" +F1518 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\pick.js" +F1519 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\result.js" +F1520 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\set.js" +F1521 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\transform.js" +F1522 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\values.js" +F1523 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\object\\valuesIn.js" +F1524 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\camelCase.js" +F1525 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\capitalize.js" +F1526 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\deburr.js" +F1527 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\endsWith.js" +F1528 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\escape.js" +F1529 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\escapeRegExp.js" +F1530 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\kebabCase.js" +F1531 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\pad.js" +F1532 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\padLeft.js" +F1533 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\padRight.js" +F1534 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\parseInt.js" +F1535 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\repeat.js" +F1536 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\snakeCase.js" +F1537 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\startCase.js" +F1538 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\startsWith.js" +F1539 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\template.js" +F1540 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\templateSettings.js" +F1541 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\trim.js" +F1542 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\trimLeft.js" +F1543 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\trimRight.js" +F1544 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\trunc.js" +F1545 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\unescape.js" +F1546 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\string\\words.js" +F1547 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\utility\\attempt.js" +F1548 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\utility\\callback.js" +F1549 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\utility\\constant.js" +F1550 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\utility\\identity.js" +F1551 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\utility\\iteratee.js" +F1552 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\utility\\matches.js" +F1553 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\utility\\matchesProperty.js" +F1554 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\utility\\method.js" +F1555 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\utility\\methodOf.js" +F1556 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\utility\\mixin.js" +F1557 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\utility\\noop.js" +F1558 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\utility\\property.js" +F1559 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\utility\\propertyOf.js" +F1560 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\utility\\range.js" +F1561 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\utility\\times.js" +F1562 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lodash\\utility\\uniqueId.js" +F1563 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lru-cache\\.npmignore" +F1564 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lru-cache\\.travis.yml" +F1565 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lru-cache\\CONTRIBUTORS" +F1566 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lru-cache\\LICENSE" +F1567 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lru-cache\\package.json" +F1568 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lru-cache\\README.md" +F1569 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lru-cache\\lib\\lru-cache.js" +F1570 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lru-cache\\test\\basic.js" +F1571 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lru-cache\\test\\foreach.js" +F1572 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lru-cache\\test\\memory-leak.js" +F1573 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\lru-cache\\test\\serialize.js" +F1574 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\merge-descriptors\\.npmignore" +F1575 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\merge-descriptors\\component.json" +F1576 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\merge-descriptors\\index.js" +F1577 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\merge-descriptors\\package.json" +F1578 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\merge-descriptors\\README.md" +F1579 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\method-override\\.npmignore" +F1580 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\method-override\\.travis.yml" +F1581 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\method-override\\index.js" +F1582 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\method-override\\Makefile" +F1583 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\method-override\\package.json" +F1584 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\method-override\\README.md" +F1585 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\methods\\History.md" +F1586 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\methods\\index.js" +F1587 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\methods\\package.json" +F1588 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\methods\\Readme.md" +F1589 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mime\\LICENSE" +F1590 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mime\\mime.js" +F1591 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mime\\package.json" +F1592 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mime\\README.md" +F1593 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mime\\test.js" +F1594 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mime\\types\\mime.types" +F1595 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mime\\types\\node.types" +F1596 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimatch\\.npmignore" +F1597 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimatch\\LICENSE" +F1598 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimatch\\minimatch.js" +F1599 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimatch\\package.json" +F1600 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimatch\\README.md" +F1601 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimatch\\test\\basic.js" +F1602 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimatch\\test\\brace-expand.js" +F1603 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimatch\\test\\caching.js" +F1604 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimatch\\test\\defaults.js" +F1605 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimatch\\test\\extglob-ending-with-state-char.js" +F1606 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimist\\.travis.yml" +F1607 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimist\\index.js" +F1608 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimist\\LICENSE" +F1609 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimist\\package.json" +F1610 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimist\\readme.markdown" +F1611 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimist\\example\\parse.js" +F1612 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimist\\test\\bool.js" +F1613 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimist\\test\\dash.js" +F1614 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimist\\test\\default_bool.js" +F1615 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimist\\test\\dotted.js" +F1616 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimist\\test\\long.js" +F1617 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimist\\test\\num.js" +F1618 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimist\\test\\parse.js" +F1619 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimist\\test\\parse_modified.js" +F1620 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimist\\test\\short.js" +F1621 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\minimist\\test\\whitespace.js" +F1622 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\.npmignore" +F1623 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\.travis.yml" +F1624 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\index.js" +F1625 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\LICENSE" +F1626 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\package.json" +F1627 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\readme.markdown" +F1628 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\bin\\cmd.js" +F1629 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\bin\\usage.txt" +F1630 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\examples\\pow.js" +F1631 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\test\\chmod.js" +F1632 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\test\\clobber.js" +F1633 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\test\\mkdirp.js" +F1634 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\test\\perm.js" +F1635 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\test\\perm_sync.js" +F1636 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\test\\race.js" +F1637 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\test\\rel.js" +F1638 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\test\\return.js" +F1639 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\test\\return_sync.js" +F1640 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\test\\root.js" +F1641 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\test\\sync.js" +F1642 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\test\\umask.js" +F1643 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mkdirp\\test\\umask_sync.js" +F1644 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\CHANGELOG.md" +F1645 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\index.js" +F1646 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\LICENSE" +F1647 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\mocha.css" +F1648 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\mocha.js" +F1649 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\package.json" +F1650 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\README.md" +F1651 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\bin\\.eslintrc" +F1652 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\bin\\mocha" +F1653 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\bin\\options.js" +F1654 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\bin\\_mocha" +F1655 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\images\\error.png" +F1656 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\images\\ok.png" +F1657 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\context.js" +F1658 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\hook.js" +F1659 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\mocha.js" +F1660 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\ms.js" +F1661 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\pending.js" +F1662 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\runnable.js" +F1663 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\runner.js" +F1664 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\suite.js" +F1665 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\template.html" +F1666 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\test.js" +F1667 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\utils.js" +F1668 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\browser\\debug.js" +F1669 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\browser\\events.js" +F1670 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\browser\\progress.js" +F1671 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\browser\\tty.js" +F1672 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\interfaces\\bdd.js" +F1673 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\interfaces\\common.js" +F1674 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\interfaces\\exports.js" +F1675 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\interfaces\\index.js" +F1676 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\interfaces\\qunit.js" +F1677 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\interfaces\\tdd.js" +F1678 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\base.js" +F1679 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\doc.js" +F1680 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\dot.js" +F1681 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\html-cov.js" +F1682 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\html.js" +F1683 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\index.js" +F1684 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\json-cov.js" +F1685 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\json-stream.js" +F1686 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\json.js" +F1687 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\landing.js" +F1688 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\list.js" +F1689 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\markdown.js" +F1690 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\min.js" +F1691 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\nyan.js" +F1692 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\progress.js" +F1693 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\spec.js" +F1694 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\tap.js" +F1695 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\xunit.js" +F1696 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\templates\\coverage.jade" +F1697 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\templates\\menu.jade" +F1698 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\templates\\script.html" +F1699 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\lib\\reporters\\templates\\style.html" +F1700 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\.bin\\mkdirp" +F1701 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\.bin\\mkdirp.cmd" +F1702 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\commander\\index.js" +F1703 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\commander\\package.json" +F1704 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\commander\\Readme.md" +F1705 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\.jshintrc" +F1706 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\.npmignore" +F1707 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\bower.json" +F1708 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\browser.js" +F1709 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\component.json" +F1710 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\debug.js" +F1711 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\History.md" +F1712 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\Makefile" +F1713 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\node.js" +F1714 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\package.json" +F1715 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug\\Readme.md" +F1716 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\.npmignore" +F1717 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\.travis.yml" +F1718 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\glob.js" +F1719 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\LICENSE" +F1720 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\package.json" +F1721 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\README.md" +F1722 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\examples\\g.js" +F1723 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\examples\\usr-local.js" +F1724 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\00-setup.js" +F1725 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\bash-comparison.js" +F1726 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\bash-results.json" +F1727 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\cwd-test.js" +F1728 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\globstar-match.js" +F1729 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\mark.js" +F1730 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\nocase-nomagic.js" +F1731 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\pause-resume.js" +F1732 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\root-nomount.js" +F1733 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\root.js" +F1734 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\stat.js" +F1735 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob\\test\\zz-cleanup.js" +F1736 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\.npmignore" +F1737 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\LICENSE" +F1738 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\minimatch.js" +F1739 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\package.json" +F1740 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\README.md" +F1741 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\test\\basic.js" +F1742 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\test\\brace-expand.js" +F1743 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\test\\caching.js" +F1744 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\test\\defaults.js" +F1745 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimatch\\test\\extglob-ending-with-state-char.js" +F1746 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\.travis.yml" +F1747 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\index.js" +F1748 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\LICENSE" +F1749 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\package.json" +F1750 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\readme.markdown" +F1751 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\example\\parse.js" +F1752 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\test\\dash.js" +F1753 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\test\\default_bool.js" +F1754 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\test\\dotted.js" +F1755 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\test\\long.js" +F1756 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\test\\parse.js" +F1757 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\test\\parse_modified.js" +F1758 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\test\\short.js" +F1759 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\minimist\\test\\whitespace.js" +F1760 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\.travis.yml" +F1761 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\index.js" +F1762 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\LICENSE" +F1763 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\package.json" +F1764 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\readme.markdown" +F1765 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\bin\\cmd.js" +F1766 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\bin\\usage.txt" +F1767 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\examples\\pow.js" +F1768 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\chmod.js" +F1769 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\clobber.js" +F1770 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\mkdirp.js" +F1771 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\opts_fs.js" +F1772 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\opts_fs_sync.js" +F1773 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\perm.js" +F1774 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\perm_sync.js" +F1775 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\race.js" +F1776 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\rel.js" +F1777 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\return.js" +F1778 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\return_sync.js" +F1779 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\root.js" +F1780 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\sync.js" +F1781 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\umask.js" +F1782 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp\\test\\umask_sync.js" +F1783 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\morgan\\.npmignore" +F1784 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\morgan\\index.js" +F1785 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\morgan\\Makefile" +F1786 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\morgan\\package.json" +F1787 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\morgan\\README.md" +F1788 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\morgan\\node_modules\\bytes\\.npmignore" +F1789 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\morgan\\node_modules\\bytes\\component.json" +F1790 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\morgan\\node_modules\\bytes\\History.md" +F1791 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\morgan\\node_modules\\bytes\\index.js" +F1792 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\morgan\\node_modules\\bytes\\Makefile" +F1793 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\morgan\\node_modules\\bytes\\package.json" +F1794 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\morgan\\node_modules\\bytes\\Readme.md" +F1795 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ms\\.npmignore" +F1796 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ms\\History.md" +F1797 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ms\\index.js" +F1798 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ms\\LICENSE" +F1799 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ms\\package.json" +F1800 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ms\\README.md" +F1801 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\.jshintrc" +F1802 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\.npmignore" +F1803 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\.travis.yml" +F1804 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\CHANGELOG.md" +F1805 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\index.js" +F1806 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\LICENSE" +F1807 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\package.json" +F1808 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\README.md" +F1809 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\examples\\azureblobstorage.js" +F1810 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\examples\\s3.js" +F1811 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\examples\\upload.js" +F1812 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\bench-multipart-parser.js" +F1813 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\record.js" +F1814 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\test.js" +F1815 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\multipart.js" +F1816 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\multi_video.upload" +F1817 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\file\\beta-sticker-1.png" +F1818 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\file\\binaryfile.tar.gz" +F1819 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\file\\blank.gif" +F1820 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\file\\funkyfilename.txt" +F1821 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\file\\menu_separator.png" +F1822 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\file\\pf1y5.png" +F1823 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\file\\plain.txt" +F1824 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\beta-sticker-1.png.http" +F1825 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\binaryfile.tar.gz.http" +F1826 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\blank.gif.http" +F1827 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\menu_seperator.png.http" +F1828 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\pf1y5.png.http" +F1829 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\encoding\\plain.txt.http" +F1830 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\no-filename\\filename-name.http" +F1831 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\no-filename\\generic.http" +F1832 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\preamble\\crlf.http" +F1833 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\preamble\\preamble.http" +F1834 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\info.md" +F1835 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\osx-chrome-13.http" +F1836 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\osx-firefox-3.6.http" +F1837 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\osx-safari-5.http" +F1838 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\xp-chrome-12.http" +F1839 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\xp-ie-7.http" +F1840 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\xp-ie-8.http" +F1841 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\special-chars-in-filename\\xp-safari-5.http" +F1842 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\workarounds\\missing-hyphens1.http" +F1843 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\http\\workarounds\\missing-hyphens2.http" +F1844 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\js\\encoding.js" +F1845 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\js\\no-filename.js" +F1846 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\js\\preamble.js" +F1847 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\js\\special-chars-in-filename.js" +F1848 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\fixture\\js\\workarounds.js" +F1849 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\standalone\\test-connection-aborted.js" +F1850 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\standalone\\test-content-transfer-encoding.js" +F1851 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\standalone\\test-invalid.js" +F1852 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\standalone\\test-issue-15.js" +F1853 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\standalone\\test-issue-19.js" +F1854 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\standalone\\test-issue-21.js" +F1855 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\standalone\\test-issue-4.js" +F1856 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\standalone\\test-issue-46.js" +F1857 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty\\test\\standalone\\test-issue-5.js" +F1858 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\nan\\.dntrc" +F1859 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\nan\\include_dirs.js" +F1860 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\nan\\LICENSE" +F1861 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\nan\\nan.h" +F1862 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\nan\\package.json" +F1863 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\nan\\README.md" +F1864 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\nan\\build\\config.gypi" +F1865 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ncp\\.npmignore" +F1866 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ncp\\.travis.yml" +F1867 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ncp\\LICENSE.md" +F1868 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ncp\\package.json" +F1869 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ncp\\README.md" +F1870 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ncp\\bin\\ncp" +F1871 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ncp\\lib\\ncp.js" +F1872 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ncp\\test\\ncp-test.js" +F1873 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ncp\\test\\fixtures\\src\\a" +F1874 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ncp\\test\\fixtures\\src\\b" +F1875 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ncp\\test\\fixtures\\src\\c" +F1876 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ncp\\test\\fixtures\\src\\d" +F1877 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ncp\\test\\fixtures\\src\\e" +F1878 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ncp\\test\\fixtures\\src\\f" +F1879 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ncp\\test\\fixtures\\src\\sub\\a" +F1880 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ncp\\test\\fixtures\\src\\sub\\b" +F1881 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\negotiator\\LICENSE" +F1882 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\negotiator\\package.json" +F1883 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\negotiator\\readme.md" +F1884 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\negotiator\\examples\\accept.js" +F1885 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\negotiator\\examples\\charset.js" +F1886 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\negotiator\\examples\\encoding.js" +F1887 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\negotiator\\examples\\language.js" +F1888 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\negotiator\\lib\\charset.js" +F1889 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\negotiator\\lib\\encoding.js" +F1890 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\negotiator\\lib\\language.js" +F1891 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\negotiator\\lib\\mediaType.js" +F1892 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\negotiator\\lib\\negotiator.js" +F1893 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\negotiator\\test\\charset.js" +F1894 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\negotiator\\test\\encoding.js" +F1895 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\negotiator\\test\\language.js" +F1896 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\negotiator\\test\\mediaType.js" +F1897 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\opener\\LICENSE.txt" +F1898 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\opener\\opener.js" +F1899 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\opener\\package.json" +F1900 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\opener\\README.md" +F1901 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\options\\.npmignore" +F1902 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\options\\Makefile" +F1903 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\options\\package.json" +F1904 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\options\\README.md" +F1905 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\options\\lib\\options.js" +F1906 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\parseurl\\.npmignore" +F1907 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\parseurl\\index.js" +F1908 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\parseurl\\package.json" +F1909 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\parseurl\\README.md" +F1910 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\pause\\.npmignore" +F1911 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\pause\\History.md" +F1912 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\pause\\index.js" +F1913 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\pause\\Makefile" +F1914 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\pause\\package.json" +F1915 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\pause\\Readme.md" +F1916 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\qs\\.gitmodules" +F1917 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\qs\\.npmignore" +F1918 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\qs\\index.js" +F1919 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\qs\\package.json" +F1920 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\qs\\Readme.md" +F1921 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\range-parser\\.npmignore" +F1922 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\range-parser\\History.md" +F1923 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\range-parser\\index.js" +F1924 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\range-parser\\Makefile" +F1925 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\range-parser\\package.json" +F1926 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\range-parser\\Readme.md" +F1927 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\raw-body\\.npmignore" +F1928 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\raw-body\\.travis.yml" +F1929 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\raw-body\\index.js" +F1930 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\raw-body\\Makefile" +F1931 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\raw-body\\package.json" +F1932 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\raw-body\\README.md" +F1933 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\.npmignore" +F1934 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\browser.js" +F1935 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\index.js" +F1936 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\LICENSE.APACHE2" +F1937 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\LICENSE.BSD" +F1938 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\LICENSE.MIT" +F1939 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\package.json" +F1940 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\README.md" +F1941 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\lib\\utils.js" +F1942 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\test\\ini.js" +F1943 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc\\test\\test.js" +F1944 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream\\.npmignore" +F1945 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream\\duplex.js" +F1946 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream\\float.patch" +F1947 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream\\LICENSE" +F1948 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream\\package.json" +F1949 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream\\passthrough.js" +F1950 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream\\readable.js" +F1951 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream\\README.md" +F1952 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream\\transform.js" +F1953 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream\\writable.js" +F1954 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream\\lib\\_stream_duplex.js" +F1955 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream\\lib\\_stream_passthrough.js" +F1956 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream\\lib\\_stream_readable.js" +F1957 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream\\lib\\_stream_transform.js" +F1958 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream\\lib\\_stream_writable.js" +F1959 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\response-time\\.npmignore" +F1960 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\response-time\\index.js" +F1961 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\response-time\\Makefile" +F1962 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\response-time\\package.json" +F1963 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\response-time\\README.md" +F1964 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rimraf\\AUTHORS" +F1965 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rimraf\\bin.js" +F1966 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rimraf\\LICENSE" +F1967 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rimraf\\package.json" +F1968 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rimraf\\README.md" +F1969 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rimraf\\rimraf.js" +F1970 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rimraf\\test\\run.sh" +F1971 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rimraf\\test\\setup.sh" +F1972 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rimraf\\test\\test-async.js" +F1973 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rimraf\\test\\test-sync.js" +F1974 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\scmp\\.npmignore" +F1975 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\scmp\\.travis.yml" +F1976 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\scmp\\index.js" +F1977 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\scmp\\package.json" +F1978 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\scmp\\README.md" +F1979 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\scmp\\benchmark\\benchmark.js" +F1980 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\scmp\\test\\test.js" +F1981 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\send\\.npmignore" +F1982 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\send\\History.md" +F1983 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\send\\index.js" +F1984 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\send\\package.json" +F1985 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\send\\Readme.md" +F1986 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\send\\lib\\send.js" +F1987 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\send\\lib\\utils.js" +F1988 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\send\\node_modules\\debug\\debug.js" +F1989 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\send\\node_modules\\debug\\package.json" +F1990 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\send\\node_modules\\debug\\Readme.md" +F1991 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\send\\node_modules\\debug\\lib\\debug.js" +F1992 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\.npmignore" +F1993 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\.travis.yml" +F1994 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\index.js" +F1995 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\LICENSE" +F1996 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\package.json" +F1997 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\Readme.md" +F1998 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\.travis.yml" +F1999 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\LICENSE" +F2000 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\package.json" +F2001 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\readme.md" +F2002 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\examples\\accept.js" +F2003 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\examples\\charset.js" +F2004 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\examples\\encoding.js" +F2005 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\examples\\language.js" +F2006 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\charset.js" +F2007 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\encoding.js" +F2008 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\language.js" +F2009 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\mediaType.js" +F2010 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\lib\\negotiator.js" +F2011 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\test\\charset.js" +F2012 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\test\\encoding.js" +F2013 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\test\\language.js" +F2014 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\node_modules\\negotiator\\test\\mediaType.js" +F2015 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\directory.html" +F2016 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\style.css" +F2017 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\application_xp.png" +F2018 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\application_xp_terminal.png" +F2019 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\box.png" +F2020 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\cd.png" +F2021 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\controller.png" +F2022 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\drive.png" +F2023 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\film.png" +F2024 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\folder.png" +F2025 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\font.png" +F2026 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\image.png" +F2027 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\map.png" +F2028 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page.png" +F2029 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_add.png" +F2030 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_attach.png" +F2031 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_code.png" +F2032 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_copy.png" +F2033 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_delete.png" +F2034 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_edit.png" +F2035 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_error.png" +F2036 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_excel.png" +F2037 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_find.png" +F2038 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_gear.png" +F2039 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_go.png" +F2040 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_green.png" +F2041 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_key.png" +F2042 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_lightning.png" +F2043 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_link.png" +F2044 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_paintbrush.png" +F2045 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_paste.png" +F2046 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_red.png" +F2047 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_refresh.png" +F2048 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_save.png" +F2049 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white.png" +F2050 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_acrobat.png" +F2051 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_actionscript.png" +F2052 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_add.png" +F2053 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_c.png" +F2054 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_camera.png" +F2055 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_cd.png" +F2056 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_code.png" +F2057 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_code_red.png" +F2058 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_coldfusion.png" +F2059 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_compressed.png" +F2060 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_copy.png" +F2061 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_cplusplus.png" +F2062 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_csharp.png" +F2063 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_cup.png" +F2064 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_database.png" +F2065 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_delete.png" +F2066 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_dvd.png" +F2067 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_edit.png" +F2068 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_error.png" +F2069 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_excel.png" +F2070 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_find.png" +F2071 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_flash.png" +F2072 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_freehand.png" +F2073 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_gear.png" +F2074 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_get.png" +F2075 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_go.png" +F2076 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_h.png" +F2077 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_horizontal.png" +F2078 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_key.png" +F2079 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_lightning.png" +F2080 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_link.png" +F2081 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_magnify.png" +F2082 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_medal.png" +F2083 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_office.png" +F2084 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_paint.png" +F2085 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_paintbrush.png" +F2086 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_paste.png" +F2087 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_php.png" +F2088 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_picture.png" +F2089 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_powerpoint.png" +F2090 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_put.png" +F2091 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_ruby.png" +F2092 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_stack.png" +F2093 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_star.png" +F2094 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_swoosh.png" +F2095 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_text.png" +F2096 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_text_width.png" +F2097 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_tux.png" +F2098 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_vector.png" +F2099 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_visualstudio.png" +F2100 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_width.png" +F2101 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_word.png" +F2102 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_world.png" +F2103 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_wrench.png" +F2104 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_white_zip.png" +F2105 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_word.png" +F2106 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index\\public\\icons\\page_world.png" +F2107 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-static\\.npmignore" +F2108 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-static\\.travis.yml" +F2109 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-static\\History.md" +F2110 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-static\\index.js" +F2111 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-static\\LICENSE" +F2112 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-static\\package.json" +F2113 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-static\\Readme.md" +F2114 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\setimmediate\\LICENSE.txt" +F2115 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\setimmediate\\package.json" +F2116 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\setimmediate\\README.md" +F2117 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\setimmediate\\setImmediate.js" +F2118 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\setimmediate\\qUnitTest\\runner.htm" +F2119 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\setimmediate\\qUnitTest\\selfClose.htm" +F2120 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\setimmediate\\qUnitTest\\tests.js" +F2121 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\setimmediate\\qUnitTest\\worker.js" +F2122 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\setimmediate\\qUnitTest\\lib\\qunit.css" +F2123 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\setimmediate\\qUnitTest\\lib\\qunit.js" +F2124 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\.documentup.json" +F2125 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\.jshintrc" +F2126 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\.npmignore" +F2127 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\.travis.yml" +F2128 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\global.js" +F2129 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\LICENSE" +F2130 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\make.js" +F2131 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\package.json" +F2132 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\README.md" +F2133 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\shell.js" +F2134 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\bin\\shjs" +F2135 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\scripts\\generate-docs.js" +F2136 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\scripts\\run-tests.js" +F2137 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\cat.js" +F2138 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\cd.js" +F2139 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\chmod.js" +F2140 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\common.js" +F2141 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\cp.js" +F2142 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\dirs.js" +F2143 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\echo.js" +F2144 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\error.js" +F2145 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\exec.js" +F2146 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\find.js" +F2147 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\grep.js" +F2148 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\ln.js" +F2149 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\ls.js" +F2150 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\mkdir.js" +F2151 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\mv.js" +F2152 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\popd.js" +F2153 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\pushd.js" +F2154 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\pwd.js" +F2155 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\rm.js" +F2156 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\sed.js" +F2157 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\tempdir.js" +F2158 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\test.js" +F2159 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\to.js" +F2160 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\toEnd.js" +F2161 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\shelljs\\src\\which.js" +F2162 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\sigmund\\bench.js" +F2163 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\sigmund\\LICENSE" +F2164 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\sigmund\\package.json" +F2165 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\sigmund\\README.md" +F2166 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\sigmund\\sigmund.js" +F2167 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\sigmund\\test\\basic.js" +F2168 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\static-favicon\\.npmignore" +F2169 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\static-favicon\\.travis.yml" +F2170 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\static-favicon\\favicon.ico" +F2171 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\static-favicon\\index.js" +F2172 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\static-favicon\\LICENSE" +F2173 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\static-favicon\\package.json" +F2174 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\static-favicon\\README.md" +F2175 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\stream-counter\\.npmignore" +F2176 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\stream-counter\\index.js" +F2177 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\stream-counter\\package.json" +F2178 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\stream-counter\\README.md" +F2179 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\stream-counter\\test\\test.js" +F2180 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\stream-counter\\test\\test.txt" +F2181 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\string_decoder\\.npmignore" +F2182 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\string_decoder\\index.js" +F2183 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\string_decoder\\LICENSE" +F2184 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\string_decoder\\package.json" +F2185 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\string_decoder\\README.md" +F2186 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strip-json-comments\\cli.js" +F2187 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strip-json-comments\\license" +F2188 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strip-json-comments\\package.json" +F2189 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strip-json-comments\\readme.md" +F2190 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strip-json-comments\\strip-json-comments.js" +F2191 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.jshintrc" +F2192 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.npmignore" +F2193 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.travis.yml" +F2194 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\index.js" +F2195 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\LICENSE" +F2196 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\package.json" +F2197 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\README.md" +F2198 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\.name" +F2199 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\data-uri.iml" +F2200 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\encodings.xml" +F2201 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\jsLibraryMappings.xml" +F2202 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\misc.xml" +F2203 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\modules.xml" +F2204 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\vcs.xml" +F2205 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\workspace.xml" +F2206 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\inspectionProfiles\\profiles_settings.xml" +F2207 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\inspectionProfiles\\Project_Default.xml" +F2208 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\jsLinters\\jshint.xml" +F2209 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\.idea\\scopes\\scope_settings.xml" +F2210 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\strong-data-uri\\test\\decode.js" +F2211 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\supports-color\\cli.js" +F2212 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\supports-color\\index.js" +F2213 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\supports-color\\package.json" +F2214 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\supports-color\\readme.md" +F2215 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\tinycolor\\.npmignore" +F2216 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\tinycolor\\example.js" +F2217 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\tinycolor\\package.json" +F2218 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\tinycolor\\README.md" +F2219 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\tinycolor\\tinycolor.js" +F2220 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\truncate\\.npmignore" +F2221 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\truncate\\CHANGELOG.md" +F2222 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\truncate\\package.json" +F2223 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\truncate\\README.md" +F2224 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\truncate\\test.js" +F2225 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\truncate\\truncate.js" +F2226 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\truncate\\scripts\\changelog" +F2227 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\type-detect\\.npmignore" +F2228 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\type-detect\\History.md" +F2229 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\type-detect\\index.js" +F2230 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\type-detect\\package.json" +F2231 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\type-detect\\README.md" +F2232 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\type-detect\\ReleaseNotes.md" +F2233 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\type-detect\\lib\\type.js" +F2234 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\uid2\\index.js" +F2235 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\uid2\\LICENSE" +F2236 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\uid2\\package.json" +F2237 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\utils-merge\\.travis.yml" +F2238 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\utils-merge\\index.js" +F2239 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\utils-merge\\LICENSE" +F2240 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\utils-merge\\package.json" +F2241 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\utils-merge\\README.md" +F2242 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\vhost\\.npmignore" +F2243 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\vhost\\.travis.yml" +F2244 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\vhost\\index.js" +F2245 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\vhost\\Makefile" +F2246 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\vhost\\package.json" +F2247 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\vhost\\README.md" +F2248 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\which\\LICENSE" +F2249 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\which\\package.json" +F2250 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\which\\README.md" +F2251 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\which\\which.js" +F2252 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\which\\bin\\which" +F2253 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\.npmignore" +F2254 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\.travis.yml" +F2255 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\binding.gyp" +F2256 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\builderror.log" +F2257 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\History.md" +F2258 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\index.js" +F2259 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\Makefile" +F2260 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\package.json" +F2261 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\README.md" +F2262 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\bin\\wscat" +F2263 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\binding.sln" +F2264 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\bufferutil.vcxproj" +F2265 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\bufferutil.vcxproj.filters" +F2266 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\config.gypi" +F2267 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\validation.vcxproj" +F2268 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\validation.vcxproj.filters" +F2269 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\vc140.pdb" +F2270 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\bufferutil.tlog\\bufferutil.lastbuildstate" +F2271 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\bufferutil.tlog\\CL.command.1.tlog" +F2272 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\bufferutil\\bufferutil.tlog\\unsuccessfulbuild" +F2273 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\vc140.pdb" +F2274 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\validation.tlog\\CL.command.1.tlog" +F2275 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\validation.tlog\\unsuccessfulbuild" +F2276 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\build\\Release\\obj\\validation\\validation.tlog\\validation.lastbuildstate" +F2277 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\browser.js" +F2278 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\BufferPool.js" +F2279 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\BufferUtil.fallback.js" +F2280 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\BufferUtil.js" +F2281 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\ErrorCodes.js" +F2282 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\Receiver.hixie.js" +F2283 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\Receiver.js" +F2284 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\Sender.hixie.js" +F2285 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\Sender.js" +F2286 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\Validation.fallback.js" +F2287 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\Validation.js" +F2288 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\WebSocket.js" +F2289 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\lib\\WebSocketServer.js" +F2290 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\node_modules\\commander\\index.js" +F2291 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\node_modules\\commander\\package.json" +F2292 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\node_modules\\commander\\Readme.md" +F2293 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\src\\bufferutil.cc" +F2294 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws\\src\\validation.cc" +F2295 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\.npmignore" +F2296 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\.travis.yml" +F2297 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\index.js" +F2298 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\LICENSE" +F2299 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\package.json" +F2300 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\README.md" +F2301 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\bool.js" +F2302 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\boolean_double.js" +F2303 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\boolean_single.js" +F2304 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\count.js" +F2305 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\default_hash.js" +F2306 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\default_singles.js" +F2307 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\demand_count.js" +F2308 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\divide.js" +F2309 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\implies.js" +F2310 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\implies_hash.js" +F2311 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\line_count.js" +F2312 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\line_count_options.js" +F2313 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\line_count_wrap.js" +F2314 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\nonopt.js" +F2315 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\short.js" +F2316 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\string.js" +F2317 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\usage-options.js" +F2318 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\example\\xup.js" +F2319 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\lib\\minimist.js" +F2320 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\lib\\wordwrap.js" +F2321 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\config.json" +F2322 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\count.js" +F2323 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\dash.js" +F2324 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\mocha.opts" +F2325 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\parse.js" +F2326 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\parse_modified.js" +F2327 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\short.js" +F2328 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\usage.js" +F2329 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\whitespace.js" +F2330 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\_.js" +F2331 DEBUGGERFILE "node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\yargs\\test\\_\\bin.js" diff --git a/src/iisnode/iisnode-inspector-0.7.3.vcxproj b/src/iisnode/iisnode-inspector-0.7.3.vcxproj index c4f3661d..93db5f34 100644 --- a/src/iisnode/iisnode-inspector-0.7.3.vcxproj +++ b/src/iisnode/iisnode-inspector-0.7.3.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -26,19 +26,19 @@ DynamicLibrary - v110 + v140 DynamicLibrary - v110 + v140 DynamicLibrary - v110 + v140 DynamicLibrary - v110 + v140 diff --git a/src/iisnode/iisnode-inspector.vcxproj b/src/iisnode/iisnode-inspector.vcxproj index 18bfc1dc..5ab99f88 100644 --- a/src/iisnode/iisnode-inspector.vcxproj +++ b/src/iisnode/iisnode-inspector.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -26,19 +26,19 @@ DynamicLibrary - v110 + v140 DynamicLibrary - v110 + v140 DynamicLibrary - v110 + v140 DynamicLibrary - v110 + v140 diff --git a/src/iisnode/iisnode.vcxproj b/src/iisnode/iisnode.vcxproj index 4b267b39..2ad6882c 100644 --- a/src/iisnode/iisnode.vcxproj +++ b/src/iisnode/iisnode.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -26,19 +26,19 @@ DynamicLibrary - v110 + v140 DynamicLibrary - v110 + v140 DynamicLibrary - v110 + v140 DynamicLibrary - v110 + v140 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/.bin/node-debug b/src/iisnode/node-inspector-0.7.3/node_modules/.bin/node-debug new file mode 100644 index 00000000..dc33d959 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/.bin/node-debug @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../node-inspector/bin/node-debug.js" "$@" + ret=$? +else + node "$basedir/../node-inspector/bin/node-debug.js" "$@" + ret=$? +fi +exit $ret diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/.bin/node-debug.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/.bin/node-debug.cmd new file mode 100644 index 00000000..a741047c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/.bin/node-debug.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\node-inspector\bin\node-debug.js" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\node-inspector\bin\node-debug.js" %* +) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/.bin/node-inspector b/src/iisnode/node-inspector-0.7.3/node_modules/.bin/node-inspector new file mode 100644 index 00000000..bfa2a978 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/.bin/node-inspector @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../node-inspector/bin/inspector.js" "$@" + ret=$? +else + node "$basedir/../node-inspector/bin/inspector.js" "$@" + ret=$? +fi +exit $ret diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/.bin/node-inspector.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/.bin/node-inspector.cmd new file mode 100644 index 00000000..944a8dce --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/.bin/node-inspector.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\node-inspector\bin\inspector.js" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\node-inspector\bin\inspector.js" %* +) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/_mocha b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/_mocha new file mode 100644 index 00000000..549bf0c4 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/_mocha @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../mocha/bin/_mocha" "$@" + ret=$? +else + node "$basedir/../mocha/bin/_mocha" "$@" + ret=$? +fi +exit $ret diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/_mocha.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/_mocha.cmd new file mode 100644 index 00000000..098f402a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/_mocha.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\mocha\bin\_mocha" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\mocha\bin\_mocha" %* +) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/express b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/express index cad5a1ef..ebacee78 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/express +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/express @@ -1,5 +1,5 @@ #!/bin/sh -basedir=`dirname "$0"` +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") case `uname` in *CYGWIN*) basedir=`cygpath -w "$basedir"`;; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/express.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/express.cmd index a17fbb07..d8071785 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/express.cmd +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/express.cmd @@ -1,5 +1,7 @@ @IF EXIST "%~dp0\node.exe" ( "%~dp0\node.exe" "%~dp0\..\express\bin\express" %* ) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% node "%~dp0\..\express\bin\express" %* ) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/jade b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/jade new file mode 100644 index 00000000..d59b106b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/jade @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../jade/bin/jade" "$@" + ret=$? +else + node "$basedir/../jade/bin/jade" "$@" + ret=$? +fi +exit $ret diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/jade.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/jade.cmd new file mode 100644 index 00000000..271e4040 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/jade.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\jade\bin\jade" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\jade\bin\jade" %* +) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/jshint b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/jshint new file mode 100644 index 00000000..c7104679 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/jshint @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../jshint/bin/jshint" "$@" + ret=$? +else + node "$basedir/../jshint/bin/jshint" "$@" + ret=$? +fi +exit $ret diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/jshint.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/jshint.cmd new file mode 100644 index 00000000..138d4e84 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/jshint.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\jshint\bin\jshint" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\jshint\bin\jshint" %* +) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/mkdirp b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/mkdirp new file mode 100644 index 00000000..4b004672 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/mkdirp @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../mkdirp/bin/cmd.js" "$@" + ret=$? +else + node "$basedir/../mkdirp/bin/cmd.js" "$@" + ret=$? +fi +exit $ret diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/mkdirp.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/mkdirp.cmd new file mode 100644 index 00000000..0d2cdd7c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/mkdirp.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\mkdirp\bin\cmd.js" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\mkdirp\bin\cmd.js" %* +) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/mocha b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/mocha new file mode 100644 index 00000000..43aeb744 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/mocha @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../mocha/bin/mocha" "$@" + ret=$? +else + node "$basedir/../mocha/bin/mocha" "$@" + ret=$? +fi +exit $ret diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/mocha.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/mocha.cmd new file mode 100644 index 00000000..5a8614ae --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/mocha.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\mocha\bin\mocha" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\mocha\bin\mocha" %* +) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/ncp b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/ncp new file mode 100644 index 00000000..96ff01e5 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/ncp @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../ncp/bin/ncp" "$@" + ret=$? +else + node "$basedir/../ncp/bin/ncp" "$@" + ret=$? +fi +exit $ret diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/ncp.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/ncp.cmd new file mode 100644 index 00000000..afbf6d89 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/ncp.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\ncp\bin\ncp" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\ncp\bin\ncp" %* +) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/opener b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/opener index 78483902..3a0a75b8 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/opener +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/opener @@ -1,5 +1,5 @@ #!/bin/sh -basedir=`dirname "$0"` +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") case `uname` in *CYGWIN*) basedir=`cygpath -w "$basedir"`;; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/opener.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/opener.cmd index 8994ecc3..cc86e726 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/opener.cmd +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/opener.cmd @@ -1,5 +1,7 @@ @IF EXIST "%~dp0\node.exe" ( "%~dp0\node.exe" "%~dp0\..\opener\opener.js" %* ) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% node "%~dp0\..\opener\opener.js" %* ) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/rc b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/rc index 4dff20bd..22d17e55 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/rc +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/rc @@ -1,5 +1,5 @@ #!/bin/sh -basedir=`dirname "$0"` +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") case `uname` in *CYGWIN*) basedir=`cygpath -w "$basedir"`;; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/rc.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/rc.cmd index 92dd4414..46fb642b 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/rc.cmd +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/rc.cmd @@ -1,5 +1,7 @@ @IF EXIST "%~dp0\node.exe" ( "%~dp0\node.exe" "%~dp0\..\rc\index.js" %* ) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% node "%~dp0\..\rc\index.js" %* ) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/rimraf b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/rimraf new file mode 100644 index 00000000..3cebd6e8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/rimraf @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../rimraf/bin.js" "$@" + ret=$? +else + node "$basedir/../rimraf/bin.js" "$@" + ret=$? +fi +exit $ret diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/rimraf.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/rimraf.cmd new file mode 100644 index 00000000..9333ec64 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/rimraf.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\rimraf\bin.js" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\rimraf\bin.js" %* +) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/shjs b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/shjs new file mode 100644 index 00000000..1d45691b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/shjs @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../shelljs/bin/shjs" "$@" + ret=$? +else + node "$basedir/../shelljs/bin/shjs" "$@" + ret=$? +fi +exit $ret diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/shjs.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/shjs.cmd new file mode 100644 index 00000000..3d98b0bc --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/shjs.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\shelljs\bin\shjs" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\shelljs\bin\shjs" %* +) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/strip-json-comments b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/strip-json-comments new file mode 100644 index 00000000..b41804c1 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/strip-json-comments @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../strip-json-comments/cli.js" "$@" + ret=$? +else + node "$basedir/../strip-json-comments/cli.js" "$@" + ret=$? +fi +exit $ret diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/strip-json-comments.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/strip-json-comments.cmd new file mode 100644 index 00000000..16825d10 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/strip-json-comments.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\strip-json-comments\cli.js" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\strip-json-comments\cli.js" %* +) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/supports-color b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/supports-color new file mode 100644 index 00000000..fb7c3cac --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/supports-color @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../supports-color/cli.js" "$@" + ret=$? +else + node "$basedir/../supports-color/cli.js" "$@" + ret=$? +fi +exit $ret diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/supports-color.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/supports-color.cmd new file mode 100644 index 00000000..7766c4c8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/supports-color.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\supports-color\cli.js" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\supports-color\cli.js" %* +) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/which b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/which index 9c7f24b0..cbe872c6 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/which +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/which @@ -1,5 +1,5 @@ #!/bin/sh -basedir=`dirname "$0"` +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") case `uname` in *CYGWIN*) basedir=`cygpath -w "$basedir"`;; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/which.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/which.cmd index 1a5cb28c..c5f13198 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/which.cmd +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/which.cmd @@ -1,5 +1,7 @@ @IF EXIST "%~dp0\node.exe" ( "%~dp0\node.exe" "%~dp0\..\which\bin\which" %* ) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% node "%~dp0\..\which\bin\which" %* ) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/wscat b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/wscat index 1a710cfd..8c6f9e67 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/wscat +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/wscat @@ -1,5 +1,5 @@ #!/bin/sh -basedir=`dirname "$0"` +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") case `uname` in *CYGWIN*) basedir=`cygpath -w "$basedir"`;; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/wscat.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/wscat.cmd index aa44584b..90b55e54 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/wscat.cmd +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/.bin/wscat.cmd @@ -1,5 +1,7 @@ @IF EXIST "%~dp0\node.exe" ( "%~dp0\node.exe" "%~dp0\..\ws\bin\wscat" %* ) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% node "%~dp0\..\ws\bin\wscat" %* ) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/assertion-error/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/assertion-error/.npmignore new file mode 100644 index 00000000..f1059538 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/assertion-error/.npmignore @@ -0,0 +1,11 @@ +docs/ +test/ +build/ +components/ +support/ +coverage.html +component.json +lib-cov +.travis.yml +Makefile +*.swp diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/assertion-error/History.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/assertion-error/History.md new file mode 100644 index 00000000..7285b552 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/assertion-error/History.md @@ -0,0 +1,19 @@ +1.0.1 / 2015-03-04 +================== + + * Merge pull request #2 from simonzack/master + * fixes `.stack` on firefox + +1.0.0 / 2013-06-08 +================== + + * readme: change travis and component urls + * refactor: [*] prepare for move to chaijs gh org + +0.1.0 / 2013-04-07 +================== + + * test: use vanilla test runner/assert + * pgk: remove unused deps + * lib: implement + * "Initial commit" diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/assertion-error/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/assertion-error/README.md new file mode 100644 index 00000000..6cf03c8f --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/assertion-error/README.md @@ -0,0 +1,41 @@ +# AssertionError [![Build Status](https://travis-ci.org/chaijs/assertion-error.png?branch=master)](https://travis-ci.org/chaijs/assertion-error) + +> Error constructor for test and validation frameworks that implements standardized AssertionError specification. + +## Installation + +### Node.js + +`assertion-error` is available on [npm](http://npmjs.org). + + $ npm install assertion-error + +### Component + +`assertion-error` is available as a [component](https://github.com/component/component). + + $ component install chaijs/assertion-error + +## License + +(The MIT License) + +Copyright (c) 2013 Jake Luer (http://qualiancy.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/assertion-error/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/assertion-error/index.js new file mode 100644 index 00000000..524a2a64 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/assertion-error/index.js @@ -0,0 +1,112 @@ +/*! + * assertion-error + * Copyright(c) 2013 Jake Luer + * MIT Licensed + */ + +/*! + * Return a function that will copy properties from + * one object to another excluding any originally + * listed. Returned function will create a new `{}`. + * + * @param {String} excluded properties ... + * @return {Function} + */ + +function exclude () { + var excludes = [].slice.call(arguments); + + function excludeProps (res, obj) { + Object.keys(obj).forEach(function (key) { + if (!~excludes.indexOf(key)) res[key] = obj[key]; + }); + } + + return function extendExclude () { + var args = [].slice.call(arguments) + , i = 0 + , res = {}; + + for (; i < args.length; i++) { + excludeProps(res, args[i]); + } + + return res; + }; +}; + +/*! + * Primary Exports + */ + +module.exports = AssertionError; + +/** + * ### AssertionError + * + * An extension of the JavaScript `Error` constructor for + * assertion and validation scenarios. + * + * @param {String} message + * @param {Object} properties to include (optional) + * @param {callee} start stack function (optional) + */ + +function AssertionError (message, _props, ssf) { + var extend = exclude('name', 'message', 'stack', 'constructor', 'toJSON') + , props = extend(_props || {}); + + // default values + this.message = message || 'Unspecified AssertionError'; + this.showDiff = false; + + // copy from properties + for (var key in props) { + this[key] = props[key]; + } + + // capture stack trace + ssf = ssf || arguments.callee; + if (ssf && Error.captureStackTrace) { + Error.captureStackTrace(this, ssf); + } else { + this.stack = new Error().stack; + } +} + +/*! + * Inherit from Error.prototype + */ + +AssertionError.prototype = Object.create(Error.prototype); + +/*! + * Statically set name + */ + +AssertionError.prototype.name = 'AssertionError'; + +/*! + * Ensure correct constructor + */ + +AssertionError.prototype.constructor = AssertionError; + +/** + * Allow errors to be converted to JSON for static transfer. + * + * @param {Boolean} include stack (default: `true`) + * @return {Object} object that can be `JSON.stringify` + */ + +AssertionError.prototype.toJSON = function (stack) { + var extend = exclude('constructor', 'toJSON', 'stack') + , props = extend({ name: this.name }, this); + + // include stack if exists and not turned off + if (false !== stack && this.stack) { + props.stack = this.stack; + } + + return props; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/assertion-error/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/assertion-error/package.json new file mode 100644 index 00000000..d5e8394f --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/assertion-error/package.json @@ -0,0 +1,82 @@ +{ + "_args": [ + [ + "assertion-error@^1.0.1", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai" + ] + ], + "_from": "assertion-error@>=1.0.1 <2.0.0", + "_id": "assertion-error@1.0.1", + "_inCache": true, + "_installable": true, + "_location": "/assertion-error", + "_npmUser": { + "email": "jake@alogicalparadox.com", + "name": "jakeluer" + }, + "_npmVersion": "1.4.28", + "_phantomChildren": {}, + "_requested": { + "name": "assertion-error", + "raw": "assertion-error@^1.0.1", + "rawSpec": "^1.0.1", + "scope": null, + "spec": ">=1.0.1 <2.0.0", + "type": "range" + }, + "_requiredBy": [ + "/chai" + ], + "_resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.1.tgz", + "_shasum": "35aaeec33097f11f42399ecadf33faccd27f5c4c", + "_shrinkwrap": null, + "_spec": "assertion-error@^1.0.1", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai", + "author": { + "email": "jake@qualiancy.com", + "name": "Jake Luer", + "url": "http://qualiancy.com" + }, + "bugs": { + "url": "https://github.com/chaijs/assertion-error/issues" + }, + "dependencies": {}, + "description": "Error constructor for test and validation frameworks that implements standardized AssertionError specification.", + "devDependencies": { + "component": "*" + }, + "directories": {}, + "dist": { + "shasum": "35aaeec33097f11f42399ecadf33faccd27f5c4c", + "tarball": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.1.tgz" + }, + "engines": { + "node": "*" + }, + "gitHead": "db10d2fc753f00b3dad24956921056eaf1e03708", + "homepage": "https://github.com/chaijs/assertion-error", + "keywords": [ + "test", + "assertion", + "assertion-error" + ], + "license": "MIT", + "main": "./index", + "maintainers": [ + { + "email": "jake@alogicalparadox.com", + "name": "jakeluer" + } + ], + "name": "assertion-error", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/chaijs/assertion-error.git" + }, + "scripts": { + "test": "make test" + }, + "version": "1.0.1" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/async/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/async/README.md new file mode 100644 index 00000000..acee1b24 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/async/README.md @@ -0,0 +1,1585 @@ +# Async.js + +[![Build Status via Travis CI](https://travis-ci.org/caolan/async.png?branch=master)](https://travis-ci.org/caolan/async) + + +Async is a utility module which provides straight-forward, powerful functions +for working with asynchronous JavaScript. Although originally designed for +use with [Node.js](http://nodejs.org), it can also be used directly in the +browser. Also supports [component](https://github.com/component/component). + +Async provides around 20 functions that include the usual 'functional' +suspects (`map`, `reduce`, `filter`, `each`…) as well as some common patterns +for asynchronous control flow (`parallel`, `series`, `waterfall`…). All these +functions assume you follow the Node.js convention of providing a single +callback as the last argument of your `async` function. + + +## Quick Examples + +```javascript +async.map(['file1','file2','file3'], fs.stat, function(err, results){ + // results is now an array of stats for each file +}); + +async.filter(['file1','file2','file3'], fs.exists, function(results){ + // results now equals an array of the existing files +}); + +async.parallel([ + function(){ ... }, + function(){ ... } +], callback); + +async.series([ + function(){ ... }, + function(){ ... } +]); +``` + +There are many more functions available so take a look at the docs below for a +full list. This module aims to be comprehensive, so if you feel anything is +missing please create a GitHub issue for it. + +## Common Pitfalls + +### Binding a context to an iterator + +This section is really about `bind`, not about `async`. If you are wondering how to +make `async` execute your iterators in a given context, or are confused as to why +a method of another library isn't working as an iterator, study this example: + +```js +// Here is a simple object with an (unnecessarily roundabout) squaring method +var AsyncSquaringLibrary = { + squareExponent: 2, + square: function(number, callback){ + var result = Math.pow(number, this.squareExponent); + setTimeout(function(){ + callback(null, result); + }, 200); + } +}; + +async.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){ + // result is [NaN, NaN, NaN] + // This fails because the `this.squareExponent` expression in the square + // function is not evaluated in the context of AsyncSquaringLibrary, and is + // therefore undefined. +}); + +async.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){ + // result is [1, 4, 9] + // With the help of bind we can attach a context to the iterator before + // passing it to async. Now the square function will be executed in its + // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent` + // will be as expected. +}); +``` + +## Download + +The source is available for download from +[GitHub](http://github.com/caolan/async). +Alternatively, you can install using Node Package Manager (`npm`): + + npm install async + +__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed + +## In the Browser + +So far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. + +Usage: + +```html + + +``` + +## Documentation + +### Collections + +* [`each`](#each) +* [`eachSeries`](#eachSeries) +* [`eachLimit`](#eachLimit) +* [`map`](#map) +* [`mapSeries`](#mapSeries) +* [`mapLimit`](#mapLimit) +* [`filter`](#filter) +* [`filterSeries`](#filterSeries) +* [`reject`](#reject) +* [`rejectSeries`](#rejectSeries) +* [`reduce`](#reduce) +* [`reduceRight`](#reduceRight) +* [`detect`](#detect) +* [`detectSeries`](#detectSeries) +* [`sortBy`](#sortBy) +* [`some`](#some) +* [`every`](#every) +* [`concat`](#concat) +* [`concatSeries`](#concatSeries) + +### Control Flow + +* [`series`](#series) +* [`parallel`](#parallel) +* [`parallelLimit`](#parallellimittasks-limit-callback) +* [`whilst`](#whilst) +* [`doWhilst`](#doWhilst) +* [`until`](#until) +* [`doUntil`](#doUntil) +* [`forever`](#forever) +* [`waterfall`](#waterfall) +* [`compose`](#compose) +* [`seq`](#seq) +* [`applyEach`](#applyEach) +* [`applyEachSeries`](#applyEachSeries) +* [`queue`](#queue) +* [`cargo`](#cargo) +* [`auto`](#auto) +* [`iterator`](#iterator) +* [`apply`](#apply) +* [`nextTick`](#nextTick) +* [`times`](#times) +* [`timesSeries`](#timesSeries) + +### Utils + +* [`memoize`](#memoize) +* [`unmemoize`](#unmemoize) +* [`log`](#log) +* [`dir`](#dir) +* [`noConflict`](#noConflict) + + +## Collections + + + +### each(arr, iterator, callback) + +Applies the function `iterator` to each item in `arr`, in parallel. +The `iterator` is called with an item from the list, and a callback for when it +has finished. If the `iterator` passes an error to its `callback`, the main +`callback` (for the `each` function) is immediately called with the error. + +Note, that since this function applies `iterator` to each item in parallel, +there is no guarantee that the iterator functions will complete in order. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A function to apply to each item in `arr`. + The iterator is passed a `callback(err)` which must be called once it has + completed. If no error has occured, the `callback` should be run without + arguments or with an explicit `null` argument. +* `callback(err)` - A callback which is called when all `iterator` functions + have finished, or an error occurs. + +__Examples__ + + +```js +// assuming openFiles is an array of file names and saveFile is a function +// to save the modified contents of that file: + +async.each(openFiles, saveFile, function(err){ + // if any of the saves produced an error, err would equal that error +}); +``` + +```js +// assuming openFiles is an array of file names and saveFile is a function +// to save the modified contents of that file: + +async.each(openFiles, function( file, callback) { + + // Perform operation on file here. + console.log('Processing file ' + file); + callback(); + + if( file.length > 32 ) { + console.log('This file name is too long'); + callback('File name too long'); + + return; + } else { + console.log('File saved'); + callback(); + } +}, function(err){ + // if any of the saves produced an error, err would equal that error + if( err ) { + // One of the iterations produced an error. + // All processing will now stop. + console.log('A file failed to process'); + } else { + console.log('All files have been processed successfully'); + } +}); +``` + +--------------------------------------- + + + +### eachSeries(arr, iterator, callback) + +The same as [`each`](#each), only `iterator` is applied to each item in `arr` in +series. The next `iterator` is only called once the current one has completed. +This means the `iterator` functions will complete in order. + + +--------------------------------------- + + + +### eachLimit(arr, limit, iterator, callback) + +The same as [`each`](#each), only no more than `limit` `iterator`s will be simultaneously +running at any time. + +Note that the items in `arr` are not processed in batches, so there is no guarantee that +the first `limit` `iterator` functions will complete before any others are started. + +__Arguments__ + +* `arr` - An array to iterate over. +* `limit` - The maximum number of `iterator`s to run at any time. +* `iterator(item, callback)` - A function to apply to each item in `arr`. + The iterator is passed a `callback(err)` which must be called once it has + completed. If no error has occured, the callback should be run without + arguments or with an explicit `null` argument. +* `callback(err)` - A callback which is called when all `iterator` functions + have finished, or an error occurs. + +__Example__ + +```js +// Assume documents is an array of JSON objects and requestApi is a +// function that interacts with a rate-limited REST api. + +async.eachLimit(documents, 20, requestApi, function(err){ + // if any of the saves produced an error, err would equal that error +}); +``` + +--------------------------------------- + + +### map(arr, iterator, callback) + +Produces a new array of values by mapping each value in `arr` through +the `iterator` function. The `iterator` is called with an item from `arr` and a +callback for when it has finished processing. Each of these callback takes 2 arguments: +an `error`, and the transformed item from `arr`. If `iterator` passes an error to this +callback, the main `callback` (for the `map` function) is immediately called with the error. + +Note, that since this function applies the `iterator` to each item in parallel, +there is no guarantee that the `iterator` functions will complete in order. +However, the results array will be in the same order as the original `arr`. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A function to apply to each item in `arr`. + The iterator is passed a `callback(err, transformed)` which must be called once + it has completed with an error (which can be `null`) and a transformed item. +* `callback(err, results)` - A callback which is called when all `iterator` + functions have finished, or an error occurs. Results is an array of the + transformed items from the `arr`. + +__Example__ + +```js +async.map(['file1','file2','file3'], fs.stat, function(err, results){ + // results is now an array of stats for each file +}); +``` + +--------------------------------------- + + +### mapSeries(arr, iterator, callback) + +The same as [`map`](#map), only the `iterator` is applied to each item in `arr` in +series. The next `iterator` is only called once the current one has completed. +The results array will be in the same order as the original. + + +--------------------------------------- + + +### mapLimit(arr, limit, iterator, callback) + +The same as [`map`](#map), only no more than `limit` `iterator`s will be simultaneously +running at any time. + +Note that the items are not processed in batches, so there is no guarantee that +the first `limit` `iterator` functions will complete before any others are started. + +__Arguments__ + +* `arr` - An array to iterate over. +* `limit` - The maximum number of `iterator`s to run at any time. +* `iterator(item, callback)` - A function to apply to each item in `arr`. + The iterator is passed a `callback(err, transformed)` which must be called once + it has completed with an error (which can be `null`) and a transformed item. +* `callback(err, results)` - A callback which is called when all `iterator` + calls have finished, or an error occurs. The result is an array of the + transformed items from the original `arr`. + +__Example__ + +```js +async.mapLimit(['file1','file2','file3'], 1, fs.stat, function(err, results){ + // results is now an array of stats for each file +}); +``` + +--------------------------------------- + + + +### filter(arr, iterator, callback) + +__Alias:__ `select` + +Returns a new array of all the values in `arr` which pass an async truth test. +_The callback for each `iterator` call only accepts a single argument of `true` or +`false`; it does not accept an error argument first!_ This is in-line with the +way node libraries work with truth tests like `fs.exists`. This operation is +performed in parallel, but the results array will be in the same order as the +original. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A truth test to apply to each item in `arr`. + The `iterator` is passed a `callback(truthValue)`, which must be called with a + boolean argument once it has completed. +* `callback(results)` - A callback which is called after all the `iterator` + functions have finished. + +__Example__ + +```js +async.filter(['file1','file2','file3'], fs.exists, function(results){ + // results now equals an array of the existing files +}); +``` + +--------------------------------------- + + + +### filterSeries(arr, iterator, callback) + +__Alias:__ `selectSeries` + +The same as [`filter`](#filter) only the `iterator` is applied to each item in `arr` in +series. The next `iterator` is only called once the current one has completed. +The results array will be in the same order as the original. + +--------------------------------------- + + +### reject(arr, iterator, callback) + +The opposite of [`filter`](#filter). Removes values that pass an `async` truth test. + +--------------------------------------- + + +### rejectSeries(arr, iterator, callback) + +The same as [`reject`](#reject), only the `iterator` is applied to each item in `arr` +in series. + + +--------------------------------------- + + +### reduce(arr, memo, iterator, callback) + +__Aliases:__ `inject`, `foldl` + +Reduces `arr` into a single value using an async `iterator` to return +each successive step. `memo` is the initial state of the reduction. +This function only operates in series. + +For performance reasons, it may make sense to split a call to this function into +a parallel map, and then use the normal `Array.prototype.reduce` on the results. +This function is for situations where each step in the reduction needs to be async; +if you can get the data before reducing it, then it's probably a good idea to do so. + +__Arguments__ + +* `arr` - An array to iterate over. +* `memo` - The initial state of the reduction. +* `iterator(memo, item, callback)` - A function applied to each item in the + array to produce the next step in the reduction. The `iterator` is passed a + `callback(err, reduction)` which accepts an optional error as its first + argument, and the state of the reduction as the second. If an error is + passed to the callback, the reduction is stopped and the main `callback` is + immediately called with the error. +* `callback(err, result)` - A callback which is called after all the `iterator` + functions have finished. Result is the reduced value. + +__Example__ + +```js +async.reduce([1,2,3], 0, function(memo, item, callback){ + // pointless async: + process.nextTick(function(){ + callback(null, memo + item) + }); +}, function(err, result){ + // result is now equal to the last value of memo, which is 6 +}); +``` + +--------------------------------------- + + +### reduceRight(arr, memo, iterator, callback) + +__Alias:__ `foldr` + +Same as [`reduce`](#reduce), only operates on `arr` in reverse order. + + +--------------------------------------- + + +### detect(arr, iterator, callback) + +Returns the first value in `arr` that passes an async truth test. The +`iterator` is applied in parallel, meaning the first iterator to return `true` will +fire the detect `callback` with that result. That means the result might not be +the first item in the original `arr` (in terms of order) that passes the test. + +If order within the original `arr` is important, then look at [`detectSeries`](#detectSeries). + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A truth test to apply to each item in `arr`. + The iterator is passed a `callback(truthValue)` which must be called with a + boolean argument once it has completed. +* `callback(result)` - A callback which is called as soon as any iterator returns + `true`, or after all the `iterator` functions have finished. Result will be + the first item in the array that passes the truth test (iterator) or the + value `undefined` if none passed. + +__Example__ + +```js +async.detect(['file1','file2','file3'], fs.exists, function(result){ + // result now equals the first file in the list that exists +}); +``` + +--------------------------------------- + + +### detectSeries(arr, iterator, callback) + +The same as [`detect`](#detect), only the `iterator` is applied to each item in `arr` +in series. This means the result is always the first in the original `arr` (in +terms of array order) that passes the truth test. + + +--------------------------------------- + + +### sortBy(arr, iterator, callback) + +Sorts a list by the results of running each `arr` value through an async `iterator`. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A function to apply to each item in `arr`. + The iterator is passed a `callback(err, sortValue)` which must be called once it + has completed with an error (which can be `null`) and a value to use as the sort + criteria. +* `callback(err, results)` - A callback which is called after all the `iterator` + functions have finished, or an error occurs. Results is the items from + the original `arr` sorted by the values returned by the `iterator` calls. + +__Example__ + +```js +async.sortBy(['file1','file2','file3'], function(file, callback){ + fs.stat(file, function(err, stats){ + callback(err, stats.mtime); + }); +}, function(err, results){ + // results is now the original array of files sorted by + // modified date +}); +``` + +__Sort Order__ + +By modifying the callback parameter the sorting order can be influenced: + + //ascending order + async.sortBy([1,9,3,5], function(x, callback){ + callback(err, x); + }, function(err,result){ + //result callback + } ); + + //descending order + async.sortBy([1,9,3,5], function(x, callback){ + callback(err, x*-1); //<- x*-1 instead of x, turns the order around + }, function(err,result){ + //result callback + } ); + + +--------------------------------------- + + +### some(arr, iterator, callback) + +__Alias:__ `any` + +Returns `true` if at least one element in the `arr` satisfies an async test. +_The callback for each iterator call only accepts a single argument of `true` or +`false`; it does not accept an error argument first!_ This is in-line with the +way node libraries work with truth tests like `fs.exists`. Once any iterator +call returns `true`, the main `callback` is immediately called. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A truth test to apply to each item in the array + in parallel. The iterator is passed a callback(truthValue) which must be + called with a boolean argument once it has completed. +* `callback(result)` - A callback which is called as soon as any iterator returns + `true`, or after all the iterator functions have finished. Result will be + either `true` or `false` depending on the values of the async tests. + +__Example__ + +```js +async.some(['file1','file2','file3'], fs.exists, function(result){ + // if result is true then at least one of the files exists +}); +``` + +--------------------------------------- + + +### every(arr, iterator, callback) + +__Alias:__ `all` + +Returns `true` if every element in `arr` satisfies an async test. +_The callback for each `iterator` call only accepts a single argument of `true` or +`false`; it does not accept an error argument first!_ This is in-line with the +way node libraries work with truth tests like `fs.exists`. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A truth test to apply to each item in the array + in parallel. The iterator is passed a callback(truthValue) which must be + called with a boolean argument once it has completed. +* `callback(result)` - A callback which is called after all the `iterator` + functions have finished. Result will be either `true` or `false` depending on + the values of the async tests. + +__Example__ + +```js +async.every(['file1','file2','file3'], fs.exists, function(result){ + // if result is true then every file exists +}); +``` + +--------------------------------------- + + +### concat(arr, iterator, callback) + +Applies `iterator` to each item in `arr`, concatenating the results. Returns the +concatenated list. The `iterator`s are called in parallel, and the results are +concatenated as they return. There is no guarantee that the results array will +be returned in the original order of `arr` passed to the `iterator` function. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A function to apply to each item in `arr`. + The iterator is passed a `callback(err, results)` which must be called once it + has completed with an error (which can be `null`) and an array of results. +* `callback(err, results)` - A callback which is called after all the `iterator` + functions have finished, or an error occurs. Results is an array containing + the concatenated results of the `iterator` function. + +__Example__ + +```js +async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){ + // files is now a list of filenames that exist in the 3 directories +}); +``` + +--------------------------------------- + + +### concatSeries(arr, iterator, callback) + +Same as [`concat`](#concat), but executes in series instead of parallel. + + +## Control Flow + + +### series(tasks, [callback]) + +Run the functions in the `tasks` array in series, each one running once the previous +function has completed. If any functions in the series pass an error to its +callback, no more functions are run, and `callback` is immediately called with the value of the error. +Otherwise, `callback` receives an array of results when `tasks` have completed. + +It is also possible to use an object instead of an array. Each property will be +run as a function, and the results will be passed to the final `callback` as an object +instead of an array. This can be a more readable way of handling results from +[`series`](#series). + +**Note** that while many implementations preserve the order of object properties, the +[ECMAScript Language Specifcation](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6) +explicitly states that + +> The mechanics and order of enumerating the properties is not specified. + +So if you rely on the order in which your series of functions are executed, and want +this to work on all platforms, consider using an array. + +__Arguments__ + +* `tasks` - An array or object containing functions to run, each function is passed + a `callback(err, result)` it must call on completion with an error `err` (which can + be `null`) and an optional `result` value. +* `callback(err, results)` - An optional callback to run once all the functions + have completed. This function gets a results array (or object) containing all + the result arguments passed to the `task` callbacks. + +__Example__ + +```js +async.series([ + function(callback){ + // do some stuff ... + callback(null, 'one'); + }, + function(callback){ + // do some more stuff ... + callback(null, 'two'); + } +], +// optional callback +function(err, results){ + // results is now equal to ['one', 'two'] +}); + + +// an example using an object instead of an array +async.series({ + one: function(callback){ + setTimeout(function(){ + callback(null, 1); + }, 200); + }, + two: function(callback){ + setTimeout(function(){ + callback(null, 2); + }, 100); + } +}, +function(err, results) { + // results is now equal to: {one: 1, two: 2} +}); +``` + +--------------------------------------- + + +### parallel(tasks, [callback]) + +Run the `tasks` array of functions in parallel, without waiting until the previous +function has completed. If any of the functions pass an error to its +callback, the main `callback` is immediately called with the value of the error. +Once the `tasks` have completed, the results are passed to the final `callback` as an +array. + +It is also possible to use an object instead of an array. Each property will be +run as a function and the results will be passed to the final `callback` as an object +instead of an array. This can be a more readable way of handling results from +[`parallel`](#parallel). + + +__Arguments__ + +* `tasks` - An array or object containing functions to run. Each function is passed + a `callback(err, result)` which it must call on completion with an error `err` + (which can be `null`) and an optional `result` value. +* `callback(err, results)` - An optional callback to run once all the functions + have completed. This function gets a results array (or object) containing all + the result arguments passed to the task callbacks. + +__Example__ + +```js +async.parallel([ + function(callback){ + setTimeout(function(){ + callback(null, 'one'); + }, 200); + }, + function(callback){ + setTimeout(function(){ + callback(null, 'two'); + }, 100); + } +], +// optional callback +function(err, results){ + // the results array will equal ['one','two'] even though + // the second function had a shorter timeout. +}); + + +// an example using an object instead of an array +async.parallel({ + one: function(callback){ + setTimeout(function(){ + callback(null, 1); + }, 200); + }, + two: function(callback){ + setTimeout(function(){ + callback(null, 2); + }, 100); + } +}, +function(err, results) { + // results is now equals to: {one: 1, two: 2} +}); +``` + +--------------------------------------- + + +### parallelLimit(tasks, limit, [callback]) + +The same as [`parallel`](#parallel), only `tasks` are executed in parallel +with a maximum of `limit` tasks executing at any time. + +Note that the `tasks` are not executed in batches, so there is no guarantee that +the first `limit` tasks will complete before any others are started. + +__Arguments__ + +* `tasks` - An array or object containing functions to run, each function is passed + a `callback(err, result)` it must call on completion with an error `err` (which can + be `null`) and an optional `result` value. +* `limit` - The maximum number of `tasks` to run at any time. +* `callback(err, results)` - An optional callback to run once all the functions + have completed. This function gets a results array (or object) containing all + the result arguments passed to the `task` callbacks. + +--------------------------------------- + + +### whilst(test, fn, callback) + +Repeatedly call `fn`, while `test` returns `true`. Calls `callback` when stopped, +or an error occurs. + +__Arguments__ + +* `test()` - synchronous truth test to perform before each execution of `fn`. +* `fn(callback)` - A function which is called each time `test` passes. The function is + passed a `callback(err)`, which must be called once it has completed with an + optional `err` argument. +* `callback(err)` - A callback which is called after the test fails and repeated + execution of `fn` has stopped. + +__Example__ + +```js +var count = 0; + +async.whilst( + function () { return count < 5; }, + function (callback) { + count++; + setTimeout(callback, 1000); + }, + function (err) { + // 5 seconds have passed + } +); +``` + +--------------------------------------- + + +### doWhilst(fn, test, callback) + +The post-check version of [`whilst`](#whilst). To reflect the difference in +the order of operations, the arguments `test` and `fn` are switched. + +`doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript. + +--------------------------------------- + + +### until(test, fn, callback) + +Repeatedly call `fn` until `test` returns `true`. Calls `callback` when stopped, +or an error occurs. + +The inverse of [`whilst`](#whilst). + +--------------------------------------- + + +### doUntil(fn, test, callback) + +Like [`doWhilst`](#doWhilst), except the `test` is inverted. Note the argument ordering differs from `until`. + +--------------------------------------- + + +### forever(fn, errback) + +Calls the asynchronous function `fn` with a callback parameter that allows it to +call itself again, in series, indefinitely. + +If an error is passed to the callback then `errback` is called with the +error, and execution stops, otherwise it will never be called. + +```js +async.forever( + function(next) { + // next is suitable for passing to things that need a callback(err [, whatever]); + // it will result in this function being called again. + }, + function(err) { + // if next is called with a value in its first parameter, it will appear + // in here as 'err', and execution will stop. + } +); +``` + +--------------------------------------- + + +### waterfall(tasks, [callback]) + +Runs the `tasks` array of functions in series, each passing their results to the next in +the array. However, if any of the `tasks` pass an error to their own callback, the +next function is not executed, and the main `callback` is immediately called with +the error. + +__Arguments__ + +* `tasks` - An array of functions to run, each function is passed a + `callback(err, result1, result2, ...)` it must call on completion. The first + argument is an error (which can be `null`) and any further arguments will be + passed as arguments in order to the next task. +* `callback(err, [results])` - An optional callback to run once all the functions + have completed. This will be passed the results of the last task's callback. + + + +__Example__ + +```js +async.waterfall([ + function(callback){ + callback(null, 'one', 'two'); + }, + function(arg1, arg2, callback){ + // arg1 now equals 'one' and arg2 now equals 'two' + callback(null, 'three'); + }, + function(arg1, callback){ + // arg1 now equals 'three' + callback(null, 'done'); + } +], function (err, result) { + // result now equals 'done' +}); +``` + +--------------------------------------- + +### compose(fn1, fn2...) + +Creates a function which is a composition of the passed asynchronous +functions. Each function consumes the return value of the function that +follows. Composing functions `f()`, `g()`, and `h()` would produce the result of +`f(g(h()))`, only this version uses callbacks to obtain the return values. + +Each function is executed with the `this` binding of the composed function. + +__Arguments__ + +* `functions...` - the asynchronous functions to compose + + +__Example__ + +```js +function add1(n, callback) { + setTimeout(function () { + callback(null, n + 1); + }, 10); +} + +function mul3(n, callback) { + setTimeout(function () { + callback(null, n * 3); + }, 10); +} + +var add1mul3 = async.compose(mul3, add1); + +add1mul3(4, function (err, result) { + // result now equals 15 +}); +``` + +--------------------------------------- + +### seq(fn1, fn2...) + +Version of the compose function that is more natural to read. +Each following function consumes the return value of the latter function. + +Each function is executed with the `this` binding of the composed function. + +__Arguments__ + +* functions... - the asynchronous functions to compose + + +__Example__ + +```js +// Requires lodash (or underscore), express3 and dresende's orm2. +// Part of an app, that fetches cats of the logged user. +// This example uses `seq` function to avoid overnesting and error +// handling clutter. +app.get('/cats', function(request, response) { + function handleError(err, data, callback) { + if (err) { + console.error(err); + response.json({ status: 'error', message: err.message }); + } + else { + callback(data); + } + } + var User = request.models.User; + asyc.seq( + _.bind(User.get, User), // 'User.get' has signature (id, callback(err, data)) + handleError, + function(user, fn) { + user.getCats(fn); // 'getCats' has signature (callback(err, data)) + }, + handleError, + function(cats) { + response.json({ status: 'ok', message: 'Cats found', data: cats }); + } + )(req.session.user_id); + } +}); +``` + +--------------------------------------- + +### applyEach(fns, args..., callback) + +Applies the provided arguments to each function in the array, calling +`callback` after all functions have completed. If you only provide the first +argument, then it will return a function which lets you pass in the +arguments as if it were a single function call. + +__Arguments__ + +* `fns` - the asynchronous functions to all call with the same arguments +* `args...` - any number of separate arguments to pass to the function +* `callback` - the final argument should be the callback, called when all + functions have completed processing + + +__Example__ + +```js +async.applyEach([enableSearch, updateSchema], 'bucket', callback); + +// partial application example: +async.each( + buckets, + async.applyEach([enableSearch, updateSchema]), + callback +); +``` + +--------------------------------------- + + +### applyEachSeries(arr, iterator, callback) + +The same as [`applyEach`](#applyEach) only the functions are applied in series. + +--------------------------------------- + + +### queue(worker, concurrency) + +Creates a `queue` object with the specified `concurrency`. Tasks added to the +`queue` are processed in parallel (up to the `concurrency` limit). If all +`worker`s are in progress, the task is queued until one becomes available. +Once a `worker` completes a `task`, that `task`'s callback is called. + +__Arguments__ + +* `worker(task, callback)` - An asynchronous function for processing a queued + task, which must call its `callback(err)` argument when finished, with an + optional `error` as an argument. +* `concurrency` - An `integer` for determining how many `worker` functions should be + run in parallel. + +__Queue objects__ + +The `queue` object returned by this function has the following properties and +methods: + +* `length()` - a function returning the number of items waiting to be processed. +* `running()` - a function returning the number of items currently being processed. +* `idle()` - a function returning false if there are items waiting or being processed, or true if not. +* `concurrency` - an integer for determining how many `worker` functions should be + run in parallel. This property can be changed after a `queue` is created to + alter the concurrency on-the-fly. +* `push(task, [callback])` - add a new task to the `queue`. Calls `callback` once + the `worker` has finished processing the task. Instead of a single task, a `tasks` array + can be submitted. The respective callback is used for every task in the list. +* `unshift(task, [callback])` - add a new task to the front of the `queue`. +* `saturated` - a callback that is called when the `queue` length hits the `concurrency` limit, + and further tasks will be queued. +* `empty` - a callback that is called when the last item from the `queue` is given to a `worker`. +* `drain` - a callback that is called when the last item from the `queue` has returned from the `worker`. + +__Example__ + +```js +// create a queue object with concurrency 2 + +var q = async.queue(function (task, callback) { + console.log('hello ' + task.name); + callback(); +}, 2); + + +// assign a callback +q.drain = function() { + console.log('all items have been processed'); +} + +// add some items to the queue + +q.push({name: 'foo'}, function (err) { + console.log('finished processing foo'); +}); +q.push({name: 'bar'}, function (err) { + console.log('finished processing bar'); +}); + +// add some items to the queue (batch-wise) + +q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) { + console.log('finished processing bar'); +}); + +// add some items to the front of the queue + +q.unshift({name: 'bar'}, function (err) { + console.log('finished processing bar'); +}); +``` + +--------------------------------------- + + +### cargo(worker, [payload]) + +Creates a `cargo` object with the specified payload. Tasks added to the +cargo will be processed altogether (up to the `payload` limit). If the +`worker` is in progress, the task is queued until it becomes available. Once +the `worker` has completed some tasks, each callback of those tasks is called. + +While [queue](#queue) passes only one task to one of a group of workers +at a time, cargo passes an array of tasks to a single worker, repeating +when the worker is finished. + +__Arguments__ + +* `worker(tasks, callback)` - An asynchronous function for processing an array of + queued tasks, which must call its `callback(err)` argument when finished, with + an optional `err` argument. +* `payload` - An optional `integer` for determining how many tasks should be + processed per round; if omitted, the default is unlimited. + +__Cargo objects__ + +The `cargo` object returned by this function has the following properties and +methods: + +* `length()` - A function returning the number of items waiting to be processed. +* `payload` - An `integer` for determining how many tasks should be + process per round. This property can be changed after a `cargo` is created to + alter the payload on-the-fly. +* `push(task, [callback])` - Adds `task` to the `queue`. The callback is called + once the `worker` has finished processing the task. Instead of a single task, an array of `tasks` + can be submitted. The respective callback is used for every task in the list. +* `saturated` - A callback that is called when the `queue.length()` hits the concurrency and further tasks will be queued. +* `empty` - A callback that is called when the last item from the `queue` is given to a `worker`. +* `drain` - A callback that is called when the last item from the `queue` has returned from the `worker`. + +__Example__ + +```js +// create a cargo object with payload 2 + +var cargo = async.cargo(function (tasks, callback) { + for(var i=0; i +### auto(tasks, [callback]) + +Determines the best order for running the functions in `tasks`, based on their +requirements. Each function can optionally depend on other functions being completed +first, and each function is run as soon as its requirements are satisfied. + +If any of the functions pass an error to their callback, it will not +complete (so any other functions depending on it will not run), and the main +`callback` is immediately called with the error. Functions also receive an +object containing the results of functions which have completed so far. + +Note, all functions are called with a `results` object as a second argument, +so it is unsafe to pass functions in the `tasks` object which cannot handle the +extra argument. + +For example, this snippet of code: + +```js +async.auto({ + readData: async.apply(fs.readFile, 'data.txt', 'utf-8') +}, callback); +``` + +will have the effect of calling `readFile` with the results object as the last +argument, which will fail: + +```js +fs.readFile('data.txt', 'utf-8', cb, {}); +``` + +Instead, wrap the call to `readFile` in a function which does not forward the +`results` object: + +```js +async.auto({ + readData: function(cb, results){ + fs.readFile('data.txt', 'utf-8', cb); + } +}, callback); +``` + +__Arguments__ + +* `tasks` - An object literal (containing named functions) or an array (of + requirements, with the function itself the last item in the array). The key + used for each function or array is used when specifying requirements. The + function receives two arguments: (1) a `callback(err, result)` which must be + called when finished, passing an `error` (which can be `null`) and the result of + the function's execution, and (2) a `results` object, containing the results of + the previously executed functions. +* `callback(err, results)` - An optional callback which is called when all the + tasks have been completed. It receives the `err` argument if any `tasks` + pass an error to their callback. Results are always returned; however, if + an error occurs, no further `tasks` will be performed, and the results + object will only contain partial results. + + +__Example__ + +```js +async.auto({ + get_data: function(callback){ + console.log('in get_data'); + // async code to get some data + callback(null, 'data', 'converted to array'); + }, + make_folder: function(callback){ + console.log('in make_folder'); + // async code to create a directory to store a file in + // this is run at the same time as getting the data + callback(null, 'folder'); + }, + write_file: ['get_data', 'make_folder', function(callback, results){ + console.log('in write_file', JSON.stringify(results)); + // once there is some data and the directory exists, + // write the data to a file in the directory + callback(null, 'filename'); + }], + email_link: ['write_file', function(callback, results){ + console.log('in email_link', JSON.stringify(results)); + // once the file is written let's email a link to it... + // results.write_file contains the filename returned by write_file. + callback(null, {'file':results.write_file, 'email':'user@example.com'}); + }] +}, function(err, results) { + console.log('err = ', err); + console.log('results = ', results); +}); +``` + +This is a fairly trivial example, but to do this using the basic parallel and +series functions would look like this: + +```js +async.parallel([ + function(callback){ + console.log('in get_data'); + // async code to get some data + callback(null, 'data', 'converted to array'); + }, + function(callback){ + console.log('in make_folder'); + // async code to create a directory to store a file in + // this is run at the same time as getting the data + callback(null, 'folder'); + } +], +function(err, results){ + async.series([ + function(callback){ + console.log('in write_file', JSON.stringify(results)); + // once there is some data and the directory exists, + // write the data to a file in the directory + results.push('filename'); + callback(null); + }, + function(callback){ + console.log('in email_link', JSON.stringify(results)); + // once the file is written let's email a link to it... + callback(null, {'file':results.pop(), 'email':'user@example.com'}); + } + ]); +}); +``` + +For a complicated series of `async` tasks, using the [`auto`](#auto) function makes adding +new tasks much easier (and the code more readable). + + +--------------------------------------- + + +### iterator(tasks) + +Creates an iterator function which calls the next function in the `tasks` array, +returning a continuation to call the next one after that. It's also possible to +“peek” at the next iterator with `iterator.next()`. + +This function is used internally by the `async` module, but can be useful when +you want to manually control the flow of functions in series. + +__Arguments__ + +* `tasks` - An array of functions to run. + +__Example__ + +```js +var iterator = async.iterator([ + function(){ sys.p('one'); }, + function(){ sys.p('two'); }, + function(){ sys.p('three'); } +]); + +node> var iterator2 = iterator(); +'one' +node> var iterator3 = iterator2(); +'two' +node> iterator3(); +'three' +node> var nextfn = iterator2.next(); +node> nextfn(); +'three' +``` + +--------------------------------------- + + +### apply(function, arguments..) + +Creates a continuation function with some arguments already applied. + +Useful as a shorthand when combined with other control flow functions. Any arguments +passed to the returned function are added to the arguments originally passed +to apply. + +__Arguments__ + +* `function` - The function you want to eventually apply all arguments to. +* `arguments...` - Any number of arguments to automatically apply when the + continuation is called. + +__Example__ + +```js +// using apply + +async.parallel([ + async.apply(fs.writeFile, 'testfile1', 'test1'), + async.apply(fs.writeFile, 'testfile2', 'test2'), +]); + + +// the same process without using apply + +async.parallel([ + function(callback){ + fs.writeFile('testfile1', 'test1', callback); + }, + function(callback){ + fs.writeFile('testfile2', 'test2', callback); + } +]); +``` + +It's possible to pass any number of additional arguments when calling the +continuation: + +```js +node> var fn = async.apply(sys.puts, 'one'); +node> fn('two', 'three'); +one +two +three +``` + +--------------------------------------- + + +### nextTick(callback) + +Calls `callback` on a later loop around the event loop. In Node.js this just +calls `process.nextTick`; in the browser it falls back to `setImmediate(callback)` +if available, otherwise `setTimeout(callback, 0)`, which means other higher priority +events may precede the execution of `callback`. + +This is used internally for browser-compatibility purposes. + +__Arguments__ + +* `callback` - The function to call on a later loop around the event loop. + +__Example__ + +```js +var call_order = []; +async.nextTick(function(){ + call_order.push('two'); + // call_order now equals ['one','two'] +}); +call_order.push('one') +``` + + +### times(n, callback) + +Calls the `callback` function `n` times, and accumulates results in the same manner +you would use with [`map`](#map). + +__Arguments__ + +* `n` - The number of times to run the function. +* `callback` - The function to call `n` times. + +__Example__ + +```js +// Pretend this is some complicated async factory +var createUser = function(id, callback) { + callback(null, { + id: 'user' + id + }) +} +// generate 5 users +async.times(5, function(n, next){ + createUser(n, function(err, user) { + next(err, user) + }) +}, function(err, users) { + // we should now have 5 users +}); +``` + + +### timesSeries(n, callback) + +The same as [`times`](#times), only the iterator is applied to each item in `arr` in +series. The next `iterator` is only called once the current one has completed. +The results array will be in the same order as the original. + + +## Utils + + +### memoize(fn, [hasher]) + +Caches the results of an `async` function. When creating a hash to store function +results against, the callback is omitted from the hash and an optional hash +function can be used. + +The cache of results is exposed as the `memo` property of the function returned +by `memoize`. + +__Arguments__ + +* `fn` - The function to proxy and cache results from. +* `hasher` - Tn optional function for generating a custom hash for storing + results. It has all the arguments applied to it apart from the callback, and + must be synchronous. + +__Example__ + +```js +var slow_fn = function (name, callback) { + // do something + callback(null, result); +}; +var fn = async.memoize(slow_fn); + +// fn can now be used as if it were slow_fn +fn('some name', function () { + // callback +}); +``` + + +### unmemoize(fn) + +Undoes a [`memoize`](#memoize)d function, reverting it to the original, unmemoized +form. Handy for testing. + +__Arguments__ + +* `fn` - the memoized function + + +### log(function, arguments) + +Logs the result of an `async` function to the `console`. Only works in Node.js or +in browsers that support `console.log` and `console.error` (such as FF and Chrome). +If multiple arguments are returned from the async function, `console.log` is +called on each argument in order. + +__Arguments__ + +* `function` - The function you want to eventually apply all arguments to. +* `arguments...` - Any number of arguments to apply to the function. + +__Example__ + +```js +var hello = function(name, callback){ + setTimeout(function(){ + callback(null, 'hello ' + name); + }, 1000); +}; +``` +```js +node> async.log(hello, 'world'); +'hello world' +``` + +--------------------------------------- + + +### dir(function, arguments) + +Logs the result of an `async` function to the `console` using `console.dir` to +display the properties of the resulting object. Only works in Node.js or +in browsers that support `console.dir` and `console.error` (such as FF and Chrome). +If multiple arguments are returned from the async function, `console.dir` is +called on each argument in order. + +__Arguments__ + +* `function` - The function you want to eventually apply all arguments to. +* `arguments...` - Any number of arguments to apply to the function. + +__Example__ + +```js +var hello = function(name, callback){ + setTimeout(function(){ + callback(null, {hello: name}); + }, 1000); +}; +``` +```js +node> async.dir(hello, 'world'); +{hello: 'world'} +``` + +--------------------------------------- + + +### noConflict() + +Changes the value of `async` back to its original value, returning a reference to the +`async` object. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/async/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/async/package.json index 4ff19c43..4a85c751 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/async/package.json +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/async/package.json @@ -1,45 +1,86 @@ { - "name": "async", - "description": "Higher-order functions and common patterns for asynchronous code", - "main": "./lib/async", + "_args": [ + [ + "async@~0.4", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector" + ] + ], + "_from": "async@>=0.4.0 <0.5.0", + "_id": "async@0.4.1", + "_inCache": true, + "_installable": true, + "_location": "/async", + "_npmUser": { + "email": "caolan.mcmahon@gmail.com", + "name": "caolan" + }, + "_npmVersion": "1.4.3", + "_phantomChildren": {}, + "_requested": { + "name": "async", + "raw": "async@~0.4", + "rawSpec": "~0.4", + "scope": null, + "spec": ">=0.4.0 <0.5.0", + "type": "range" + }, + "_requiredBy": [ + "/" + ], + "_resolved": "https://registry.npmjs.org/async/-/async-0.4.1.tgz", + "_shasum": "1985abade017df906bfaa8d77d424b25366b3a5b", + "_shrinkwrap": null, + "_spec": "async@~0.4", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector", "author": { "name": "Caolan McMahon" }, - "version": "0.4.1", - "repository": { - "type": "git", - "url": "https://github.com/caolan/async.git" - }, "bugs": { "url": "https://github.com/caolan/async/issues" }, - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/caolan/async/raw/master/LICENSE" - } - ], + "dependencies": {}, + "description": "Higher-order functions and common patterns for asynchronous code", "devDependencies": { + "nodelint": ">0.0.0", "nodeunit": ">0.0.0", - "uglify-js": "1.2.x", - "nodelint": ">0.0.0" + "uglify-js": "1.2.x" }, + "directories": {}, + "dist": { + "shasum": "1985abade017df906bfaa8d77d424b25366b3a5b", + "tarball": "https://registry.npmjs.org/async/-/async-0.4.1.tgz" + }, + "homepage": "https://github.com/caolan/async", "jam": { - "main": "lib/async.js", "include": [ "lib/async.js", "README.md", "LICENSE" - ] + ], + "main": "lib/async.js" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/caolan/async/raw/master/LICENSE" + } + ], + "main": "./lib/async", + "maintainers": [ + { + "email": "caolan@caolanmcmahon.com", + "name": "caolan" + } + ], + "name": "async", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/caolan/async.git" }, "scripts": { "test": "nodeunit test/test-async.js" }, - "readme": "# Async.js\n\n[![Build Status via Travis CI](https://travis-ci.org/caolan/async.png?branch=master)](https://travis-ci.org/caolan/async)\n\n\nAsync is a utility module which provides straight-forward, powerful functions\nfor working with asynchronous JavaScript. Although originally designed for\nuse with [Node.js](http://nodejs.org), it can also be used directly in the\nbrowser. Also supports [component](https://github.com/component/component).\n\nAsync provides around 20 functions that include the usual 'functional'\nsuspects (`map`, `reduce`, `filter`, `each`…) as well as some common patterns\nfor asynchronous control flow (`parallel`, `series`, `waterfall`…). All these\nfunctions assume you follow the Node.js convention of providing a single\ncallback as the last argument of your `async` function.\n\n\n## Quick Examples\n\n```javascript\nasync.map(['file1','file2','file3'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n});\n\nasync.filter(['file1','file2','file3'], fs.exists, function(results){\n // results now equals an array of the existing files\n});\n\nasync.parallel([\n function(){ ... },\n function(){ ... }\n], callback);\n\nasync.series([\n function(){ ... },\n function(){ ... }\n]);\n```\n\nThere are many more functions available so take a look at the docs below for a\nfull list. This module aims to be comprehensive, so if you feel anything is\nmissing please create a GitHub issue for it.\n\n## Common Pitfalls\n\n### Binding a context to an iterator\n\nThis section is really about `bind`, not about `async`. If you are wondering how to\nmake `async` execute your iterators in a given context, or are confused as to why\na method of another library isn't working as an iterator, study this example:\n\n```js\n// Here is a simple object with an (unnecessarily roundabout) squaring method\nvar AsyncSquaringLibrary = {\n squareExponent: 2,\n square: function(number, callback){ \n var result = Math.pow(number, this.squareExponent);\n setTimeout(function(){\n callback(null, result);\n }, 200);\n }\n};\n\nasync.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){\n // result is [NaN, NaN, NaN]\n // This fails because the `this.squareExponent` expression in the square\n // function is not evaluated in the context of AsyncSquaringLibrary, and is\n // therefore undefined.\n});\n\nasync.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){\n // result is [1, 4, 9]\n // With the help of bind we can attach a context to the iterator before\n // passing it to async. Now the square function will be executed in its \n // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent`\n // will be as expected.\n});\n```\n\n## Download\n\nThe source is available for download from\n[GitHub](http://github.com/caolan/async).\nAlternatively, you can install using Node Package Manager (`npm`):\n\n npm install async\n\n__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed\n\n## In the Browser\n\nSo far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. \n\nUsage:\n\n```html\n\n\n```\n\n## Documentation\n\n### Collections\n\n* [`each`](#each)\n* [`eachSeries`](#eachSeries)\n* [`eachLimit`](#eachLimit)\n* [`map`](#map)\n* [`mapSeries`](#mapSeries)\n* [`mapLimit`](#mapLimit)\n* [`filter`](#filter)\n* [`filterSeries`](#filterSeries)\n* [`reject`](#reject)\n* [`rejectSeries`](#rejectSeries)\n* [`reduce`](#reduce)\n* [`reduceRight`](#reduceRight)\n* [`detect`](#detect)\n* [`detectSeries`](#detectSeries)\n* [`sortBy`](#sortBy)\n* [`some`](#some)\n* [`every`](#every)\n* [`concat`](#concat)\n* [`concatSeries`](#concatSeries)\n\n### Control Flow\n\n* [`series`](#series)\n* [`parallel`](#parallel)\n* [`parallelLimit`](#parallellimittasks-limit-callback)\n* [`whilst`](#whilst)\n* [`doWhilst`](#doWhilst)\n* [`until`](#until)\n* [`doUntil`](#doUntil)\n* [`forever`](#forever)\n* [`waterfall`](#waterfall)\n* [`compose`](#compose)\n* [`seq`](#seq)\n* [`applyEach`](#applyEach)\n* [`applyEachSeries`](#applyEachSeries)\n* [`queue`](#queue)\n* [`cargo`](#cargo)\n* [`auto`](#auto)\n* [`iterator`](#iterator)\n* [`apply`](#apply)\n* [`nextTick`](#nextTick)\n* [`times`](#times)\n* [`timesSeries`](#timesSeries)\n\n### Utils\n\n* [`memoize`](#memoize)\n* [`unmemoize`](#unmemoize)\n* [`log`](#log)\n* [`dir`](#dir)\n* [`noConflict`](#noConflict)\n\n\n## Collections\n\n\n\n### each(arr, iterator, callback)\n\nApplies the function `iterator` to each item in `arr`, in parallel.\nThe `iterator` is called with an item from the list, and a callback for when it\nhas finished. If the `iterator` passes an error to its `callback`, the main\n`callback` (for the `each` function) is immediately called with the error.\n\nNote, that since this function applies `iterator` to each item in parallel,\nthere is no guarantee that the iterator functions will complete in order.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A function to apply to each item in `arr`.\n The iterator is passed a `callback(err)` which must be called once it has \n completed. If no error has occured, the `callback` should be run without \n arguments or with an explicit `null` argument.\n* `callback(err)` - A callback which is called when all `iterator` functions\n have finished, or an error occurs.\n\n__Examples__\n\n\n```js\n// assuming openFiles is an array of file names and saveFile is a function\n// to save the modified contents of that file:\n\nasync.each(openFiles, saveFile, function(err){\n // if any of the saves produced an error, err would equal that error\n});\n```\n\n```js\n// assuming openFiles is an array of file names and saveFile is a function\n// to save the modified contents of that file:\n\nasync.each(openFiles, function( file, callback) {\n \n // Perform operation on file here.\n console.log('Processing file ' + file);\n callback();\n\n if( file.length > 32 ) {\n console.log('This file name is too long');\n callback('File name too long');\n\n return;\n } else {\n console.log('File saved');\n callback();\n }\n}, function(err){\n // if any of the saves produced an error, err would equal that error\n if( err ) {\n // One of the iterations produced an error.\n // All processing will now stop.\n console.log('A file failed to process');\n } else {\n console.log('All files have been processed successfully');\n }\n});\n```\n\n---------------------------------------\n\n\n\n### eachSeries(arr, iterator, callback)\n\nThe same as [`each`](#each), only `iterator` is applied to each item in `arr` in\nseries. The next `iterator` is only called once the current one has completed. \nThis means the `iterator` functions will complete in order.\n\n\n---------------------------------------\n\n\n\n### eachLimit(arr, limit, iterator, callback)\n\nThe same as [`each`](#each), only no more than `limit` `iterator`s will be simultaneously \nrunning at any time.\n\nNote that the items in `arr` are not processed in batches, so there is no guarantee that \nthe first `limit` `iterator` functions will complete before any others are started.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `limit` - The maximum number of `iterator`s to run at any time.\n* `iterator(item, callback)` - A function to apply to each item in `arr`.\n The iterator is passed a `callback(err)` which must be called once it has \n completed. If no error has occured, the callback should be run without \n arguments or with an explicit `null` argument.\n* `callback(err)` - A callback which is called when all `iterator` functions\n have finished, or an error occurs.\n\n__Example__\n\n```js\n// Assume documents is an array of JSON objects and requestApi is a\n// function that interacts with a rate-limited REST api.\n\nasync.eachLimit(documents, 20, requestApi, function(err){\n // if any of the saves produced an error, err would equal that error\n});\n```\n\n---------------------------------------\n\n\n### map(arr, iterator, callback)\n\nProduces a new array of values by mapping each value in `arr` through\nthe `iterator` function. The `iterator` is called with an item from `arr` and a\ncallback for when it has finished processing. Each of these callback takes 2 arguments: \nan `error`, and the transformed item from `arr`. If `iterator` passes an error to this \ncallback, the main `callback` (for the `map` function) is immediately called with the error.\n\nNote, that since this function applies the `iterator` to each item in parallel,\nthere is no guarantee that the `iterator` functions will complete in order. \nHowever, the results array will be in the same order as the original `arr`.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A function to apply to each item in `arr`.\n The iterator is passed a `callback(err, transformed)` which must be called once \n it has completed with an error (which can be `null`) and a transformed item.\n* `callback(err, results)` - A callback which is called when all `iterator`\n functions have finished, or an error occurs. Results is an array of the\n transformed items from the `arr`.\n\n__Example__\n\n```js\nasync.map(['file1','file2','file3'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n});\n```\n\n---------------------------------------\n\n\n### mapSeries(arr, iterator, callback)\n\nThe same as [`map`](#map), only the `iterator` is applied to each item in `arr` in\nseries. The next `iterator` is only called once the current one has completed. \nThe results array will be in the same order as the original.\n\n\n---------------------------------------\n\n\n### mapLimit(arr, limit, iterator, callback)\n\nThe same as [`map`](#map), only no more than `limit` `iterator`s will be simultaneously \nrunning at any time.\n\nNote that the items are not processed in batches, so there is no guarantee that \nthe first `limit` `iterator` functions will complete before any others are started.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `limit` - The maximum number of `iterator`s to run at any time.\n* `iterator(item, callback)` - A function to apply to each item in `arr`.\n The iterator is passed a `callback(err, transformed)` which must be called once \n it has completed with an error (which can be `null`) and a transformed item.\n* `callback(err, results)` - A callback which is called when all `iterator`\n calls have finished, or an error occurs. The result is an array of the\n transformed items from the original `arr`.\n\n__Example__\n\n```js\nasync.mapLimit(['file1','file2','file3'], 1, fs.stat, function(err, results){\n // results is now an array of stats for each file\n});\n```\n\n---------------------------------------\n\n\n\n### filter(arr, iterator, callback)\n\n__Alias:__ `select`\n\nReturns a new array of all the values in `arr` which pass an async truth test.\n_The callback for each `iterator` call only accepts a single argument of `true` or\n`false`; it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like `fs.exists`. This operation is\nperformed in parallel, but the results array will be in the same order as the\noriginal.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A truth test to apply to each item in `arr`.\n The `iterator` is passed a `callback(truthValue)`, which must be called with a \n boolean argument once it has completed.\n* `callback(results)` - A callback which is called after all the `iterator`\n functions have finished.\n\n__Example__\n\n```js\nasync.filter(['file1','file2','file3'], fs.exists, function(results){\n // results now equals an array of the existing files\n});\n```\n\n---------------------------------------\n\n\n\n### filterSeries(arr, iterator, callback)\n\n__Alias:__ `selectSeries`\n\nThe same as [`filter`](#filter) only the `iterator` is applied to each item in `arr` in\nseries. The next `iterator` is only called once the current one has completed. \nThe results array will be in the same order as the original.\n\n---------------------------------------\n\n\n### reject(arr, iterator, callback)\n\nThe opposite of [`filter`](#filter). Removes values that pass an `async` truth test.\n\n---------------------------------------\n\n\n### rejectSeries(arr, iterator, callback)\n\nThe same as [`reject`](#reject), only the `iterator` is applied to each item in `arr`\nin series.\n\n\n---------------------------------------\n\n\n### reduce(arr, memo, iterator, callback)\n\n__Aliases:__ `inject`, `foldl`\n\nReduces `arr` into a single value using an async `iterator` to return\neach successive step. `memo` is the initial state of the reduction. \nThis function only operates in series. \n\nFor performance reasons, it may make sense to split a call to this function into \na parallel map, and then use the normal `Array.prototype.reduce` on the results. \nThis function is for situations where each step in the reduction needs to be async; \nif you can get the data before reducing it, then it's probably a good idea to do so.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `memo` - The initial state of the reduction.\n* `iterator(memo, item, callback)` - A function applied to each item in the\n array to produce the next step in the reduction. The `iterator` is passed a\n `callback(err, reduction)` which accepts an optional error as its first \n argument, and the state of the reduction as the second. If an error is \n passed to the callback, the reduction is stopped and the main `callback` is \n immediately called with the error.\n* `callback(err, result)` - A callback which is called after all the `iterator`\n functions have finished. Result is the reduced value.\n\n__Example__\n\n```js\nasync.reduce([1,2,3], 0, function(memo, item, callback){\n // pointless async:\n process.nextTick(function(){\n callback(null, memo + item)\n });\n}, function(err, result){\n // result is now equal to the last value of memo, which is 6\n});\n```\n\n---------------------------------------\n\n\n### reduceRight(arr, memo, iterator, callback)\n\n__Alias:__ `foldr`\n\nSame as [`reduce`](#reduce), only operates on `arr` in reverse order.\n\n\n---------------------------------------\n\n\n### detect(arr, iterator, callback)\n\nReturns the first value in `arr` that passes an async truth test. The\n`iterator` is applied in parallel, meaning the first iterator to return `true` will\nfire the detect `callback` with that result. That means the result might not be\nthe first item in the original `arr` (in terms of order) that passes the test.\n\nIf order within the original `arr` is important, then look at [`detectSeries`](#detectSeries).\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A truth test to apply to each item in `arr`.\n The iterator is passed a `callback(truthValue)` which must be called with a \n boolean argument once it has completed.\n* `callback(result)` - A callback which is called as soon as any iterator returns\n `true`, or after all the `iterator` functions have finished. Result will be\n the first item in the array that passes the truth test (iterator) or the\n value `undefined` if none passed.\n\n__Example__\n\n```js\nasync.detect(['file1','file2','file3'], fs.exists, function(result){\n // result now equals the first file in the list that exists\n});\n```\n\n---------------------------------------\n\n\n### detectSeries(arr, iterator, callback)\n\nThe same as [`detect`](#detect), only the `iterator` is applied to each item in `arr`\nin series. This means the result is always the first in the original `arr` (in\nterms of array order) that passes the truth test.\n\n\n---------------------------------------\n\n\n### sortBy(arr, iterator, callback)\n\nSorts a list by the results of running each `arr` value through an async `iterator`.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A function to apply to each item in `arr`.\n The iterator is passed a `callback(err, sortValue)` which must be called once it\n has completed with an error (which can be `null`) and a value to use as the sort\n criteria.\n* `callback(err, results)` - A callback which is called after all the `iterator`\n functions have finished, or an error occurs. Results is the items from\n the original `arr` sorted by the values returned by the `iterator` calls.\n\n__Example__\n\n```js\nasync.sortBy(['file1','file2','file3'], function(file, callback){\n fs.stat(file, function(err, stats){\n callback(err, stats.mtime);\n });\n}, function(err, results){\n // results is now the original array of files sorted by\n // modified date\n});\n```\n\n__Sort Order__\n\nBy modifying the callback parameter the sorting order can be influenced:\n\n //ascending order\n async.sortBy([1,9,3,5], function(x, callback){\n callback(err, x);\n }, function(err,result){\n //result callback\n } );\n\n //descending order\n async.sortBy([1,9,3,5], function(x, callback){\n callback(err, x*-1); //<- x*-1 instead of x, turns the order around\n }, function(err,result){\n //result callback\n } );\n\n\n---------------------------------------\n\n\n### some(arr, iterator, callback)\n\n__Alias:__ `any`\n\nReturns `true` if at least one element in the `arr` satisfies an async test.\n_The callback for each iterator call only accepts a single argument of `true` or\n`false`; it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like `fs.exists`. Once any iterator\ncall returns `true`, the main `callback` is immediately called.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A truth test to apply to each item in the array\n in parallel. The iterator is passed a callback(truthValue) which must be \n called with a boolean argument once it has completed.\n* `callback(result)` - A callback which is called as soon as any iterator returns\n `true`, or after all the iterator functions have finished. Result will be\n either `true` or `false` depending on the values of the async tests.\n\n__Example__\n\n```js\nasync.some(['file1','file2','file3'], fs.exists, function(result){\n // if result is true then at least one of the files exists\n});\n```\n\n---------------------------------------\n\n\n### every(arr, iterator, callback)\n\n__Alias:__ `all`\n\nReturns `true` if every element in `arr` satisfies an async test.\n_The callback for each `iterator` call only accepts a single argument of `true` or\n`false`; it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like `fs.exists`.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A truth test to apply to each item in the array\n in parallel. The iterator is passed a callback(truthValue) which must be \n called with a boolean argument once it has completed.\n* `callback(result)` - A callback which is called after all the `iterator`\n functions have finished. Result will be either `true` or `false` depending on\n the values of the async tests.\n\n__Example__\n\n```js\nasync.every(['file1','file2','file3'], fs.exists, function(result){\n // if result is true then every file exists\n});\n```\n\n---------------------------------------\n\n\n### concat(arr, iterator, callback)\n\nApplies `iterator` to each item in `arr`, concatenating the results. Returns the\nconcatenated list. The `iterator`s are called in parallel, and the results are\nconcatenated as they return. There is no guarantee that the results array will\nbe returned in the original order of `arr` passed to the `iterator` function.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A function to apply to each item in `arr`.\n The iterator is passed a `callback(err, results)` which must be called once it \n has completed with an error (which can be `null`) and an array of results.\n* `callback(err, results)` - A callback which is called after all the `iterator`\n functions have finished, or an error occurs. Results is an array containing\n the concatenated results of the `iterator` function.\n\n__Example__\n\n```js\nasync.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){\n // files is now a list of filenames that exist in the 3 directories\n});\n```\n\n---------------------------------------\n\n\n### concatSeries(arr, iterator, callback)\n\nSame as [`concat`](#concat), but executes in series instead of parallel.\n\n\n## Control Flow\n\n\n### series(tasks, [callback])\n\nRun the functions in the `tasks` array in series, each one running once the previous\nfunction has completed. If any functions in the series pass an error to its\ncallback, no more functions are run, and `callback` is immediately called with the value of the error. \nOtherwise, `callback` receives an array of results when `tasks` have completed.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function, and the results will be passed to the final `callback` as an object\ninstead of an array. This can be a more readable way of handling results from\n[`series`](#series).\n\n**Note** that while many implementations preserve the order of object properties, the\n[ECMAScript Language Specifcation](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6) \nexplicitly states that\n\n> The mechanics and order of enumerating the properties is not specified.\n\nSo if you rely on the order in which your series of functions are executed, and want\nthis to work on all platforms, consider using an array. \n\n__Arguments__\n\n* `tasks` - An array or object containing functions to run, each function is passed\n a `callback(err, result)` it must call on completion with an error `err` (which can\n be `null`) and an optional `result` value.\n* `callback(err, results)` - An optional callback to run once all the functions\n have completed. This function gets a results array (or object) containing all \n the result arguments passed to the `task` callbacks.\n\n__Example__\n\n```js\nasync.series([\n function(callback){\n // do some stuff ...\n callback(null, 'one');\n },\n function(callback){\n // do some more stuff ...\n callback(null, 'two');\n }\n],\n// optional callback\nfunction(err, results){\n // results is now equal to ['one', 'two']\n});\n\n\n// an example using an object instead of an array\nasync.series({\n one: function(callback){\n setTimeout(function(){\n callback(null, 1);\n }, 200);\n },\n two: function(callback){\n setTimeout(function(){\n callback(null, 2);\n }, 100);\n }\n},\nfunction(err, results) {\n // results is now equal to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n\n### parallel(tasks, [callback])\n\nRun the `tasks` array of functions in parallel, without waiting until the previous\nfunction has completed. If any of the functions pass an error to its\ncallback, the main `callback` is immediately called with the value of the error.\nOnce the `tasks` have completed, the results are passed to the final `callback` as an\narray.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final `callback` as an object\ninstead of an array. This can be a more readable way of handling results from\n[`parallel`](#parallel).\n\n\n__Arguments__\n\n* `tasks` - An array or object containing functions to run. Each function is passed \n a `callback(err, result)` which it must call on completion with an error `err` \n (which can be `null`) and an optional `result` value.\n* `callback(err, results)` - An optional callback to run once all the functions\n have completed. This function gets a results array (or object) containing all \n the result arguments passed to the task callbacks.\n\n__Example__\n\n```js\nasync.parallel([\n function(callback){\n setTimeout(function(){\n callback(null, 'one');\n }, 200);\n },\n function(callback){\n setTimeout(function(){\n callback(null, 'two');\n }, 100);\n }\n],\n// optional callback\nfunction(err, results){\n // the results array will equal ['one','two'] even though\n // the second function had a shorter timeout.\n});\n\n\n// an example using an object instead of an array\nasync.parallel({\n one: function(callback){\n setTimeout(function(){\n callback(null, 1);\n }, 200);\n },\n two: function(callback){\n setTimeout(function(){\n callback(null, 2);\n }, 100);\n }\n},\nfunction(err, results) {\n // results is now equals to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n\n### parallelLimit(tasks, limit, [callback])\n\nThe same as [`parallel`](#parallel), only `tasks` are executed in parallel \nwith a maximum of `limit` tasks executing at any time.\n\nNote that the `tasks` are not executed in batches, so there is no guarantee that \nthe first `limit` tasks will complete before any others are started.\n\n__Arguments__\n\n* `tasks` - An array or object containing functions to run, each function is passed \n a `callback(err, result)` it must call on completion with an error `err` (which can\n be `null`) and an optional `result` value.\n* `limit` - The maximum number of `tasks` to run at any time.\n* `callback(err, results)` - An optional callback to run once all the functions\n have completed. This function gets a results array (or object) containing all \n the result arguments passed to the `task` callbacks.\n\n---------------------------------------\n\n\n### whilst(test, fn, callback)\n\nRepeatedly call `fn`, while `test` returns `true`. Calls `callback` when stopped,\nor an error occurs.\n\n__Arguments__\n\n* `test()` - synchronous truth test to perform before each execution of `fn`.\n* `fn(callback)` - A function which is called each time `test` passes. The function is\n passed a `callback(err)`, which must be called once it has completed with an \n optional `err` argument.\n* `callback(err)` - A callback which is called after the test fails and repeated\n execution of `fn` has stopped.\n\n__Example__\n\n```js\nvar count = 0;\n\nasync.whilst(\n function () { return count < 5; },\n function (callback) {\n count++;\n setTimeout(callback, 1000);\n },\n function (err) {\n // 5 seconds have passed\n }\n);\n```\n\n---------------------------------------\n\n\n### doWhilst(fn, test, callback)\n\nThe post-check version of [`whilst`](#whilst). To reflect the difference in \nthe order of operations, the arguments `test` and `fn` are switched. \n\n`doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.\n\n---------------------------------------\n\n\n### until(test, fn, callback)\n\nRepeatedly call `fn` until `test` returns `true`. Calls `callback` when stopped,\nor an error occurs.\n\nThe inverse of [`whilst`](#whilst).\n\n---------------------------------------\n\n\n### doUntil(fn, test, callback)\n\nLike [`doWhilst`](#doWhilst), except the `test` is inverted. Note the argument ordering differs from `until`.\n\n---------------------------------------\n\n\n### forever(fn, errback)\n\nCalls the asynchronous function `fn` with a callback parameter that allows it to\ncall itself again, in series, indefinitely.\n\nIf an error is passed to the callback then `errback` is called with the\nerror, and execution stops, otherwise it will never be called.\n\n```js\nasync.forever(\n function(next) {\n // next is suitable for passing to things that need a callback(err [, whatever]);\n // it will result in this function being called again.\n },\n function(err) {\n // if next is called with a value in its first parameter, it will appear\n // in here as 'err', and execution will stop.\n }\n);\n```\n\n---------------------------------------\n\n\n### waterfall(tasks, [callback])\n\nRuns the `tasks` array of functions in series, each passing their results to the next in\nthe array. However, if any of the `tasks` pass an error to their own callback, the\nnext function is not executed, and the main `callback` is immediately called with\nthe error.\n\n__Arguments__\n\n* `tasks` - An array of functions to run, each function is passed a \n `callback(err, result1, result2, ...)` it must call on completion. The first\n argument is an error (which can be `null`) and any further arguments will be \n passed as arguments in order to the next task.\n* `callback(err, [results])` - An optional callback to run once all the functions\n have completed. This will be passed the results of the last task's callback.\n\n\n\n__Example__\n\n```js\nasync.waterfall([\n function(callback){\n callback(null, 'one', 'two');\n },\n function(arg1, arg2, callback){\n \t// arg1 now equals 'one' and arg2 now equals 'two'\n callback(null, 'three');\n },\n function(arg1, callback){\n // arg1 now equals 'three'\n callback(null, 'done');\n }\n], function (err, result) {\n // result now equals 'done' \n});\n```\n\n---------------------------------------\n\n### compose(fn1, fn2...)\n\nCreates a function which is a composition of the passed asynchronous\nfunctions. Each function consumes the return value of the function that\nfollows. Composing functions `f()`, `g()`, and `h()` would produce the result of\n`f(g(h()))`, only this version uses callbacks to obtain the return values.\n\nEach function is executed with the `this` binding of the composed function.\n\n__Arguments__\n\n* `functions...` - the asynchronous functions to compose\n\n\n__Example__\n\n```js\nfunction add1(n, callback) {\n setTimeout(function () {\n callback(null, n + 1);\n }, 10);\n}\n\nfunction mul3(n, callback) {\n setTimeout(function () {\n callback(null, n * 3);\n }, 10);\n}\n\nvar add1mul3 = async.compose(mul3, add1);\n\nadd1mul3(4, function (err, result) {\n // result now equals 15\n});\n```\n\n---------------------------------------\n\n### seq(fn1, fn2...)\n\nVersion of the compose function that is more natural to read.\nEach following function consumes the return value of the latter function. \n\nEach function is executed with the `this` binding of the composed function.\n\n__Arguments__\n\n* functions... - the asynchronous functions to compose\n\n\n__Example__\n\n```js\n// Requires lodash (or underscore), express3 and dresende's orm2.\n// Part of an app, that fetches cats of the logged user.\n// This example uses `seq` function to avoid overnesting and error \n// handling clutter.\napp.get('/cats', function(request, response) {\n function handleError(err, data, callback) {\n if (err) {\n console.error(err);\n response.json({ status: 'error', message: err.message });\n }\n else {\n callback(data);\n }\n }\n var User = request.models.User;\n asyc.seq(\n _.bind(User.get, User), // 'User.get' has signature (id, callback(err, data))\n handleError,\n function(user, fn) {\n user.getCats(fn); // 'getCats' has signature (callback(err, data))\n },\n handleError,\n function(cats) {\n response.json({ status: 'ok', message: 'Cats found', data: cats });\n }\n )(req.session.user_id);\n }\n});\n```\n\n---------------------------------------\n\n### applyEach(fns, args..., callback)\n\nApplies the provided arguments to each function in the array, calling \n`callback` after all functions have completed. If you only provide the first\nargument, then it will return a function which lets you pass in the\narguments as if it were a single function call.\n\n__Arguments__\n\n* `fns` - the asynchronous functions to all call with the same arguments\n* `args...` - any number of separate arguments to pass to the function\n* `callback` - the final argument should be the callback, called when all\n functions have completed processing\n\n\n__Example__\n\n```js\nasync.applyEach([enableSearch, updateSchema], 'bucket', callback);\n\n// partial application example:\nasync.each(\n buckets,\n async.applyEach([enableSearch, updateSchema]),\n callback\n);\n```\n\n---------------------------------------\n\n\n### applyEachSeries(arr, iterator, callback)\n\nThe same as [`applyEach`](#applyEach) only the functions are applied in series.\n\n---------------------------------------\n\n\n### queue(worker, concurrency)\n\nCreates a `queue` object with the specified `concurrency`. Tasks added to the\n`queue` are processed in parallel (up to the `concurrency` limit). If all\n`worker`s are in progress, the task is queued until one becomes available. \nOnce a `worker` completes a `task`, that `task`'s callback is called.\n\n__Arguments__\n\n* `worker(task, callback)` - An asynchronous function for processing a queued\n task, which must call its `callback(err)` argument when finished, with an \n optional `error` as an argument.\n* `concurrency` - An `integer` for determining how many `worker` functions should be\n run in parallel.\n\n__Queue objects__\n\nThe `queue` object returned by this function has the following properties and\nmethods:\n\n* `length()` - a function returning the number of items waiting to be processed.\n* `running()` - a function returning the number of items currently being processed.\n* `idle()` - a function returning false if there are items waiting or being processed, or true if not.\n* `concurrency` - an integer for determining how many `worker` functions should be\n run in parallel. This property can be changed after a `queue` is created to\n alter the concurrency on-the-fly.\n* `push(task, [callback])` - add a new task to the `queue`. Calls `callback` once \n the `worker` has finished processing the task. Instead of a single task, a `tasks` array\n can be submitted. The respective callback is used for every task in the list.\n* `unshift(task, [callback])` - add a new task to the front of the `queue`.\n* `saturated` - a callback that is called when the `queue` length hits the `concurrency` limit, \n and further tasks will be queued.\n* `empty` - a callback that is called when the last item from the `queue` is given to a `worker`.\n* `drain` - a callback that is called when the last item from the `queue` has returned from the `worker`.\n\n__Example__\n\n```js\n// create a queue object with concurrency 2\n\nvar q = async.queue(function (task, callback) {\n console.log('hello ' + task.name);\n callback();\n}, 2);\n\n\n// assign a callback\nq.drain = function() {\n console.log('all items have been processed');\n}\n\n// add some items to the queue\n\nq.push({name: 'foo'}, function (err) {\n console.log('finished processing foo');\n});\nq.push({name: 'bar'}, function (err) {\n console.log('finished processing bar');\n});\n\n// add some items to the queue (batch-wise)\n\nq.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {\n console.log('finished processing bar');\n});\n\n// add some items to the front of the queue\n\nq.unshift({name: 'bar'}, function (err) {\n console.log('finished processing bar');\n});\n```\n\n---------------------------------------\n\n\n### cargo(worker, [payload])\n\nCreates a `cargo` object with the specified payload. Tasks added to the\ncargo will be processed altogether (up to the `payload` limit). If the\n`worker` is in progress, the task is queued until it becomes available. Once\nthe `worker` has completed some tasks, each callback of those tasks is called.\n\nWhile [queue](#queue) passes only one task to one of a group of workers\nat a time, cargo passes an array of tasks to a single worker, repeating\nwhen the worker is finished.\n\n__Arguments__\n\n* `worker(tasks, callback)` - An asynchronous function for processing an array of\n queued tasks, which must call its `callback(err)` argument when finished, with \n an optional `err` argument.\n* `payload` - An optional `integer` for determining how many tasks should be\n processed per round; if omitted, the default is unlimited.\n\n__Cargo objects__\n\nThe `cargo` object returned by this function has the following properties and\nmethods:\n\n* `length()` - A function returning the number of items waiting to be processed.\n* `payload` - An `integer` for determining how many tasks should be\n process per round. This property can be changed after a `cargo` is created to\n alter the payload on-the-fly.\n* `push(task, [callback])` - Adds `task` to the `queue`. The callback is called\n once the `worker` has finished processing the task. Instead of a single task, an array of `tasks` \n can be submitted. The respective callback is used for every task in the list.\n* `saturated` - A callback that is called when the `queue.length()` hits the concurrency and further tasks will be queued.\n* `empty` - A callback that is called when the last item from the `queue` is given to a `worker`.\n* `drain` - A callback that is called when the last item from the `queue` has returned from the `worker`.\n\n__Example__\n\n```js\n// create a cargo object with payload 2\n\nvar cargo = async.cargo(function (tasks, callback) {\n for(var i=0; i\n### auto(tasks, [callback])\n\nDetermines the best order for running the functions in `tasks`, based on their \nrequirements. Each function can optionally depend on other functions being completed \nfirst, and each function is run as soon as its requirements are satisfied. \n\nIf any of the functions pass an error to their callback, it will not \ncomplete (so any other functions depending on it will not run), and the main \n`callback` is immediately called with the error. Functions also receive an \nobject containing the results of functions which have completed so far.\n\nNote, all functions are called with a `results` object as a second argument, \nso it is unsafe to pass functions in the `tasks` object which cannot handle the\nextra argument. \n\nFor example, this snippet of code:\n\n```js\nasync.auto({\n readData: async.apply(fs.readFile, 'data.txt', 'utf-8')\n}, callback);\n```\n\nwill have the effect of calling `readFile` with the results object as the last\nargument, which will fail:\n\n```js\nfs.readFile('data.txt', 'utf-8', cb, {});\n```\n\nInstead, wrap the call to `readFile` in a function which does not forward the \n`results` object:\n\n```js\nasync.auto({\n readData: function(cb, results){\n fs.readFile('data.txt', 'utf-8', cb);\n }\n}, callback);\n```\n\n__Arguments__\n\n* `tasks` - An object literal (containing named functions) or an array (of\n requirements, with the function itself the last item in the array). The key\n used for each function or array is used when specifying requirements. The \n function receives two arguments: (1) a `callback(err, result)` which must be \n called when finished, passing an `error` (which can be `null`) and the result of \n the function's execution, and (2) a `results` object, containing the results of\n the previously executed functions.\n* `callback(err, results)` - An optional callback which is called when all the\n tasks have been completed. It receives the `err` argument if any `tasks` \n pass an error to their callback. Results are always returned; however, if \n an error occurs, no further `tasks` will be performed, and the results\n object will only contain partial results.\n\n\n__Example__\n\n```js\nasync.auto({\n get_data: function(callback){\n console.log('in get_data');\n // async code to get some data\n callback(null, 'data', 'converted to array');\n },\n make_folder: function(callback){\n console.log('in make_folder');\n // async code to create a directory to store a file in\n // this is run at the same time as getting the data\n callback(null, 'folder');\n },\n write_file: ['get_data', 'make_folder', function(callback, results){\n console.log('in write_file', JSON.stringify(results));\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n callback(null, 'filename');\n }],\n email_link: ['write_file', function(callback, results){\n console.log('in email_link', JSON.stringify(results));\n // once the file is written let's email a link to it...\n // results.write_file contains the filename returned by write_file.\n callback(null, {'file':results.write_file, 'email':'user@example.com'});\n }]\n}, function(err, results) {\n console.log('err = ', err);\n console.log('results = ', results);\n});\n```\n\nThis is a fairly trivial example, but to do this using the basic parallel and\nseries functions would look like this:\n\n```js\nasync.parallel([\n function(callback){\n console.log('in get_data');\n // async code to get some data\n callback(null, 'data', 'converted to array');\n },\n function(callback){\n console.log('in make_folder');\n // async code to create a directory to store a file in\n // this is run at the same time as getting the data\n callback(null, 'folder');\n }\n],\nfunction(err, results){\n async.series([\n function(callback){\n console.log('in write_file', JSON.stringify(results));\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n results.push('filename');\n callback(null);\n },\n function(callback){\n console.log('in email_link', JSON.stringify(results));\n // once the file is written let's email a link to it...\n callback(null, {'file':results.pop(), 'email':'user@example.com'});\n }\n ]);\n});\n```\n\nFor a complicated series of `async` tasks, using the [`auto`](#auto) function makes adding\nnew tasks much easier (and the code more readable).\n\n\n---------------------------------------\n\n\n### iterator(tasks)\n\nCreates an iterator function which calls the next function in the `tasks` array,\nreturning a continuation to call the next one after that. It's also possible to\n“peek” at the next iterator with `iterator.next()`.\n\nThis function is used internally by the `async` module, but can be useful when\nyou want to manually control the flow of functions in series.\n\n__Arguments__\n\n* `tasks` - An array of functions to run.\n\n__Example__\n\n```js\nvar iterator = async.iterator([\n function(){ sys.p('one'); },\n function(){ sys.p('two'); },\n function(){ sys.p('three'); }\n]);\n\nnode> var iterator2 = iterator();\n'one'\nnode> var iterator3 = iterator2();\n'two'\nnode> iterator3();\n'three'\nnode> var nextfn = iterator2.next();\nnode> nextfn();\n'three'\n```\n\n---------------------------------------\n\n\n### apply(function, arguments..)\n\nCreates a continuation function with some arguments already applied. \n\nUseful as a shorthand when combined with other control flow functions. Any arguments\npassed to the returned function are added to the arguments originally passed\nto apply.\n\n__Arguments__\n\n* `function` - The function you want to eventually apply all arguments to.\n* `arguments...` - Any number of arguments to automatically apply when the\n continuation is called.\n\n__Example__\n\n```js\n// using apply\n\nasync.parallel([\n async.apply(fs.writeFile, 'testfile1', 'test1'),\n async.apply(fs.writeFile, 'testfile2', 'test2'),\n]);\n\n\n// the same process without using apply\n\nasync.parallel([\n function(callback){\n fs.writeFile('testfile1', 'test1', callback);\n },\n function(callback){\n fs.writeFile('testfile2', 'test2', callback);\n }\n]);\n```\n\nIt's possible to pass any number of additional arguments when calling the\ncontinuation:\n\n```js\nnode> var fn = async.apply(sys.puts, 'one');\nnode> fn('two', 'three');\none\ntwo\nthree\n```\n\n---------------------------------------\n\n\n### nextTick(callback)\n\nCalls `callback` on a later loop around the event loop. In Node.js this just\ncalls `process.nextTick`; in the browser it falls back to `setImmediate(callback)`\nif available, otherwise `setTimeout(callback, 0)`, which means other higher priority\nevents may precede the execution of `callback`.\n\nThis is used internally for browser-compatibility purposes.\n\n__Arguments__\n\n* `callback` - The function to call on a later loop around the event loop.\n\n__Example__\n\n```js\nvar call_order = [];\nasync.nextTick(function(){\n call_order.push('two');\n // call_order now equals ['one','two']\n});\ncall_order.push('one')\n```\n\n\n### times(n, callback)\n\nCalls the `callback` function `n` times, and accumulates results in the same manner\nyou would use with [`map`](#map).\n\n__Arguments__\n\n* `n` - The number of times to run the function.\n* `callback` - The function to call `n` times.\n\n__Example__\n\n```js\n// Pretend this is some complicated async factory\nvar createUser = function(id, callback) {\n callback(null, {\n id: 'user' + id\n })\n}\n// generate 5 users\nasync.times(5, function(n, next){\n createUser(n, function(err, user) {\n next(err, user)\n })\n}, function(err, users) {\n // we should now have 5 users\n});\n```\n\n\n### timesSeries(n, callback)\n\nThe same as [`times`](#times), only the iterator is applied to each item in `arr` in\nseries. The next `iterator` is only called once the current one has completed. \nThe results array will be in the same order as the original.\n\n\n## Utils\n\n\n### memoize(fn, [hasher])\n\nCaches the results of an `async` function. When creating a hash to store function\nresults against, the callback is omitted from the hash and an optional hash\nfunction can be used.\n\nThe cache of results is exposed as the `memo` property of the function returned\nby `memoize`.\n\n__Arguments__\n\n* `fn` - The function to proxy and cache results from.\n* `hasher` - Tn optional function for generating a custom hash for storing\n results. It has all the arguments applied to it apart from the callback, and\n must be synchronous.\n\n__Example__\n\n```js\nvar slow_fn = function (name, callback) {\n // do something\n callback(null, result);\n};\nvar fn = async.memoize(slow_fn);\n\n// fn can now be used as if it were slow_fn\nfn('some name', function () {\n // callback\n});\n```\n\n\n### unmemoize(fn)\n\nUndoes a [`memoize`](#memoize)d function, reverting it to the original, unmemoized\nform. Handy for testing.\n\n__Arguments__\n\n* `fn` - the memoized function\n\n\n### log(function, arguments)\n\nLogs the result of an `async` function to the `console`. Only works in Node.js or\nin browsers that support `console.log` and `console.error` (such as FF and Chrome).\nIf multiple arguments are returned from the async function, `console.log` is\ncalled on each argument in order.\n\n__Arguments__\n\n* `function` - The function you want to eventually apply all arguments to.\n* `arguments...` - Any number of arguments to apply to the function.\n\n__Example__\n\n```js\nvar hello = function(name, callback){\n setTimeout(function(){\n callback(null, 'hello ' + name);\n }, 1000);\n};\n```\n```js\nnode> async.log(hello, 'world');\n'hello world'\n```\n\n---------------------------------------\n\n\n### dir(function, arguments)\n\nLogs the result of an `async` function to the `console` using `console.dir` to\ndisplay the properties of the resulting object. Only works in Node.js or\nin browsers that support `console.dir` and `console.error` (such as FF and Chrome).\nIf multiple arguments are returned from the async function, `console.dir` is\ncalled on each argument in order.\n\n__Arguments__\n\n* `function` - The function you want to eventually apply all arguments to.\n* `arguments...` - Any number of arguments to apply to the function.\n\n__Example__\n\n```js\nvar hello = function(name, callback){\n setTimeout(function(){\n callback(null, {hello: name});\n }, 1000);\n};\n```\n```js\nnode> async.dir(hello, 'world');\n{hello: 'world'}\n```\n\n---------------------------------------\n\n\n### noConflict()\n\nChanges the value of `async` back to its original value, returning a reference to the\n`async` object.\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/caolan/async", - "_id": "async@0.4.1", - "_shasum": "1985abade017df906bfaa8d77d424b25366b3a5b", - "_from": "async@~0.4", - "_resolved": "https://registry.npmjs.org/async/-/async-0.4.1.tgz" + "version": "0.4.1" } diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/.npmignore new file mode 100644 index 00000000..fd4f2b06 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/.npmignore @@ -0,0 +1,2 @@ +node_modules +.DS_Store diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/.travis.yml new file mode 100644 index 00000000..6e5919de --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/.travis.yml @@ -0,0 +1,3 @@ +language: node_js +node_js: + - "0.10" diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/LICENSE.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/LICENSE.md new file mode 100644 index 00000000..2cdc8e41 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/LICENSE.md @@ -0,0 +1,21 @@ +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/Makefile new file mode 100644 index 00000000..fa5da71a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/Makefile @@ -0,0 +1,6 @@ + +test: + @node_modules/.bin/tape test/*.js + +.PHONY: test + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/README.md new file mode 100644 index 00000000..421f3aa5 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/README.md @@ -0,0 +1,89 @@ +# balanced-match + +Match balanced string pairs, like `{` and `}` or `` and ``. + +[![build status](https://secure.travis-ci.org/juliangruber/balanced-match.svg)](http://travis-ci.org/juliangruber/balanced-match) +[![downloads](https://img.shields.io/npm/dm/balanced-match.svg)](https://www.npmjs.org/package/balanced-match) + +[![testling badge](https://ci.testling.com/juliangruber/balanced-match.png)](https://ci.testling.com/juliangruber/balanced-match) + +## Example + +Get the first matching pair of braces: + +```js +var balanced = require('balanced-match'); + +console.log(balanced('{', '}', 'pre{in{nested}}post')); +console.log(balanced('{', '}', 'pre{first}between{second}post')); +``` + +The matches are: + +```bash +$ node example.js +{ start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' } +{ start: 3, + end: 9, + pre: 'pre', + body: 'first', + post: 'between{second}post' } +``` + +## API + +### var m = balanced(a, b, str) + +For the first non-nested matching pair of `a` and `b` in `str`, return an +object with those keys: + +* **start** the index of the first match of `a` +* **end** the index of the matching `b` +* **pre** the preamble, `a` and `b` not included +* **body** the match, `a` and `b` not included +* **post** the postscript, `a` and `b` not included + +If there's no match, `undefined` will be returned. + +If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']`. + +### var r = balanced.range(a, b, str) + +For the first non-nested matching pair of `a` and `b` in `str`, return an +array with indexes: `[ , ]`. + +If there's no match, `undefined` will be returned. + +If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]`. + +## Installation + +With [npm](https://npmjs.org) do: + +```bash +npm install balanced-match +``` + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/example.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/example.js new file mode 100644 index 00000000..c02ad348 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/example.js @@ -0,0 +1,5 @@ +var balanced = require('./'); + +console.log(balanced('{', '}', 'pre{in{nested}}post')); +console.log(balanced('{', '}', 'pre{first}between{second}post')); + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/index.js new file mode 100644 index 00000000..75f3d71c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/index.js @@ -0,0 +1,50 @@ +module.exports = balanced; +function balanced(a, b, str) { + var r = range(a, b, str); + + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; +} + +balanced.range = range; +function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + + if (ai >= 0 && bi > 0) { + begs = []; + left = str.length; + + while (i < str.length && i >= 0 && ! result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [ begs.pop(), bi ]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } + + bi = str.indexOf(b, i + 1); + } + + i = ai < bi && ai >= 0 ? ai : bi; + } + + if (begs.length) { + result = [ left, right ]; + } + } + + return result; +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/package.json new file mode 100644 index 00000000..438ea186 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/package.json @@ -0,0 +1,98 @@ +{ + "_args": [ + [ + "balanced-match@^0.3.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\brace-expansion" + ] + ], + "_from": "balanced-match@>=0.3.0 <0.4.0", + "_id": "balanced-match@0.3.0", + "_inCache": true, + "_installable": true, + "_location": "/balanced-match", + "_nodeVersion": "4.2.1", + "_npmUser": { + "email": "julian@juliangruber.com", + "name": "juliangruber" + }, + "_npmVersion": "2.14.7", + "_phantomChildren": {}, + "_requested": { + "name": "balanced-match", + "raw": "balanced-match@^0.3.0", + "rawSpec": "^0.3.0", + "scope": null, + "spec": ">=0.3.0 <0.4.0", + "type": "range" + }, + "_requiredBy": [ + "/brace-expansion" + ], + "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz", + "_shasum": "a91cdd1ebef1a86659e70ff4def01625fc2d6756", + "_shrinkwrap": null, + "_spec": "balanced-match@^0.3.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\brace-expansion", + "author": { + "email": "mail@juliangruber.com", + "name": "Julian Gruber", + "url": "http://juliangruber.com" + }, + "bugs": { + "url": "https://github.com/juliangruber/balanced-match/issues" + }, + "dependencies": {}, + "description": "Match balanced character pairs, like \"{\" and \"}\"", + "devDependencies": { + "tape": "~4.2.2" + }, + "directories": {}, + "dist": { + "shasum": "a91cdd1ebef1a86659e70ff4def01625fc2d6756", + "tarball": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz" + }, + "gitHead": "a7114b0986554787e90b7ac595a043ca75ea77e5", + "homepage": "https://github.com/juliangruber/balanced-match", + "keywords": [ + "match", + "regexp", + "test", + "balanced", + "parse" + ], + "license": "MIT", + "main": "index.js", + "maintainers": [ + { + "email": "julian@juliangruber.com", + "name": "juliangruber" + } + ], + "name": "balanced-match", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/balanced-match.git" + }, + "scripts": { + "test": "make test" + }, + "testling": { + "browsers": [ + "ie/8..latest", + "firefox/20..latest", + "firefox/nightly", + "chrome/25..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ], + "files": "test/*.js" + }, + "version": "0.3.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/test/balanced.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/test/balanced.js new file mode 100644 index 00000000..f5e98e3f --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/balanced-match/test/balanced.js @@ -0,0 +1,84 @@ +var test = require('tape'); +var balanced = require('..'); + +test('balanced', function(t) { + t.deepEqual(balanced('{', '}', 'pre{in{nest}}post'), { + start: 3, + end: 12, + pre: 'pre', + body: 'in{nest}', + post: 'post' + }); + t.deepEqual(balanced('{', '}', '{{{{{{{{{in}post'), { + start: 8, + end: 11, + pre: '{{{{{{{{', + body: 'in', + post: 'post' + }); + t.deepEqual(balanced('{', '}', 'pre{body{in}post'), { + start: 8, + end: 11, + pre: 'pre{body', + body: 'in', + post: 'post' + }); + t.deepEqual(balanced('{', '}', 'pre}{in{nest}}post'), { + start: 4, + end: 13, + pre: 'pre}', + body: 'in{nest}', + post: 'post' + }); + t.deepEqual(balanced('{', '}', 'pre{body}between{body2}post'), { + start: 3, + end: 8, + pre: 'pre', + body: 'body', + post: 'between{body2}post' + }); + t.notOk(balanced('{', '}', 'nope'), 'should be notOk'); + t.deepEqual(balanced('', '', 'preinnestpost'), { + start: 3, + end: 19, + pre: 'pre', + body: 'innest', + post: 'post' + }); + t.deepEqual(balanced('', '', 'preinnestpost'), { + start: 7, + end: 23, + pre: 'pre', + body: 'innest', + post: 'post' + }); + t.deepEqual(balanced('{{', '}}', 'pre{{{in}}}post'), { + start: 3, + end: 9, + pre: 'pre', + body: '{in}', + post: 'post' + }); + t.deepEqual(balanced('{{{', '}}', 'pre{{{in}}}post'), { + start: 3, + end: 8, + pre: 'pre', + body: 'in', + post: '}post' + }); + t.deepEqual(balanced('{', '}', 'pre{{first}in{second}post'), { + start: 4, + end: 10, + pre: 'pre{', + body: 'first', + post: 'in{second}post' + }); + t.deepEqual(balanced('', 'prepost'), { + start: 3, + end: 4, + pre: 'pre', + body: '', + post: 'post' + }); + t.end(); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/basic-auth-connect/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/basic-auth-connect/.npmignore new file mode 100644 index 00000000..602eb8e1 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/basic-auth-connect/.npmignore @@ -0,0 +1 @@ +test.js \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/basic-auth-connect/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/basic-auth-connect/.travis.yml similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/basic-auth-connect/.travis.yml rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/basic-auth-connect/.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/basic-auth-connect/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/basic-auth-connect/Makefile new file mode 100644 index 00000000..a450a16f --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/basic-auth-connect/Makefile @@ -0,0 +1,8 @@ +BIN = ./node_modules/.bin/ + +test: + @NODE_ENV=test $(BIN)mocha \ + --require should \ + --reporter spec + +.PHONY: test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/basic-auth-connect/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/basic-auth-connect/README.md new file mode 100644 index 00000000..0543437e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/basic-auth-connect/README.md @@ -0,0 +1,60 @@ +# simgr - Simple Image Resizer [![Build Status](https://travis-ci.org/expressjs/basic-auth-connect.png)](https://travis-ci.org/expressjs/basic-auth-connect) + +Connect's Basic Auth middleware in its own module. This module is considered deprecated. You should instead create your own middleware with [basic-auth](https://github.com/visionmedia/node-basic-auth). + +## API + +```js +var basicAuth = require('basic-auth-connect'); +``` + +Sorry, couldn't think of a more clever name. + +Simple username and password + +```js +connect() +.use(basicAuth('username', 'password')); +``` + +Callback verification + +```js +connect() +.use(basicAuth(function(user, pass){ + return 'tj' == user && 'wahoo' == pass; +})) +``` + +Async callback verification, accepting `fn(err, user)`. + +``` +connect() +.use(basicAuth(function(user, pass, fn){ + User.authenticate({ user: user, pass: pass }, fn); +})) +``` + +## License + +The MIT License (MIT) + +Copyright (c) 2013 Jonathan Ong me@jongleberry.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/basic-auth-connect/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/basic-auth-connect/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/basic-auth-connect/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/basic-auth-connect/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/basic-auth-connect/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/basic-auth-connect/package.json new file mode 100644 index 00000000..6b5a88ca --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/basic-auth-connect/package.json @@ -0,0 +1,75 @@ +{ + "_args": [ + [ + "basic-auth-connect@1.0.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect" + ] + ], + "_from": "basic-auth-connect@1.0.0", + "_id": "basic-auth-connect@1.0.0", + "_inCache": true, + "_installable": true, + "_location": "/basic-auth-connect", + "_npmUser": { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + }, + "_npmVersion": "1.3.21", + "_phantomChildren": {}, + "_requested": { + "name": "basic-auth-connect", + "raw": "basic-auth-connect@1.0.0", + "rawSpec": "1.0.0", + "scope": null, + "spec": "1.0.0", + "type": "version" + }, + "_requiredBy": [ + "/connect" + ], + "_resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", + "_shasum": "fdb0b43962ca7b40456a7c2bb48fe173da2d2122", + "_shrinkwrap": null, + "_spec": "basic-auth-connect@1.0.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect", + "author": { + "email": "me@jongleberry.com", + "name": "Jonathan Ong", + "url": "http://jongleberry.com" + }, + "bugs": { + "url": "https://github.com/expressjs/basic-auth-connect/issues" + }, + "dependencies": {}, + "description": "Basic auth middleware for node and connect", + "devDependencies": { + "connect": "*", + "mocha": "*", + "should": "*", + "supertest": "*" + }, + "directories": {}, + "dist": { + "shasum": "fdb0b43962ca7b40456a7c2bb48fe173da2d2122", + "tarball": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz" + }, + "homepage": "https://github.com/expressjs/basic-auth-connect", + "license": "MIT", + "maintainers": [ + { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + } + ], + "name": "basic-auth-connect", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/expressjs/basic-auth-connect.git" + }, + "scripts": { + "test": "make test" + }, + "version": "1.0.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/.npmignore new file mode 100644 index 00000000..f1250e58 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/History.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/History.md new file mode 100644 index 00000000..b1b77526 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/History.md @@ -0,0 +1,66 @@ + +0.5.0 / 2013-07-29 +================== + + * add `.throws(true)` to opt-in to responding with an array of error objects + * make `new` optional + +0.4.0 / 2013-06-05 +================== + + * add catching of immediate callback errors + +0.3.2 / 2013-03-15 +================== + + * remove Emitter call in constructor + +0.3.1 / 2013-03-13 +================== + + * add Emitter() mixin for client. Closes #8 + +0.3.0 / 2013-03-13 +================== + + * add component.json + * add result example + * add .concurrency support + * add concurrency example + * add parallel example + +0.2.1 / 2012-11-08 +================== + + * add .start, .end, and .duration properties + * change dependencies to devDependencies + +0.2.0 / 2012-10-04 +================== + + * add progress events. Closes #5 (__BREAKING CHANGE__) + +0.1.1 / 2012-07-03 +================== + + * change "complete" event to "progress" + +0.1.0 / 2012-07-03 +================== + + * add Emitter inheritance and emit "complete" [burcu] + +0.0.3 / 2012-06-02 +================== + + * Callback results should be in the order of the queued functions. + +0.0.2 / 2012-02-12 +================== + + * any node + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/Makefile new file mode 100644 index 00000000..634e3721 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/Makefile @@ -0,0 +1,6 @@ + +test: + @./node_modules/.bin/mocha \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/Readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/Readme.md new file mode 100644 index 00000000..f2345c67 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/Readme.md @@ -0,0 +1,74 @@ + +# batch + + Simple async batch with concurrency control and progress reporting. + +## Installation + +``` +$ npm install batch +``` + +## API + +```js +var Batch = require('batch') + , batch = new Batch; + +batch.concurrency(4); + +ids.forEach(function(id){ + batch.push(function(done){ + User.get(id, done); + }); +}); + +batch.on('progress', function(e){ + +}); + +batch.end(function(err, users){ + +}); +``` + +### Progress events + + Contain the "job" index, response value, duration information, and completion data. + +```js +{ index: 1, + value: 'bar', + pending: 2, + total: 3, + complete: 2, + percent: 66, + start: Thu Oct 04 2012 12:25:53 GMT-0700 (PDT), + end: Thu Oct 04 2012 12:25:53 GMT-0700 (PDT), + duration: 0 } +``` + +## License + +(The MIT License) + +Copyright (c) 2013 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/batch/component.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/component.json similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/batch/component.json rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/component.json diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/batch/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/batch/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/package.json new file mode 100644 index 00000000..bd237b5f --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/batch/package.json @@ -0,0 +1,61 @@ +{ + "_args": [ + [ + "batch@0.5.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index" + ] + ], + "_from": "batch@0.5.0", + "_id": "batch@0.5.0", + "_inCache": true, + "_installable": true, + "_location": "/batch", + "_npmUser": { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + }, + "_npmVersion": "1.2.30", + "_phantomChildren": {}, + "_requested": { + "name": "batch", + "raw": "batch@0.5.0", + "rawSpec": "0.5.0", + "scope": null, + "spec": "0.5.0", + "type": "version" + }, + "_requiredBy": [ + "/serve-index" + ], + "_resolved": "https://registry.npmjs.org/batch/-/batch-0.5.0.tgz", + "_shasum": "fd2e05a7a5d696b4db9314013e285d8ff3557ec3", + "_shrinkwrap": null, + "_spec": "batch@0.5.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index", + "author": { + "email": "tj@vision-media.ca", + "name": "TJ Holowaychuk" + }, + "dependencies": {}, + "description": "Simple async batch", + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "directories": {}, + "dist": { + "shasum": "fd2e05a7a5d696b4db9314013e285d8ff3557ec3", + "tarball": "https://registry.npmjs.org/batch/-/batch-0.5.0.tgz" + }, + "main": "index", + "maintainers": [ + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + } + ], + "name": "batch", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "version": "0.5.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/brace-expansion/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/brace-expansion/.npmignore new file mode 100644 index 00000000..353546af --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/brace-expansion/.npmignore @@ -0,0 +1,3 @@ +test +.gitignore +.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/brace-expansion/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/brace-expansion/README.md new file mode 100644 index 00000000..17939297 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/brace-expansion/README.md @@ -0,0 +1,122 @@ +# brace-expansion + +[Brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html), +as known from sh/bash, in JavaScript. + +[![build status](https://secure.travis-ci.org/juliangruber/brace-expansion.svg)](http://travis-ci.org/juliangruber/brace-expansion) +[![downloads](https://img.shields.io/npm/dm/brace-expansion.svg)](https://www.npmjs.org/package/brace-expansion) + +[![testling badge](https://ci.testling.com/juliangruber/brace-expansion.png)](https://ci.testling.com/juliangruber/brace-expansion) + +## Example + +```js +var expand = require('brace-expansion'); + +expand('file-{a,b,c}.jpg') +// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg'] + +expand('-v{,,}') +// => ['-v', '-v', '-v'] + +expand('file{0..2}.jpg') +// => ['file0.jpg', 'file1.jpg', 'file2.jpg'] + +expand('file-{a..c}.jpg') +// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg'] + +expand('file{2..0}.jpg') +// => ['file2.jpg', 'file1.jpg', 'file0.jpg'] + +expand('file{0..4..2}.jpg') +// => ['file0.jpg', 'file2.jpg', 'file4.jpg'] + +expand('file-{a..e..2}.jpg') +// => ['file-a.jpg', 'file-c.jpg', 'file-e.jpg'] + +expand('file{00..10..5}.jpg') +// => ['file00.jpg', 'file05.jpg', 'file10.jpg'] + +expand('{{A..C},{a..c}}') +// => ['A', 'B', 'C', 'a', 'b', 'c'] + +expand('ppp{,config,oe{,conf}}') +// => ['ppp', 'pppconfig', 'pppoe', 'pppoeconf'] +``` + +## API + +```js +var expand = require('brace-expansion'); +``` + +### var expanded = expand(str) + +Return an array of all possible and valid expansions of `str`. If none are +found, `[str]` is returned. + +Valid expansions are: + +```js +/^(.*,)+(.+)?$/ +// {a,b,...} +``` + +A comma seperated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`. + +```js +/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/ +// {x..y[..incr]} +``` + +A numeric sequence from `x` to `y` inclusive, with optional increment. +If `x` or `y` start with a leading `0`, all the numbers will be padded +to have equal length. Negative numbers and backwards iteration work too. + +```js +/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/ +// {x..y[..incr]} +``` + +An alphabetic sequence from `x` to `y` inclusive, with optional increment. +`x` and `y` must be exactly one character, and if given, `incr` must be a +number. + +For compatibility reasons, the string `${` is not eligible for brace expansion. + +## Installation + +With [npm](https://npmjs.org) do: + +```bash +npm install brace-expansion +``` + +## Contributors + +- [Julian Gruber](https://github.com/juliangruber) +- [Isaac Z. Schlueter](https://github.com/isaacs) + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/brace-expansion/example.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/brace-expansion/example.js new file mode 100644 index 00000000..60ecfc74 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/brace-expansion/example.js @@ -0,0 +1,8 @@ +var expand = require('./'); + +console.log(expand('http://any.org/archive{1996..1999}/vol{1..4}/part{a,b,c}.html')); +console.log(expand('http://www.numericals.com/file{1..100..10}.txt')); +console.log(expand('http://www.letters.com/file{a..z..2}.txt')); +console.log(expand('mkdir /usr/local/src/bash/{old,new,dist,bugs}')); +console.log(expand('chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}')); + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/brace-expansion/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/brace-expansion/index.js new file mode 100644 index 00000000..932718f9 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/brace-expansion/index.js @@ -0,0 +1,191 @@ +var concatMap = require('concat-map'); +var balanced = require('balanced-match'); + +module.exports = expandTop; + +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; + +function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} + +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); +} + +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} + + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; + + var parts = []; + var m = balanced('{', '}', str); + + if (!m) + return str.split(','); + + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } + + parts.push.apply(parts, p); + + return parts; +} + +function expandTop(str) { + if (!str) + return []; + + return expand(escapeBraces(str), true).map(unescapeBraces); +} + +function identity(e) { + return e; +} + +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} + +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} + +function expand(str, isTop) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m || /\$$/.test(m.pre)) return [str]; + + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = /^(.*,)+(.+)?$/.test(m.body); + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length + ? expand(m.post, false) + : ['']; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; + + var N; + + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length) + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + + N = []; + + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { return expand(el, false) }); + } + + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + + return expansions; +} + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/brace-expansion/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/brace-expansion/package.json new file mode 100644 index 00000000..e6873dde --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/brace-expansion/package.json @@ -0,0 +1,104 @@ +{ + "_args": [ + [ + "brace-expansion@^1.0.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\node_modules\\minimatch" + ] + ], + "_from": "brace-expansion@>=1.0.0 <2.0.0", + "_id": "brace-expansion@1.1.3", + "_inCache": true, + "_installable": true, + "_location": "/brace-expansion", + "_nodeVersion": "5.5.0", + "_npmOperationalInternal": { + "host": "packages-6-west.internal.npmjs.com", + "tmp": "tmp/brace-expansion-1.1.3.tgz_1455216688668_0.948847763473168" + }, + "_npmUser": { + "email": "julian@juliangruber.com", + "name": "juliangruber" + }, + "_npmVersion": "3.3.12", + "_phantomChildren": {}, + "_requested": { + "name": "brace-expansion", + "raw": "brace-expansion@^1.0.0", + "rawSpec": "^1.0.0", + "scope": null, + "spec": ">=1.0.0 <2.0.0", + "type": "range" + }, + "_requiredBy": [ + "/jshint/minimatch" + ], + "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.3.tgz", + "_shasum": "46bff50115d47fc9ab89854abb87d98078a10991", + "_shrinkwrap": null, + "_spec": "brace-expansion@^1.0.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint\\node_modules\\minimatch", + "author": { + "email": "mail@juliangruber.com", + "name": "Julian Gruber", + "url": "http://juliangruber.com" + }, + "bugs": { + "url": "https://github.com/juliangruber/brace-expansion/issues" + }, + "dependencies": { + "balanced-match": "^0.3.0", + "concat-map": "0.0.1" + }, + "description": "Brace expansion as known from sh/bash", + "devDependencies": { + "tape": "4.4.0" + }, + "directories": {}, + "dist": { + "shasum": "46bff50115d47fc9ab89854abb87d98078a10991", + "tarball": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.3.tgz" + }, + "gitHead": "f0da1bb668e655f67b6b2d660c6e1c19e2a6f231", + "homepage": "https://github.com/juliangruber/brace-expansion", + "keywords": [], + "license": "MIT", + "main": "index.js", + "maintainers": [ + { + "email": "julian@juliangruber.com", + "name": "juliangruber" + }, + { + "email": "isaacs@npmjs.com", + "name": "isaacs" + } + ], + "name": "brace-expansion", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/brace-expansion.git" + }, + "scripts": { + "gentest": "bash test/generate.sh", + "test": "tape test/*.js" + }, + "testling": { + "browsers": [ + "ie/8..latest", + "firefox/20..latest", + "firefox/nightly", + "chrome/25..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ], + "files": "test/*.js" + }, + "version": "1.1.3" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/buffer-crc32/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/buffer-crc32/.npmignore new file mode 100644 index 00000000..b512c09d --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/buffer-crc32/.npmignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/buffer-crc32/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/buffer-crc32/.travis.yml similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/buffer-crc32/.travis.yml rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/buffer-crc32/.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/buffer-crc32/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/buffer-crc32/README.md new file mode 100644 index 00000000..0d9d8b83 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/buffer-crc32/README.md @@ -0,0 +1,47 @@ +# buffer-crc32 + +[![Build Status](https://secure.travis-ci.org/brianloveswords/buffer-crc32.png?branch=master)](http://travis-ci.org/brianloveswords/buffer-crc32) + +crc32 that works with binary data and fancy character sets, outputs +buffer, signed or unsigned data and has tests. + +Derived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix + +# install +``` +npm install buffer-crc32 +``` + +# example +```js +var crc32 = require('buffer-crc32'); +// works with buffers +var buf = Buffer([0x00, 0x73, 0x75, 0x70, 0x20, 0x62, 0x72, 0x6f, 0x00]) +crc32(buf) // -> + +// has convenience methods for getting signed or unsigned ints +crc32.signed(buf) // -> -1805997238 +crc32.unsigned(buf) // -> 2488970058 + +// will cast to buffer if given a string, so you can +// directly use foreign characters safely +crc32('自動販売機') // -> + +// and works in append mode too +var partialCrc = crc32('hey'); +var partialCrc = crc32(' ', partialCrc); +var partialCrc = crc32('sup', partialCrc); +var partialCrc = crc32(' ', partialCrc); +var finalCrc = crc32('bros', partialCrc); // -> +``` + +# tests +This was tested against the output of zlib's crc32 method. You can run +the tests with`npm test` (requires tap) + +# see also +https://github.com/alexgorbatchev/node-crc, `crc.buffer.crc32` also +supports buffer inputs and return unsigned ints (thanks @tjholowaychuk). + +# license +MIT/X11 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/buffer-crc32/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/buffer-crc32/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/buffer-crc32/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/buffer-crc32/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/buffer-crc32/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/buffer-crc32/package.json new file mode 100644 index 00000000..df909b94 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/buffer-crc32/package.json @@ -0,0 +1,82 @@ +{ + "_args": [ + [ + "buffer-crc32@0.2.1", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express" + ] + ], + "_from": "buffer-crc32@0.2.1", + "_id": "buffer-crc32@0.2.1", + "_inCache": true, + "_installable": true, + "_location": "/buffer-crc32", + "_npmUser": { + "email": "brian@nyhacker.org", + "name": "brianloveswords" + }, + "_npmVersion": "1.1.65", + "_phantomChildren": {}, + "_requested": { + "name": "buffer-crc32", + "raw": "buffer-crc32@0.2.1", + "rawSpec": "0.2.1", + "scope": null, + "spec": "0.2.1", + "type": "version" + }, + "_requiredBy": [ + "/express", + "/express-session", + "/send" + ], + "_resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.1.tgz", + "_shasum": "be3e5382fc02b6d6324956ac1af98aa98b08534c", + "_shrinkwrap": null, + "_spec": "buffer-crc32@0.2.1", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express", + "author": { + "email": "brianloveswords@gmail.com", + "name": "Brian J. Brennan", + "url": "http://bjb.io" + }, + "bugs": { + "url": "https://github.com/brianloveswords/buffer-crc32/issues" + }, + "contributors": [ + { + "name": "Vladimir Kuznetsov" + } + ], + "dependencies": {}, + "description": "A pure javascript CRC32 algorithm that plays nice with binary data", + "devDependencies": { + "tap": "~0.2.5" + }, + "directories": {}, + "dist": { + "shasum": "be3e5382fc02b6d6324956ac1af98aa98b08534c", + "tarball": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.1.tgz" + }, + "engines": { + "node": "*" + }, + "homepage": "https://github.com/brianloveswords/buffer-crc32", + "main": "index.js", + "maintainers": [ + { + "email": "brian@nyhacker.org", + "name": "brianloveswords" + } + ], + "name": "buffer-crc32", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/brianloveswords/buffer-crc32.git" + }, + "scripts": { + "test": "./node_modules/.bin/tap tests/*.test.js" + }, + "version": "0.2.1" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/buffer-crc32/tests/crc.test.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/buffer-crc32/tests/crc.test.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/.npmignore new file mode 100644 index 00000000..9daeafb9 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/.npmignore @@ -0,0 +1 @@ +test diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/History.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/History.md new file mode 100644 index 00000000..b93e41fa --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/History.md @@ -0,0 +1,20 @@ + +0.3.0 / 2014-03-19 +================== + + * added terabyte support + +0.2.1 / 2013-04-01 +================== + + * add .component + +0.2.0 / 2012-10-28 +================== + + * bytes(200).should.eql('200b') + +0.1.0 / 2012-07-04 +================== + + * add bytes to string conversion [yields] diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/Makefile new file mode 100644 index 00000000..8e8640f2 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --reporter spec \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/Readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/Readme.md new file mode 100644 index 00000000..5591b28f --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/Readme.md @@ -0,0 +1,54 @@ +# node-bytes + + Byte string parser / formatter. + +## Example: + +```js +bytes('1kb') +// => 1024 + +bytes('2mb') +// => 2097152 + +bytes('1gb') +// => 1073741824 + +bytes(1073741824) +// => 1gb + +bytes(1099511627776) +// => 1tb +``` + +## Installation + +``` +$ npm install bytes +$ component install visionmedia/bytes.js +``` + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/bytes/component.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/component.json similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/bytes/component.json rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/component.json diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/bytes/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/bytes/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/package.json new file mode 100644 index 00000000..a9727a8f --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/bytes/package.json @@ -0,0 +1,76 @@ +{ + "_args": [ + [ + "bytes@0.3.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect" + ] + ], + "_from": "bytes@0.3.0", + "_id": "bytes@0.3.0", + "_inCache": true, + "_installable": true, + "_location": "/bytes", + "_npmUser": { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + }, + "_npmVersion": "1.3.15", + "_phantomChildren": {}, + "_requested": { + "name": "bytes", + "raw": "bytes@0.3.0", + "rawSpec": "0.3.0", + "scope": null, + "spec": "0.3.0", + "type": "version" + }, + "_requiredBy": [ + "/connect", + "/raw-body" + ], + "_resolved": "https://registry.npmjs.org/bytes/-/bytes-0.3.0.tgz", + "_shasum": "78e2e0e28c7f9c7b988ea8aee0db4d5fa9941935", + "_shrinkwrap": null, + "_spec": "bytes@0.3.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect", + "author": { + "email": "tj@vision-media.ca", + "name": "TJ Holowaychuk", + "url": "http://tjholowaychuk.com" + }, + "bugs": { + "url": "https://github.com/visionmedia/bytes.js/issues" + }, + "component": { + "scripts": { + "bytes/index.js": "index.js" + } + }, + "dependencies": {}, + "description": "byte size string parser / serializer", + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "directories": {}, + "dist": { + "shasum": "78e2e0e28c7f9c7b988ea8aee0db4d5fa9941935", + "tarball": "https://registry.npmjs.org/bytes/-/bytes-0.3.0.tgz" + }, + "homepage": "https://github.com/visionmedia/bytes.js", + "main": "index.js", + "maintainers": [ + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + } + ], + "name": "bytes", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/visionmedia/bytes.js.git" + }, + "version": "0.3.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/.npmignore new file mode 100644 index 00000000..59f49563 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/.npmignore @@ -0,0 +1,14 @@ +.git* +docs/ +test/ +support/ +component.json +components/ +build/ +lib-cov/ +coverage/ +.travis.yml +.mailmap +Makefile +*.swp +.DS_Store diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/CODE_OF_CONDUCT.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..5194527f --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/CODE_OF_CONDUCT.md @@ -0,0 +1,58 @@ +# Contributor Code of Conduct + +> Read in: [Español](http://contributor-covenant.org/version/1/3/0/es/) | +[Français](http://contributor-covenant.org/version/1/3/0/fr/) | +[Italiano](http://contributor-covenant.org/version/1/3/0/it/) | +[Magyar](http://contributor-covenant.org/version/1/3/0/hu/) | +[Polskie](http://contributor-covenant.org/version/1/3/0/pl/) | +[Português](http://contributor-covenant.org/version/1/3/0/pt/) | +[Português do Brasil](http://contributor-covenant.org/version/1/3/0/pt_br/) + +As contributors and maintainers of this project, and in the interest of +fostering an open and welcoming community, we pledge to respect all people who +contribute through reporting issues, posting feature requests, updating +documentation, submitting pull requests or patches, and other activities. + +We are committed to making participation in this project a harassment-free +experience for everyone, regardless of level of experience, gender, gender +identity and expression, sexual orientation, disability, personal appearance, +body size, race, ethnicity, age, religion, or nationality. + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery +* Personal attacks +* Trolling or insulting/derogatory comments +* Public or private harassment +* Publishing other's private information, such as physical or electronic + addresses, without explicit permission +* Other unethical or unprofessional conduct + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +By adopting this Code of Conduct, project maintainers commit themselves to +fairly and consistently applying these principles to every aspect of managing +this project. Project maintainers who do not follow or enforce the Code of +Conduct may be permanently removed from the project team. + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting a project maintainer at [INSERT EMAIL ADDRESS]. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. Maintainers are +obligated to maintain confidentiality with regard to the reporter of an +incident. + + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 1.3.0, available at +[http://contributor-covenant.org/version/1/3/0/][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/3/0/ diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/CONTRIBUTING.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/CONTRIBUTING.md new file mode 100644 index 00000000..8de9ba8e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/CONTRIBUTING.md @@ -0,0 +1,214 @@ +# Chai Contribution Guidelines + +We like to encourage you to contribute to the Chai.js repository. This should be as easy as possible for you but there are a few things to consider when contributing. The following guidelines for contribution should be followed if you want to submit a pull request or open an issue. + +Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue or assessing patches and features. + +#### Table of Contents + +- [TLDR;](#tldr) +- [Contributing](#contributing) + - [Bug Reports](#bugs) + - [Feature Requests](#features) + - [Pull Requests](#pull-requests) +- [Releasing](#releasing) +- [Support](#support) + - [Resources](#resources) + - [Core Contributors](#contributors) + + +## TLDR; + +- Creating an Issue or Pull Request requires a [GitHub](http://github.com) account. +- Issue reports should be **clear**, **concise** and **reproducible**. Check to see if your issue has already been resolved in the [master]() branch or already reported in Chai's [GitHub Issue Tracker](https://github.com/chaijs/chai/issues). +- Pull Requests must adhere to strict [coding style guidelines](https://github.com/chaijs/chai/wiki/Chai-Coding-Style-Guide). +- In general, avoid submitting PRs for new Assertions without asking core contributors first. More than likely it would be better implemented as a plugin. +- Additional support is available via the [Google Group](http://groups.google.com/group/chaijs) or on irc.freenode.net#chaijs. +- **IMPORTANT**: By submitting a patch, you agree to allow the project owner to license your work under the same license as that used by the project. + + + + +## Contributing + +The issue tracker is the preferred channel for [bug reports](#bugs), +[feature requests](#features) and [submitting pull +requests](#pull-requests), but please respect the following restrictions: + +* Please **do not** use the issue tracker for personal support requests (use + [Google Group](https://groups.google.com/forum/#!forum/chaijs) or IRC). +* Please **do not** derail or troll issues. Keep the discussion on topic and + respect the opinions of others + + +### Bug Reports + +A bug is a **demonstrable problem** that is caused by the code in the repository. + +Guidelines for bug reports: + +1. **Use the GitHub issue search** — check if the issue has already been reported. +2. **Check if the issue has been fixed** — try to reproduce it using the latest `master` or development branch in the repository. +3. **Isolate the problem** — create a test case to demonstrate your issue. Provide either a repo, gist, or code sample to demonstrate you problem. + +A good bug report shouldn't leave others needing to chase you up for more information. Please try to be as detailed as possible in your report. What is your environment? What steps will reproduce the issue? What browser(s) and/or Node.js versions experience the problem? What would you expect to be the outcome? All these details will help people to fix any potential bugs. + +Example: + +> Short and descriptive example bug report title +> +> A summary of the issue and the browser/OS environment in which it occurs. If suitable, include the steps required to reproduce the bug. +> +> 1. This is the first step +> 2. This is the second step +> 3. Further steps, etc. +> +> `` - a link to the reduced test case OR +> ```js +> expect(a).to.equal('a'); +> // code sample +> ``` +> +> Any other information you want to share that is relevant to the issue being reported. This might include the lines of code that you have identified as causing the bug, and potential solutions (and your opinions on their merits). + + +### Feature Requests + +Feature requests are welcome. But take a moment to find out whether your idea fits with the scope and aims of the project. It's up to *you* to make a strong case to convince the project's developers of the merits of this feature. Please provide as much detail and context as possible. + +Furthermore, since Chai.js has a [robust plugin API](http://chaijs.com/guide/plugins/), we encourage you to publish **new Assertions** as plugins. If your feature is an enhancement to an **existing Assertion**, please propose your changes as an issue prior to opening a pull request. If the core Chai.js contributors feel your plugin would be better suited as a core assertion, they will invite you to open a PR in [chaijs/chai](https://github.com/chaijs/chai). + + +### Pull Requests + +- PRs for new core-assertions are advised against. +- PRs for core-assertion bug fixes are always welcome. +- PRs for enhancing the interfaces are always welcome. +- PRs that increase test coverage are always welcome. +- PRs are scrutinized for coding-style. + +Good pull requests - patches, improvements, new features - are a fantastic help. They should remain focused in scope and avoid containing unrelated commits. + +**Please ask first** before embarking on any significant pull request (e.g. implementing features, refactoring code), otherwise you risk spending a lot of time working on something that the project's developers might not want to merge into the project. + +Please adhere to the coding conventions used throughout a project (indentation, accurate comments, etc.) and any other requirements (such as test coverage). Please review the [Chai.js Coding Style Guide](https://github.com/chaijs/chai/wiki/Chai-Coding-Style-Guide). + +Follow this process if you'd like your work considered for inclusion in the project: + +1. [Fork](http://help.github.com/fork-a-repo/) the project, clone your fork, and configure the remotes: + +```bash +# Clone your fork of the repo into the current directory +git clone https://github.com// +# Navigate to the newly cloned directory +cd +# Assign the original repo to a remote called "upstream" +git remote add upstream https://github.com// +``` + +2. If you cloned a while ago, get the latest changes from upstream: + +```bash +git checkout +git pull upstream +``` + +3. Create a new topic branch (off the main project development branch) to contain your feature, change, or fix: + +```bash +git checkout -b +``` + +4. Commit your changes in logical chunks. Use Git's [interactive rebase](https://help.github.com/articles/interactive-rebase) feature to tidy up your commits before making them public. + +5. Run you code to make sure it works. If you're still having problems please try to run `make clean` and then test your code again. + +```bash +npm test +# when finished running tests... +git checkout chai.js +``` + +6. Locally merge (or rebase) the upstream development branch into your topic branch: + +```bash +git pull [--rebase] upstream +``` + +7. Push your topic branch up to your fork: + +```bash +git push origin +``` + +8. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) with a clear title and description. + +**IMPORTANT**: By submitting a patch, you agree to allow the project owner to license your work under the same license as that used by the project. + + +## Releasing + +Releases can be **prepared** by anyone with access to the code. + +Simply run `make release-major`, `make release-minor`, or `make-release-patch` +and it will automatically do the following: + + - Build chai.js + - Bump the version numbers accross the project + - Make a commit within git + +All you need to do is push the commit up and make a pull request, one of the core contributors will merge it and publish a release. + +### Publishing a Release + +Anyone who is a core contributor (see the [Core Contributors Heading in the Readme](https://github.com/chaijs/chai#core-contributors)) can publish a release: + +1. Go to te [Releases page on Github](https://github.com/chaijs/chai/releases) +2. Hit "Draft a new release" (if you can't see this, you're not a core contributor!) +3. Write human-friendly Release Notes based on changelog. + - The release title is "x.x.x / YYYY-MM-DD" (where x.x.x is the version number) + - If breaking changes, write migration tutorial(s) and reasoning. + - Callouts for community contributions (PRs) with links to PR and contributing user. + - Callouts for other fixes made by core contributors with links to issue. +4. Hit "Save Draft" and get other core contributors to check your work, or alternatively hit "Publish release" +5. That's it! + + +## Support + + +### Resources + +For most of the documentation you are going to want to visit [ChaiJS.com](http://chaijs.com). + +- [Getting Started Guide](http://chaijs.com/guide/) +- [API Reference](http://chaijs.com/api/) +- [Plugins](http://chaijs.com/plugins/) + +Alternatively, the [wiki](https://github.com/chaijs/chai/wiki) might be what you are looking for. + +- [Chai Coding Style Guide](https://github.com/chaijs/chai/wiki/Chai-Coding-Style-Guide) +- [Third-party Resources](https://github.com/chaijs/chai/wiki/Third-Party-Resources) + +Or finally, you may find a core-contributor or like-minded developer in any of our support channels. + +- IRC: irc.freenode.org #chaijs +- [Mailing List / Google Group](https://groups.google.com/forum/#!forum/chaijs) + + +### Core Contributors + +Feel free to reach out to any of the core-contributors with you questions or concerns. We will do our best to respond in a timely manner. + +- Jake Luer + - GH: [@logicalparadox](https://github.com/logicalparadox) + - TW: [@jakeluer](http://twitter.com/jakeluer) + - IRC: logicalparadox +- Veselin Todorov + - GH: [@vesln](https://github.com/vesln/) + - TW: [@vesln](http://twitter.com/vesln) + - IRC: vesln +- Keith Cirkel + - GH: [@keithamus](https://github.com/keithamus) + - TW: [@keithamus](http://twitter.com/keithamus) + - IRC: keithamus diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/History.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/History.md new file mode 100644 index 00000000..ae4d323e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/History.md @@ -0,0 +1,1059 @@ +### Note + +As of 3.0.0, the History.md file has been deprecated. [Please refer to the full +commit logs available on GitHub](https://github.com/chaijs/chai/commits/master). + +--- + +2.3.0 / 2015-04-26 +================== + + * Merge pull request #423 from ehntoo/patch-1 + * Merge pull request #422 from ljharb/fix_descriptor_tests + * Fix a small bug in the .null assertion docs + * Use a regex to account for property ordering issues across engines. + * Add `make test-firefox` + * Merge pull request #417 from astorije/astorije/minimalist-typo + * Remove trailing whitespaces + * Fix super minor typo in an example + * Merge pull request #408 from ljharb/enumerableProperty + * Add `ownPropertyDescriptor` assertion. + +2.2.0 / 2015-03-26 +================== + + * Merge pull request #405 from chaijs/deep-escape-doc-tweaks + * Tweak documentation on `.deep` flag. + * Merge pull request #402 from umireon/escaping-dot-should-be-taken + * Documentation of escaping in `.deep` flag. + * take regular expression apart + * Feature: backslash-escaping in `.deep.property` + * Escaping dot should be taken in deep property + +2.1.2 / 2015-03-15 +================== + + * Merge pull request #396 from chaijs/add-keith-cirkel-contributing-md + * Add Keith Cirkel to CONTRIBUTING.md + * Merge pull request #395 from cjqed/386-assert-operator-no-eval + * No longer using eval on assert operator #386 + * Merge pull request #389 from chaijs/update-git-summary + * Update `git summary` in README + +2.1.1 / 2015-03-04 +================== + + * Merge pull request #385 from eldritch-fossicker/master + * updates to reflect code style preference from @keithamus + * fix indexing into array with deep propery + * Merge pull request #382 from astorije/patch-2 + * Merge pull request #383 from gurdiga/config-doc-wording-improvement + * config.truncateThreshold docs: simpler wording + * Add missing docstring for showDiff argument of assert + * Merge pull request #381 from astorije/patch-1 + * Add a minor precision that empty asserts on strings too. + * Merge pull request #379 from dcneiner/should-primitive-fix + * Primitives now use valueOf in shouldGetter + +2.1.0 / 2015-02-23 +================== + + * Merge pull request #374 from jmm/v2.0.1 + * Increment version to 2.0.1. + * Merge pull request #365 from chaijs/fix-travis + * Fix travis.yml deploy + * Merge pull request #356 from Soviut/master + * documented fail methods for expect and should interfaces + * fail method added directly to expect + +2.0.0 / 2015-02-09 +================== + + * Merge pull request #361 from gregglind/b265-keys-object + * fix #359. Add `.keys(object)` + * Merge pull request #359 from gregglind/b359-unexpected-keys-sort + * Fix #359 keys() sorts input unexpectedly + * contrib: publish release strategy and travis npm creds #337 + * Merge pull request #357 from danilovaz/master + * Update copyright date + * Merge pull request #349 from toastynerd/add-which-chain-method + * add the which chain method as per issue #347 + * Merge pull request #333 from cmpolis/change-assertions + * more `by` cleanup + * cleaned out `.by` for #333 + * Merge pull request #335 from DingoEatingFuzz/expose-util + * Expose chai util through the chai object + * cleanup (per notes on pr #333) + * updated `change` to work w/ non-number values + tests + * Merge pull request #334 from hurrymaplelad/patch-1 + * Typo, the flag is called 'contains' with an 's' + * updated assertion interface with `change` (#330) + * added `change`,`increase`,`decrease` assertions (#330) + * assert tests for `change`,`increase`,`decrease` + * expect/should tests for `change`,`increase`,`decrease` + * Merge pull request #328 from lo1tuma/issue-327 + * Add includes and contains alias (fixes #327) + * Merge pull request #325 from chasenlehara/overwriteChainableMethodDocs + * Fix docs for overwriteChainableMethod parameters + * Merge pull request #317 from jasonkarns/patch-2 + * Merge pull request #318 from jasonkarns/patch-3 + * Merge pull request #316 from jasonkarns/patch-1 + * typos in docs + * minor docs typo + * update docs: getAllFlags -> transferFlags + * Merge pull request #313 from cjqed/254-expect-any-all + * Added the all and any flags for keys assertion, with all being the default behavior + * Merge pull request #312 from cjqed/291-assert-same-deep-members + * Changed public comment of sameDeepMemebers to be more clear + * Fixes issue #291, adds assert.sameDeepMembers + * Merge pull request #311 from cjqed/305-above-below-on-assert + * Merge pull request #308 from prodatakey/hasproperty + * Issue #305 fixed, added assert.isAbove and assert.isBelow + * Fix typo + * More unit tests for new utility functions + * Refactor common functionality, document, test + * Refactor if statement out + * Small unit test fix + * Handle array indexing terminating paths + * Merge pull request #309 from ericdouglas/iterableEqual-couting-once + * couting variables just once + * Fix properties with `undefined` value pass property assertion + * Merge pull request #306 from chaijs/revert-297-noopchainfunc + * Revert "Allows writing lint-friendly tests" + +1.10.0 / 2014-11-10 +================== + + * Merge pull request #297 from prodatakey/noopchainfunc + * Merge pull request #300 from julienw/299-fix-getMessage-test + * Fix #299: the test is defining global variables + * Add a couple more unit tests + * Add unit tests for chained terminating property asserts + * Revise documentation wording + * Add docs for function style NOOP asserts + * Make the NOOP function a shared constant + * Merge pull request #298 from dasilvacontin/negativeZeroLogging + * why not more assertions + * added test for inspecting `-0` + * a more readable/simple condition statement, as pointed out by @keithamus + * added check for logging negative zero + * Change test to not trigger argument bug + * Allows writing lint-friendly tests + * readme: update contributors for 1.9.2 + +1.9.2 / 2014-09-29 +================== + + * Merge pull request #268 from charlierudolph/cr-lazyMessages + * Merge pull request #269 from charlierudolph/cr-codeCleanup + * Merge pull request #277 from charlierudolph/fix-doc + * Merge pull request #279 from mohayonao/fix-closeTo + * Merge pull request #292 from boneskull/mocha + * resolves #255: upgrade mocha + * Merge pull request #289 from charlierudolph/cr-dryUpCode + * Dry up code + * Merge pull request #275 from DrRataplan/master + * assert: .closeTo() verify value's type before assertion + * Rewrite pretty-printing HTML elements to prevent throwing internal errors Fixes errors occuring when using a non-native DOM implementation + * Fix assert documentation + * Remove unused argument + * Allow messages to be functions + * Merge pull request #267 from shinnn/master + * Use SVG badge + * Merge pull request #264 from cjthompson/keys_diff + * Show diff for keys assertion + +1.9.1 / 2014-03-19 +================== + + * deps update + * util: [getActual] select actual logic now allows undefined for actual. Closes #183 + * docs: [config] make public, express param type + * Merge pull request #251 from romario333/threshold3 + * Fix issue #166 - configurable threshold in objDisplay. + * Move configuration options to config.js. + * Merge pull request #233 from Empeeric/master + * Merge pull request #244 from leider/fix_for_contains + * Merge pull request #247 from didoarellano/typo-fixes + * Fix typos + * Merge pull request #245 from lfac-pt/patch-1 + * Update `exports.version` to 1.9.0 + * aborting loop on finding + * declaring variable only once + * additional test finds incomplete implementation + * simplified code + * fixing #239 (without changing chai.js) + * ssfi as it should be + * Merge pull request #228 from duncanbeevers/deep_members + * Deep equality check for collection membership + +1.9.0 / 2014-01-29 +================== + + * docs: add contributing.md #238 + * assert: .throws() returns thrown error. Closes #185 + * Merge pull request #232 from laconbass/assert-throws + * assert: .fail() parameter mismatch. Closes #206 + * Merge branch 'karma-fixes' + * Add karma phantomjs launcher + * Use latest karma and sauce launcher + * Karma tweaks + * Merge pull request #230 from jkroso/include + * Merge pull request #237 from chaijs/coverage + * Add coverage to npmignore + * Remove lib-cov from test-travisci dependents + * Remove the not longer needed lcov reporter + * Test coverage with istanbul + * Remove jscoverage + * Remove coveralls + * Merge pull request #226 from duncanbeevers/add_has + * Avoid error instantiation if possible on assert.throws + * Merge pull request #231 from duncanbeevers/update_copyright_year + * Update Copyright notices to 2014 + * handle negation correctly + * add failing test case + * support `{a:1,b:2}.should.include({a:1})` + * Merge pull request #224 from vbardales/master + * Add `has` to language chains + * Merge pull request #219 from demands/overwrite_chainable + * return error on throw method to chain on error properties, possibly different from message + * util: store chainable behavior in a __methods object on ctx + * util: code style fix + * util: add overwriteChainableMethod utility (for #215) + * Merge pull request #217 from demands/test_cleanup + * test: make it possible to run utilities tests with --watch + * makefile: change location of karma-runner bin script + * Merge pull request #202 from andreineculau/patch-2 + * test: add tests for throwing custom errors + * Merge pull request #201 from andreineculau/patch-1 + * test: updated for the new assertion errors + * core: improve message for assertion errors (throw assertion) + +1.8.1 / 2013-10-10 +================== + + * pkg: update deep-eql version + +1.8.0 / 2013-09-18 +================== + + * test: [sauce] add a few more browsers + * Merge branch 'refactor/deep-equal' + * util: remove embedded deep equal utility + * util: replace embedded deep equal with external module + * Merge branch 'feature/karma' + * docs: add sauce badge to readme [ci skip] + * test: [sauce] use karma@canary to prevent timeouts + * travis: only run on node 0.10 + * test: [karma] use karma phantomjs runner + * Merge pull request #181 from tricknotes/fix-highlight + * Fix highlight for example code + +1.7.2 / 2013-06-27 +================== + + * coverage: add coveralls badge + * test: [coveralls] add coveralls api integration. testing travis-ci integration + * Merge branch 'master' of github.com:chaijs/chai + * Merge branch 'feature/bower' + * Merge pull request #180 from tricknotes/modify-method-title + * Merge pull request #179 from tricknotes/highlight-code-example + * Modify method title to include argument name + * Fix to highlight code example + * bower: granular ignores + +1.7.1 / 2013-06-24 +================== + + * Merge branch 'feature/bower'. #175 + * bower: add json file + * build: browser + +1.7.0 / 2013-06-17 +================== + + * error: remove internal assertion error constructor + * core: [assertion-error] replace internal assertion error with dep + * deps: add chaijs/assertion-error@1.0.0 + * docs: fix typo in source file. #174 + * Merge pull request #174 from piecioshka/master + * typo + * Merge branch 'master' of github.com:chaijs/chai + * pkg: lock mocha/mocha-phantomjs versions (for now) + * Merge pull request #173 from chaijs/inspect-fix + * Fix `utils.inspect` with custom object-returning inspect()s. + * Merge pull request #171 from Bartvds/master + * replaced tabs with 2 spaces + * added assert.notOk() + * Merge pull request #169 from katsgeorgeek/topics/master + * Fix comparison objects. + +1.6.1 / 2013-06-05 +================== + + * Merge pull request #168 from katsgeorgeek/topics/master + * Add test for different RegExp flags. + * Add test for regexp comparison. + * Downgrade mocha version for fix running Phantom tests. + * Fix comparison equality of two regexps. + * Merge pull request #161 from brandonpayton/master + * Fix documented name for assert interfaces isDefined method + +1.6.0 / 2013-04-29 +================== + + * build: browser + * assert: [(not)include] throw on incompatible haystack. Closes #142 + * assert: [notInclude] add assert.notInclude. Closes #158 + * browser build + * makefile: force browser build on browser-test + * makefile: use component for browser build + * core: [assertions] remove extraneous comments + * Merge branch 'master' of github.com:chaijs/chai + * test: [assert] deep equal ordering + * Merge pull request #153 from NickHeiner/array-assertions + * giving members a no-flag assertion + * Code review comments - changing syntax + * Code review comments + * Adding members and memberEquals assertions for checking for subsets and set equality. Implements chaijs/chai#148. + * Merge pull request #140 from RubenVerborgh/function-prototype + * Restore the `call` and `apply` methods of Function when adding a chainable method. + * readme: 2013 + * notes: migration notes for deep equal changes + * test: for ever err() there must be a passing version + +1.5.0 / 2013-02-03 +================== + + * docs: add Release Notes for non-gitlog summary of changes. + * lib: update copyright to 2013 + * Merge branch 'refactor/travis' + * makefile: remove test-component for full test run + * pkg: script test now runs make test so travis will test browser + * browser: build + * tests: refactor some tests to support new objDisplay output + * test: [bootstrap] normalize boostrap across all test scenarios + * assertions: refactor some assertions to use objDisplay instead of inspect + * util: [objDisplay] normalize output of functions + * makefile: refactor for full build scenarios + * component: fix build bug where missing util:type file + * assertions: [throw] code cleanup + * Merge branch 'refactor/typeDetection' + * browser: build + * makefile: chai.js is .PHONY so it builds every time + * test: [expect] add arguments type detection test + * core/assertions: [type] (a/an) refactor to use type detection utility + * util: add cross-browser type detection utility + * Merge branch 'feature/component' + * browser: build + * component: add component.json file + * makefile: refactor for fine grain control of testing scenarios + * test: add mochaPhantomJS support and component test file + * deps: add component and mocha-phantomjs for browser testing + * ignore: update ignore files for component support + * travis: run for all branches + * Merge branch 'feature/showDiff' + * test: [Assertion] configruable showDiff flag. Closes #132 + * lib: [Assertion] add configurable showDiff flag. #132 + * Merge branch 'feature/saucelabs' + * Merge branch 'master' into feature/saucelabs + * browser: build + * support: add mocha cloud runner, client, and html test page + * test: [saucelabs] add auth placeholder + * deps: add mocha-cloud + * Merge pull request #136 from whatthejeff/message_fix + * Merge pull request #138 from timnew/master + * Fix issue #137, test message existence by using message!=null rather than using message + * Fixed backwards negation messages. + * Merge pull request #133 from RubenVerborgh/throw + * Functions throwing strings can reliably be tested. + * Merge pull request #131 from RubenVerborgh/proto + * Cache whether __proto__ is supported. + * Use __proto__ if available. + * Determine the property names to exclude beforehand. + * Merge pull request #126 from RubenVerborgh/eqls + * Add alias eqls for eql. + * Use inherited enumerable properties in deep equality comparison. + * Show inherited properties when inspecting an object. + * Add new getProperties and getEnumerableProperties utils. + * showDiff: force true for equal and eql + +1.4.2 / 2012-12-21 +================== + + * browser build: (object diff support when used with mocha) #106 + * test: [display] array test for mocha object diff + * browser: no longer need different AssertionError constructor + +1.4.1 / 2012-12-21 +================== + + * showDiff: force diff for equal and eql. #106 + * test: [expect] type null. #122 + * Merge pull request #115 from eshao/fix-assert-Throw + * FIX: assert.Throw checks error type/message + * TST: assert.Throw should check error type/message + +1.4.0 / 2012-11-29 +================== + + * pre-release browser build + * clean up index.js to not check for cov, revert package.json to use index.js + * convert tests to use new bootstrap + * refactor testing bootstrap + * use spaces (not tabs). Clean up #114 + * Merge pull request #114 from trantorLiu/master + * Add most() (alias: lte) and least() (alias: gte) to the API with new chainers "at" and "of". + * Change `main` to ./lib/chai. Fixes #28. + * Merge pull request #104 from connec/deep_equals_circular_references_ + * Merge pull request #109 from nnarhinen/patch-1 + * Check for 'actual' type + * Added support for circular references when checking deep (in)equality. + +1.3.0 / 2012-10-01 +================== + + * browser build w/ folio >= 0.3.4. Closes #99 + * add back buffer test for deep equal + * do not write flags to assertion.prototype + * remove buffer test from expect + * browser build + * improve documentation of custom error messages + * Merge branch 'master' of git://github.com/Liffft/chai into Liffft-master + * browser build + * improved buffer deep equal checking + * mocha is npm test command + * Cleaning up the js style… + * expect tests now include message pass-through + * packaging up browser-side changes… + * Increasing Throws error message verbosity + * Should syntax: piping message through + * Make globalShould test work in browser too. + * Add a setter for `Object.prototype.should`. Closes #86. + +1.2.0 / 2012-08-07 +================== + + * Merge branch 'feature/errmsg' + * browser build + * comment updates for utilities + * tweak objDislay to only kick in if object inspection is too long + * Merge branch 'master' into feature/errmsg + * add display sample for error message refactor + * first draft of error message refactor. #93 + * add `closeTo` assertion to `assert` interface. Closes #89. + * update folio build for better require.js handling. Closes #85 + * Merge pull request #92 from paulmillr/topics/add-dom-checks + * Add check for DOM objects. + * browser build + * Merge branch 'master' of github.com:chaijs/chai + * bug - getActual not defaulting to assertion subject + * Merge pull request #88 from pwnall/master + * Don't inspect() assertion arguments if the assertion passes. + +1.1.1 / 2012-07-09 +================== + + * improve commonjs support on browser build + * Merge pull request #83 from tkazec/equals + * Document .equals + * Add .equals as an alias of .equal + * remove unused browser prefix/suffix + * Merge branch 'feature/folio-build' + * browser build + * using folio to compile + * clean up makefile + * early folio 0.3.x support + +1.1.0 / 2012-06-26 +================== + + * browser build + * Disable "Assertion.includeStack is false" test in IE. + * Use `utils.getName` for all function inspections. + * Merge pull request #80 from kilianc/closeTo + * fixes #79 + * browser build + * expand docs to indicate change of subject for chaining. Closes #78 + * add `that` chain noop + * Merge branch 'bug/74' + * comments on how to property use `length` as chain. Closes #74 + * tests for length as chainable property. #74 + * add support for `length` as chainable prop/method. + * Merge branch 'bug/77' + * tests for getPathValue when working with nested arrays. Closes #77 + * add getPathValue support for nested arrays + * browser build + * fix bug for missing browser utils + * compile tool aware of new folder layout + * Merge branch 'refactor/1dot1' + * move core assertions to own file and refactor all using utils + * rearrange folder structure + +1.0.4 / 2012-06-03 +================== + + * Merge pull request #68 from fizker/itself + * Added itself chain. + * simplify error inspections for cross browser compatibility + * fix safari `addChainableMethod` errors. Closes #69 + +1.0.3 / 2012-05-27 +================== + + * Point Travis badge to the right place. + * Make error message for eql/deep.equal more clear. + * Fix .not.deep.equal. + * contributors list + +1.0.2 / 2012-05-26 +================== + + * Merge pull request #67 from chaijs/chaining-and-flags + * Browser build. + * Use `addChainableMethod` to get away from `__proto__` manipulation. + * New `addChainableMethod` utility. + * Replace `getAllFlags` with `transferFlags` utility. + * browser build + * test - get all flags + * utility - get all flags + * Add .mailmap to .npmignore. + * Add a .mailmap file to fix my name in shortlogs. + +1.0.1 / 2012-05-18 +================== + + * browser build + * Fixing "an" vs. "a" grammar in type assertions. + * Uniformize `assert` interface inline docs. + * Don't use `instanceof` for `assert.isArray`. + * Add `deep` flag for equality and property value. + * Merge pull request #64 from chaijs/assertion-docs + * Uniformize assertion inline docs. + * Add npm-debug.log to .gitignore. + * no reserved words as actuals. #62 + +1.0.0 / 2012-05-15 +================== + + * readme cleanup + * browser build + * utility comments + * removed docs + * update to package.json + * docs build + * comments / docs updates + * plugins app cleanup + * Merge pull request #61 from joliss/doc + * Fix and improve documentation of assert.equal and friends + * browser build + * doc checkpoint - texture + * Update chai-jquery link + * Use defined return value of Assertion extension functions + * Update utility docs + +1.0.0-rc3 / 2012-05-09 +================== + + * Merge branch 'feature/rc3' + * docs update + * browser build + * assert test conformity for minor refactor api + * assert minor refactor + * update util tests for new add/overwrite prop/method format + * added chai.Assertion.add/overwrite prop/method for plugin toolbox + * add/overwrite prop/method don't make assumptions about context + * doc test suite + * docs don't need coverage + * refactor all simple chains into one forEach loop, for clean documentation + * updated npm ignore + * remove old docs + * docs checkpoint - guide styled + * Merge pull request #59 from joliss/doc + * Document how to run the test suite + * don't need to rebuild docs to view + * dep update + * docs checkpoint - api section + * comment updates for docs + * new doc site checkpoint - plugin directory! + * Merge pull request #57 from kossnocorp/patch-1 + * Fix typo: devDependancies → devDependencies + * Using message flag in `getMessage` util instead of old `msg` property. + * Adding self to package.json contributors. + * `getMessage` shouldn't choke on null/omitted messages. + * `return this` not necessary in example. + * `return this` not necessary in example. + * Sinon–Chai has a dash + * updated plugins list for docs + +1.0.0-rc2 / 2012-05-06 +================== + + * Merge branch 'feature/test-cov' + * browser build + * missing assert tests for ownProperty + * appropriate assert equivalent for expect.to.have.property(key, val) + * reset AssertionError to include full stack + * test for plugin utilities + * overwrite Property and Method now ensure chain + * version notes in readme + +1.0.0-rc1 / 2012-05-04 +================== + + * browser build (rc1) + * assert match/notMatch tests + * assert interface - notMatch, ownProperty, notOwnProperty, ownPropertyVal, ownPropertyNotVal + * cleaner should interface export. + * added chai.Assertion.prototype._obj (getter) for quick access to object flag + * moved almostEqual / almostDeepEqual to stats plugin + * added mocha.opts + * Add test for `utils.addMethod` + * Fix a typo + * Add test for `utils.overwriteMethod` + * Fix a typo + * Browser build + * Add undefined assertion + * Add null assertion + * Fix an issue with `mocha --watch` + * travis no longer tests on node 0.4.x + * removing unnecissary carbon dep + * Merge branch 'feature/plugins-app' + * docs build + * templates for docs express app for plugin directory + * express app for plugin and static serving + * added web server deps + * Merge pull request #54 from josher19/master + * Remove old test.assert code + * Use util.inspect instead of inspect for deepAlmostEqual and almostEqual + * browser build + * Added almostEqual and deepAlmostEqual to assert test suite. + * bug - context determinants for utils + * dec=0 means rounding, so assert.deepAlmostEqual({pi: 3.1416}, {pi: 3}, 0) is true + * wrong travis link + * readme updates for version information + * travis tests 0.5.x branch as well + * [bug] util `addProperty` not correctly exporting + * read me version notes + * browser build 1.0.0alpha1 + * not using reserved words in internal assertions. #52 + * version tick + * clean up redundant tests + * Merge branch 'refs/heads/0.6.x' + * update version tag in package 1.0.0alpha1 + * browser build + * added utility tests to browser specs + * beginning utility testing + * updated utility comments + * utility - overwriteMethod + * utility - overwriteProperty + * utility - addMethod + * utility - addProperty + * missing ; + * contributors list update + * Merge branch 'refs/heads/0.6.x-docs' into 0.6.x + * Added guide link to docs. WIP + * Include/contain are now both properties and methods + * Add an alias annotation + * Remove usless function wrapper + * Fix a typo + * A/an are now both properties and methods + * [docs] new site homepage layout / color checkpoint + * Ignore IE-specific error properties. + * Fixing order of error message test. + * New cross-browser `getName` util. + * Fixing up `AssertionError` inheritance. + * backup docs + * Add doctypes + * [bug] was still using `constructor.name` in `throw` assertion + * [bug] flag Object.create(null) instead of new Object + * [test] browser build + * [refactor] all usage of Assertion.prototype.assert now uses template tags and flags + * [refactor] remove Assertion.prototype.inspect for testable object inspection + * [refactor] object to test is now stored in flag, with ssfi and custom message + * [bug] flag util - don't return on `set` + * [docs] comments for getMessage utility + * [feature] getMessage + * [feature] testing utilities + * [refactor] flag doesn't require `call` + * Make order of source files well-defined + * Added support for throw(errorInstance). + * Use a foolproof method of grabbing an error's name. + * Removed constructor.name check from throw. + * disabled stackTrack configuration tests until api is stable again + * first version of line displayed error for node js (unstable) + * refactor core Assertion to use flag utility for negation + * added flag utility + * tests for assert interface negatives. Closed #42 + * added assertion negatives that were missing. #42 + * Support for expected and actual parameters in assert-style error object + * chai as promised - readme + * Added assert.fail. Closes #40 + * better error message for assert.operator. Closes #39 + * [refactor] Assertion#property to use getPathValue property + * added getPathValue utility helper + * removed todo about browser build + * version notes + * version bumb 0.6.0 + * browser build + * [refactor] browser compile function to replace with `require('./error')' with 'require('./browser/error')' + * [feature] browser uses different error.js + * [refactor] error without chai.fail + * Assertion & interfaces use new utils helper export + * [refactor] primary export for new plugin util usage + * added util index.js helper + * added 2012 to copyright headers + * Added DeepEqual assertions + +0.5.3 / 2012-04-21 +================== + + * Merge branch 'refs/heads/jgonera-oldbrowsers' + * browser build + * fixed reserved names for old browsers in interface/assert + * fixed reserved names for old browsers in interface/should + * fixed: chai.js no longer contains fail() + * fixed reserved names for old browsers in Assertion + * Merge pull request #49 from joliss/build-order + * Make order of source files well-defined + * Merge pull request #43 from zzen/patch-1 + * Support for expected and actual parameters in assert-style error object + * chai as promised - readme + +0.5.2 / 2012-03-21 +================== + + * browser build + * Merge branch 'feature/assert-fail' + * Added assert.fail. Closes #40 + * Merge branch 'bug/operator-msg' + * better error message for assert.operator. Closes #39 + * version notes + +0.5.1 / 2012-03-14 +================== + + * chai.fail no longer exists + * Merge branch 'feature/assertdefined' + * Added asset#isDefined. Closes #37. + * dev docs update for Assertion#assert + +0.5.0 / 2012-03-07 +================== + + * [bug] on inspect of reg on n 0.4.12 + * Merge branch 'bug/33-throws' + * Merge pull request #35 from logicalparadox/empty-object + * browser build + * updated #throw docs + * Assertion#throw `should` tests updated + * Assertion#throw `expect` tests + * Should interface supports multiple throw parameters + * Update Assertion#throw to support strings and type checks. + * Add more tests for `empty` in `should`. + * Add more tests for `empty` in `expect`. + * Merge branch 'master' into empty-object + * don't switch act/exp + * Merge pull request #34 from logicalparadox/assert-operator + * Update the compiled verison. + * Add `assert.operator`. + * Notes on messages. #22 + * browser build + * have been test + * below tests + * Merge branch 'feature/actexp' + * browser build + * remove unnecessary fail export + * full support for actual/expected where relevant + * Assertion.assert support expected value + * clean up error + * Update the compiled version. + * Add object & sane arguments support to `Assertion#empty`. + +0.4.2 / 2012-02-28 +================== + + * fix for `process` not available in browser when used via browserify. Closes #28 + * Merge pull request #31 from joliss/doc + * Document that "should" works in browsers other than IE + * Merge pull request #30 from logicalparadox/assert-tests + * Update the browser version of chai. + * Update `assert.doesNotThrow` test in order to check the use case when type is a string. + * Add test for `assert.ifError`. + * Falsey -> falsy. + * Full coverage for `assert.throws` and `assert.doesNotThrow`. + * Add test for `assert.doesNotThrow`. + * Add test for `assert.throws`. + * Add test for `assert.length`. + * Add test for `assert.include`. + * Add test for `assert.isBoolean`. + * Fix the implementation of `assert.isNumber`. + * Add test for `assert.isNumber`. + * Add test for `assert.isString`. + * Add test for `assert.isArray`. + * Add test for `assert.isUndefined`. + * Add test for `assert.isNotNull`. + * Fix `assert.isNotNull` implementation. + * Fix `assert.isNull` implementation. + * Add test for `assert.isNull`. + * Add test for `assert.notDeepEqual`. + * Add test for `assert.deepEqual`. + * Add test for `assert.notStrictEqual`. + * Add test for `assert.strictEqual`. + * Add test for `assert.notEqual`. + +0.4.1 / 2012-02-26 +================== + + * Merge pull request #27 from logicalparadox/type-fix + * Update the browser version. + * Add should tests for type checks. + * Add function type check test. + * Add more type checks tests. + * Add test for `new Number` type check. + * Fix type of actual checks. + +0.4.0 / 2012-02-25 +================== + + * docs and readme for upcoming 0.4.0 + * docs generated + * putting coverage and tests for docs in docs/out/support + * make docs + * makefile copy necessary resources for tests in docs + * rename configuration test + * Merge pull request #21 from logicalparadox/close-to + * Update the browser version. + * Update `closeTo()` docs. + * Add `Assertion.closeTo()` method. + * Add `.closeTo()` should test. + * Add `.closeTo()` expect test. + * Merge pull request #20 from logicalparadox/satisfy + * Update the browser version. + * `..` -> `()` in `.satisfy()` should test. + * Update example for `.satisfy()`. + * Update the compiled browser version. + * Add `Assertion.satisfy()` method. + * Add `.satisfy()` should test. + * Add `.satisfy()` expect test. + * Merge pull request #19 from logicalparadox/respond-to + * Update the compiled browser version. + * Add `respondTo` Assertion. + * Add `respondTo` should test. + * Add `respondTo` expect test. + * Merge branch 'feature/coverage' + * mocha coverage support + * doc contributors + * README contributors + +0.3.4 / 2012-02-23 +================== + + * inline comment typos for #15 + * Merge branch 'refs/heads/jeffbski-configErrorStackCompat' + * includeStack documentation for all interfaces + * suite name more generic + * Update test to be compatible with browsers that do not support err.stack + * udpated compiled chai.js and added to browser tests + * Allow inclusion of stack trace for Assert error messages to be configurable + * docs sharing buttons + * sinon-chai link + * doc updates + * read me updates include plugins + +0.3.3 / 2012-02-12 +================== + + * Merge pull request #14 from jfirebaugh/configurable_properties + * Make Assertion.prototype properties configurable + +0.3.2 / 2012-02-10 +================== + + * codex version + * docs + * docs cleanup + +0.3.1 / 2012-02-07 +================== + + * node 0.4.x compat + +0.3.0 / 2012-02-07 +================== + + * Merge branch 'feature/03x' + * browser build + * remove html/json/headers testign + * regex error.message testing + * tests for using plugins + * Merge pull request #11 from domenic/master + * Make `chai.use` a no-op if the function has already been used. + +0.2.4 / 2012-02-02 +================== + + * added in past tense switch for `been` + +0.2.3 / 2012-02-01 +================== + + * try that again + +0.2.2 / 2012-02-01 +================== + + * added `been` (past of `be`) alias + +0.2.1 / 2012-01-29 +================== + + * added Throw, with a capital T, as an alias to `throw` (#7) + +0.2.0 / 2012-01-26 +================== + + * update gitignore for vim *.swp + * Merge branch 'feature/plugins' + * browser build + * interfaces now work with use + * simple .use function. See #9. + * readme notice on browser compat + +0.1.7 / 2012-01-25 +================== + + * added assert tests to browser test runner + * browser update + * `should` interface patch for primitives support in FF + * fix isObject() Thanks @milewise + * travis only on branch `master` + * add instanceof alias `instanceOf`. #6 + * some tests for assert module + +0.1.6 / 2012-01-02 +================== + + * commenting for assert interface + * updated codex dep + +0.1.5 / 2012-01-02 +================== + + * browser tests pass + * type in should.not.equal + * test for should (not) exist + * added should.exist and should.not.exist + * browser uses tdd + * convert tests to tdd + +0.1.4 / 2011-12-26 +================== + + * browser lib update for new assert interface compatiblitiy + * inspect typos + * added strict equal + negatives and ifError + * interface assert had doesNotThrow + * added should tests to browser + * new expect empty tests + * should test browser compat + * Fix typo for instanceof docs. Closes #3 [ci skip] + +0.1.3 / 2011-12-18 +================== + + * much cleaner reporting string on error. + +0.1.2 / 2011-12-18 +================== + + * [docs] for upcoming 0.1.2 + * browser version built with pre/suffix … all tests passing + * make / compile now use prefix/suffix correctly + * code clean + * prefix/suffix to wrap browser output to prevent conflicts with other `require` methods. + * Merge branch 'feature/should4xcompatibility' + * compile for browser tests.. all pass + * added header/status/html/json + * throw tests + * should.throw & should.not.throw shortcuts + * improved `throw` type detection and messaging + * contain is now `include` … keys modifier is now `contain` + * removed object() test + * removed #respondTo + * Merge branch 'bug/2' + * replaced __defineGetter__ with defineProperty for all uses + * [docs] change mp tracking code + * docs site updated with assert (TDD) interface + * updated doc comments for assert interface + +0.1.1 / 2011-12-16 +================== + + * docs ready for upcoming 0.1.1 + * readme image fixed [ci skip] + * more readme tweaks [ci skip] + * réadmet image fixed [ci skip] + * documentation + * codex locked in version 0.0.5 + * more comments to assertions for docs + * assertions fully commented, browser library updated + * adding codex as doc dependancy + * prepping for docs + * assertion component completely commented for documentation + * added exist test + * var expect outside of browser if check + * added keywords to package.json + +0.1.0 / 2011-12-15 +================== + + * failing on purpose successful .. back to normal + * testing travis failure + * assert#arguments getter + * readme typo + * updated README + * added travis and npmignore + * copyright notices … think i got them all + * moved expect interface to own file for consistency + * assert ui deepEqual + * browser tests expect (all working) + * browser version built + * chai.fail (should ui) + * expect tests browser compatible + * tests for should and expect (all pass) + * moved fail to primary export + * should compatibility testing + * within, greaterThan, object, keys, + * Aliases + * Assertion#property now correctly works with negate and undefined values + * error message language matches should + * Assertion#respondTo + * Assertion now uses inspect util + * git ignore node modules + * should is exported + * AssertionError __proto__ from Error.prototype + * add should interface for should.js compatibility + * moved eql to until folder and added inspect from (joyent/node) + * added mocha for testing + * browser build for current api + * multiple .property assertions + * added deep equal from node + +0.0.2 / 2011-12-07 +================== + + * cleaner output on error + * improved exists detection + * package remnant artifact + * empty deep equal + * test browser build + * assertion cleanup + * client compile script + * makefile + * most of the basic assertions + * allow no parameters to assertion error + * name change + * assertion error instance + * main exports: assert() & expect() + * initialize diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/README.md new file mode 100644 index 00000000..c61bfa8b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/README.md @@ -0,0 +1,83 @@ +[![Chai Documentation](http://chaijs.com/public/img/chai-logo.png)](http://chaijs.com) + +[![license:mit](https://img.shields.io/badge/license-mit-green.svg?style=flat-square)](#license)
+[![tag:?](https://img.shields.io/github/tag/chaijs/chai.svg?style=flat-square)](https://github.com/chaijs/chai/releases) +[![build:?](https://img.shields.io/travis/chaijs/chai/master.svg?style=flat-square)](https://travis-ci.org/chaijs/chai) +[![coverage:?](https://img.shields.io/coveralls/chaijs/chai/master.svg?style=flat-square)](https://coveralls.io/r/chaijs/chai)
+[![npm:](https://img.shields.io/npm/v/chai.svg?style=flat-square)](https://www.npmjs.com/packages/chai) +[![dependencies:?](https://img.shields.io/npm/dm/chai.svg?style=flat-square)](https://www.npmjs.com/packages/chai) +[![devDependencies:?](https://img.shields.io/david/chaijs/chai.svg?style=flat-square)](https://david-dm.org/chaijs/chai) + +[![Selenium Test Status](https://saucelabs.com/browser-matrix/chaijs.svg)](https://saucelabs.com/u/chaijs) + +[![Slack Status](https://chai-slack.herokuapp.com/badge.svg)]( https://chai-slack.herokuapp.com/) +[![Join the chat at https://gitter.im/chaijs/chai](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/chaijs/chai) + +Chai is a BDD / TDD assertion library for [node](http://nodejs.org) and the browser that +can be delightfully paired with any javascript testing framework. + +For more information or to download plugins, view the [documentation](http://chaijs.com). + +### Plugins + +Chai offers a robust Plugin architecture for extending Chai's assertions and interfaces. + +- Need a plugin? View the [official plugin list](http://chaijs.com/plugins). +- Have a plugin and want it listed? Open a Pull Request at [chaijs/chai-docs:plugin.js](https://github.com/chaijs/chai-docs/blob/master/plugins.js#L1-L12). +- Want to build a plugin? Read the [plugin api documentation](http://chaijs.com/guide/plugins/). + +### Related Projects + +- [chaijs / assertion-error](https://github.com/chaijs/assertion-error): Custom `Error` constructor thrown upon an assertion failing. +- [chaijs / deep-eql](https://github.com/chaijs/deep-eql): Improved deep equality testing for Node.js and the browser. +- [chaijs / type-detect](https://github.com/chaijs/type-detect): Improved typeof detection for node.js and the browser. + +### Contributing + +Thank you very much for considering to contribute! + +Here are a few issues other contributors frequently ran into when opening pull requests: + +- Please do not commit changes to the `chai.js` build. We do it once per release. +- Before pushing your commits, please make sure you [rebase](https://github.com/chaijs/chai/blob/master/CONTRIBUTING.md#pull-requests) them. + +We also strongly encourage you to read our detailed [contribution guidelines](https://github.com/chaijs/chai/blob/master/CONTRIBUTING.md). + +### Contributors + +Please see the full +[Contributors Graph](https://github.com/chaijs/chai/graphs/contributors) for our +list of contributors. + +### Core Contributors + +Feel free to reach out to any of the core contributors with your questions or +concerns. We will do our best to respond in a timely manner. + +[![Jake Luer](https://avatars3.githubusercontent.com/u/58988?v=3&s=50)](https://github.com/logicalparadox) +[![Veselin Todorov](https://avatars3.githubusercontent.com/u/330048?v=3&s=50)](https://github.com/vesln) +[![Keith Cirkel](https://avatars3.githubusercontent.com/u/118266?v=3&s=50)](https://github.com/keithamus) + +## License + +(The MIT License) + +Copyright (c) 2011-2015 Jake Luer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/ReleaseNotes.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/ReleaseNotes.md new file mode 100644 index 00000000..2a80d5ce --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/ReleaseNotes.md @@ -0,0 +1,737 @@ +# Release Notes + +## Note + +As of 3.0.0, the ReleaseNotes.md file has been deprecated. [Please refer to the release notes available on Github](https://github.com/chaijs/chai/releases). Or +[the release notes on the chaijs.com website](https://chaijs.com/releases). + +--- + +## 2.3.0 / 2015-04-26 + +Added `ownPropertyDescriptor` assertion: + +```js +expect('test').to.have.ownPropertyDescriptor('length'); +expect('test').to.have.ownPropertyDescriptor('length', { enumerable: false, configurable: false, writable: false, value: 4 }); +expect('test').not.to.have.ownPropertyDescriptor('length', { enumerable: false, configurable: false, writable: false, value: 3 }); +expect('test').ownPropertyDescriptor('length').to.have.property('enumerable', false); +expect('test').ownPropertyDescriptor('length').to.have.keys('value'); +``` + +### Community Contributions + +#### Code Features & Fixes + + * [#408](https://github.com/chaijs/chai/pull/408) Add `ownPropertyDescriptor` + assertion. + By [@ljharb](https://github.com/ljharb) + * [#422](https://github.com/chaijs/chai/pull/422) Improve ownPropertyDescriptor + tests. + By [@ljharb](https://github.com/ljharb) + +#### Documentation fixes + + * [#417](https://github.com/chaijs/chai/pull/417) Fix documentation typo + By [@astorije](https://github.com/astorije) + * [#423](https://github.com/chaijs/chai/pull/423) Fix inconsistency in docs. + By [@ehntoo](https://github.com/ehntoo) + + +## 2.2.0 / 2015-03-26 + +Deep property strings can now be escaped using `\\` - for example: + +```js +var deepCss = { '.link': { '[target]': 42 }}; +expect(deepCss).to.have.deep.property('\\.link.\\[target\\]', 42) +``` + +### Community Contributions + +#### Code Features & Fixes + + * [#402](https://github.com/chaijs/chai/pull/402) Allow escaping of deep + property keys. + By [@umireon](https://github.com/umireon) + +#### Documentation fixes + + * [#405](https://github.com/chaijs/chai/pull/405) Tweak documentation around + deep property escaping. + By [@keithamus](https://github.com/keithamus) + + +## 2.1.2 / 2015-03-15 + +A minor bug fix. No new features. + +### Community Contributions + +#### Code Features & Fixes + + * [#395](https://github.com/chaijs/chai/pull/395) Fix eval-related bugs with + assert.operator ([#386](https://github.com/chaijs/chai/pull/386)). + By [@cjqed](https://github.com/cjqed) + +## 2.1.1 / 2015-03-04 + +Two minor bugfixes. No new features. + +### Community Contributions + +#### Code Features & Fixes + + * [#385](https://github.com/chaijs/chai/pull/385) Fix a bug (also described in + [#387](https://github.com/chaijs/chai/pull/385)) where `deep.property` would not work with single + key names. By [@eldritch-fossicker](https://github.com/eldritch-fossicker) + * [#379](https://github.com/chaijs/chai/pull/379) Fix bug where tools which overwrite + primitive prototypes, such as Babel or core-js would fail. + By [@dcneiner](https://github.com/dcneiner) + +#### Documentation fixes + + * [#382](https://github.com/chaijs/chai/pull/382) Add doc for showDiff argument in assert. + By [@astorije](https://github.com/astorije) + * [#383](https://github.com/chaijs/chai/pull/383) Improve wording for truncateTreshold docs + By [@gurdiga](https://github.com/gurdiga) + * [#381](https://github.com/chaijs/chai/pull/381) Improve wording for assert.empty docs + By [@astorije](https://github.com/astorije) + +## 2.1.0 / 2015-02-23 + +Small release; fixes an issue where the Chai lib was incorrectly reporting the +version number. + +Adds new `should.fail()` and `expect.fail()` methods, which are convinience +methods to throw Assertion Errors. + +### Community Contributions + +#### Code Features & Fixes + + * [#356](https://github.com/chaijs/chai/pull/356) Add should.fail(), expect.fail(). By [@Soviut](https://github.com/Soviut) + * [#374](https://github.com/chaijs/chai/pull/374) Increment version. By [@jmm](https://github.com/jmm) + +## 2.0.0 / 2015-02-09 + +Unfortunately with 1.10.0 - compatibility broke with older versions because of +the `addChainableNoop`. This change has been reverted. + +Any plugins using `addChainableNoop` should cease to do so. + +Any developers wishing for this behaviour can use [dirty-chai](https://www.npmjs.com/package/dirty-chai) +by [@joshperry](https://github.com/joshperry) + +### Community Contributions + +#### Code Features & Fixes + + * [#361](https://github.com/chaijs/chai/pull/361) `.keys()` now accepts Objects, extracting keys from them. By [@gregglind](https://github.com/gregglind) + * [#359](https://github.com/chaijs/chai/pull/359) `.keys()` no longer mutates passed arrays. By [@gregglind](https://github.com/gregglind) + * [#349](https://github.com/chaijs/chai/pull/349) Add a new chainable keyword - `.which`. By [@toastynerd](https://github.com/toastynerd) + * [#333](https://github.com/chaijs/chai/pull/333) Add `.change`, `.increase` and `.decrease` assertions. By [@cmpolis](https://github.com/cmpolis) + * [#335](https://github.com/chaijs/chai/pull/335) `chai.util` is now exposed [@DingoEatingFuzz](https://github.com/DingoEatingFuzz) + * [#328](https://github.com/chaijs/chai/pull/328) Add `.includes` and `.contains` aliases (for `.include` and `.contain`). By [@lo1tuma](https://github.com/lo1tuma) + * [#313](https://github.com/chaijs/chai/pull/313) Add `.any.keys()` and `.all.keys()` qualifiers. By [@cjqed](https://github.com/cjqed) + * [#312](https://github.com/chaijs/chai/pull/312) Add `assert.sameDeepMembers()`. By [@cjqed](https://github.com/cjqed) + * [#311](https://github.com/chaijs/chai/pull/311) Add `assert.isAbove()` and `assert.isBelow()`. By [@cjqed](https://github.com/cjqed) + * [#308](https://github.com/chaijs/chai/pull/308) `property` and `deep.property` now pass if a value is set to `undefined`. By [@prodatakey](https://github.com/prodatakey) + * [#309](https://github.com/chaijs/chai/pull/309) optimize deep equal in Arrays. By [@ericdouglas](https://github.com/ericdouglas) + * [#306](https://github.com/chaijs/chai/pull/306) revert #297 - allowing lint-friendly tests. By [@keithamus](https://github.com/keithamus) + +#### Documentation fixes + + * [#357](https://github.com/chaijs/chai/pull/357) Copyright year updated in docs. By [@danilovaz](https://github.com/danilovaz) + * [#325](https://github.com/chaijs/chai/pull/325) Fix documentation for overwriteChainableMethod. By [@chasenlehara](https://github.com/chasenlehara) + * [#334](https://github.com/chaijs/chai/pull/334) Typo fix. By [@hurrymaplelad](https://github.com/hurrymaplelad) + * [#317](https://github.com/chaijs/chai/pull/317) Typo fix. By [@jasonkarns](https://github.com/jasonkarns) + * [#318](https://github.com/chaijs/chai/pull/318) Typo fix. By [@jasonkarns](https://github.com/jasonkarns) + * [#316](https://github.com/chaijs/chai/pull/316) Typo fix. By [@jasonkarns](https://github.com/jasonkarns) + + +## 1.10.0 / 2014-11-10 + +The following changes are required if you are upgrading from the previous version: + +- **Users:** + - No changes required +- **Plugin Developers:** + - Review `addChainableNoop` notes below. +- **Core Contributors:** + - Refresh `node_modules` folder for updated dependencies. + +### Noop Function for Terminating Assertion Properties + +The following assertions can now also be used in the function-call form: + +* ok +* true +* false +* null +* undefined +* exist +* empty +* arguments +* Arguments + +The above list of assertions are property getters that assert immediately on +access. Because of that, they were written to be used by terminating the assertion +chain with a property access. + +```js +expect(true).to.be.true; +foo.should.be.ok; +``` + +This syntax is definitely aesthetically pleasing but, if you are linting your +test code, your linter will complain with an error something like "Expected an +assignment or function call and instead saw an expression." Since the linter +doesn't know about the property getter it assumes this line has no side-effects, +and throws a warning in case you made a mistake. + +Squelching these errors is not a good solution as test code is getting to be +just as important as, if not more than, production code. Catching syntactical +errors in tests using static analysis is a great tool to help make sure that your +tests are well-defined and free of typos. + +A better option was to provide a function-call form for these assertions so that +the code's intent is more clear and the linters stop complaining about something +looking off. This form is added in addition to the existing property access form +and does not impact existing test code. + +```js +expect(true).to.be.true(); +foo.should.be.ok(); +``` + +These forms can also be mixed in any way, these are all functionally identical: + +```js +expect(true).to.be.true.and.not.false(); +expect(true).to.be.true().and.not.false; +expect(true).to.be.true.and.not.false; +``` + +#### Plugin Authors + +If you would like to provide this function-call form for your terminating assertion +properties, there is a new function to register these types of asserts. Instead +of using `addProperty` to register terminating assertions, simply use `addChainableNoop` +instead; the arguments to both are identical. The latter will make the assertion +available in both the attribute and function-call forms and should have no impact +on existing users of your plugin. + +### Community Contributions + +- [#297](https://github.com/chaijs/chai/pull/297) Allow writing lint-friendly tests. [@joshperry](https://github.com/joshperry) +- [#298](https://github.com/chaijs/chai/pull/298) Add check for logging `-0`. [@dasilvacontin](https://github.com/dasilvacontin) +- [#300](https://github.com/chaijs/chai/pull/300) Fix #299: the test is defining global variables [@julienw](https://github.com/julienw) + +Thank you to all who took time to contribute! + +## 1.9.2 / 2014-09-29 + +The following changes are required if you are upgrading from the previous version: + +- **Users:** + - No changes required +- **Plugin Developers:** + - No changes required +- **Core Contributors:** + - Refresh `node_modules` folder for updated dependencies. + +### Community Contributions + +- [#264](https://github.com/chaijs/chai/pull/264) Show diff for keys assertions [@cjthompson](https://github.com/cjthompson) +- [#267](https://github.com/chaijs/chai/pull/267) Use SVG badges [@shinnn](https://github.com/shinnn) +- [#268](https://github.com/chaijs/chai/pull/268) Allow messages to be functions (sinon-compat) [@charlierudolph](https://github.com/charlierudolph) +- [#269](https://github.com/chaijs/chai/pull/269) Remove unused argument for #lengthOf [@charlierudolph](https://github.com/charlierudolph) +- [#275](https://github.com/chaijs/chai/pull/275) Rewrite pretty-printing HTML elements to prevent throwing internal errors [@DrRataplan](https://github.com/DrRataplan) +- [#277](https://github.com/chaijs/chai/pull/277) Fix assert documentation for #sameMembers [@charlierudolph](https://github.com/charlierudolph) +- [#279](https://github.com/chaijs/chai/pull/279) closeTo should check value's type before assertion [@mohayonao](https://github.com/mohayonao) +- [#289](https://github.com/chaijs/chai/pull/289) satisfy is called twice [@charlierudolph](https://github.com/charlierudolph) +- [#292](https://github.com/chaijs/chai/pull/292) resolve conflicts with node-webkit and global usage [@boneskull](https://github.com/boneskull) + +Thank you to all who took time to contribute! + +## 1.9.1 / 2014-03-19 + +The following changes are required if you are upgrading from the previous version: + +- **Users:** + - Migrate configuration options to new interface. (see notes) +- **Plugin Developers:** + - No changes required +- **Core Contributors:** + - Refresh `node_modules` folder for updated dependencies. + +### Configuration + +There have been requests for changes and additions to the configuration mechanisms +and their impact in the Chai architecture. As such, we have decoupled the +configuration from the `Assertion` constructor. This not only allows for centralized +configuration, but will allow us to shift the responsibility from the `Assertion` +constructor to the `assert` interface in future releases. + +These changes have been implemented in a non-breaking way, but a depretiation +warning will be presented to users until they migrate. The old config method will +be removed in either `v1.11.0` or `v2.0.0`, whichever comes first. + +#### Quick Migration + +```js +// change this: +chai.Assertion.includeStack = true; +chai.Assertion.showDiff = false; + +// ... to this: +chai.config.includeStack = true; +chai.config.showDiff = false; +``` + +#### All Config Options + +##### config.includeStack + +- **@param** _{Boolean}_ +- **@default** `false` + +User configurable property, influences whether stack trace is included in +Assertion error message. Default of `false` suppresses stack trace in the error +message. + +##### config.showDiff + +- **@param** _{Boolean}_ +- **@default** `true` + +User configurable property, influences whether or not the `showDiff` flag +should be included in the thrown AssertionErrors. `false` will always be `false`; +`true` will be true when the assertion has requested a diff be shown. + +##### config.truncateThreshold **(NEW)** + +- **@param** _{Number}_ +- **@default** `40` + +User configurable property, sets length threshold for actual and expected values +in assertion errors. If this threshold is exceeded, the value is truncated. + +Set it to zero if you want to disable truncating altogether. + +```js +chai.config.truncateThreshold = 0; // disable truncating +``` + +### Community Contributions + +- [#228](https://github.com/chaijs/chai/pull/228) Deep equality check for memebers. [@duncanbeevers](https://github.com/duncanbeevers) +- [#247](https://github.com/chaijs/chai/pull/247) Proofreading. [@didorellano](https://github.com/didoarellano) +- [#244](https://github.com/chaijs/chai/pull/244) Fix `contain`/`include` 1.9.0 regression. [@leider](https://github.com/leider) +- [#233](https://github.com/chaijs/chai/pull/233) Improvements to `ssfi` for `assert` interface. [@refack](https://github.com/refack) +- [#251](https://github.com/chaijs/chai/pull/251) New config option: object display threshold. [@romario333](https://github.com/romario333) + +Thank you to all who took time to contribute! + +### Other Bug Fixes + +- [#183](https://github.com/chaijs/chai/issues/183) Allow `undefined` for actual. (internal api) +- Update Karam(+plugins)/Istanbul to most recent versions. + +## 1.9.0 / 2014-01-29 + +The following changes are required if you are upgrading from the previous version: + +- **Users:** + - No changes required +- **Plugin Developers:** + - Review [#219](https://github.com/chaijs/chai/pull/219). +- **Core Contributors:** + - Refresh `node_modules` folder for updated dependencies. + +### Community Contributions + +- [#202](https://github.com/chaijs/chai/pull/201) Improve error message for .throw(). [@andreineculau](https://github.com/andreineculau) +- [#217](https://github.com/chaijs/chai/pull/217) Chai tests can be run with `--watch`. [@demands](https://github.com/demands) +- [#219](https://github.com/chaijs/chai/pull/219) Add overwriteChainableMethod utility. [@demands](https://github.com/demands) +- [#224](https://github.com/chaijs/chai/pull/224) Return error on throw method to chain on error properties. [@vbardales](https://github.com/vbardales) +- [#226](https://github.com/chaijs/chai/pull/226) Add `has` to language chains. [@duncanbeevers](https://github.com/duncanbeevers) +- [#230](https://github.com/chaijs/chai/pull/230) Support `{a:1,b:2}.should.include({a:1})` [@jkroso](https://github.com/jkroso) +- [#231](https://github.com/chaijs/chai/pull/231) Update Copyright notices to 2014 [@duncanbeevers](https://github.com/duncanbeevers) +- [#232](https://github.com/chaijs/chai/pull/232) Avoid error instantiation if possible on assert.throws. [@laconbass](https://github.com/laconbass) + +Thank you to all who took time to contribute! + +### Other Bug Fixes + +- [#225](https://github.com/chaijs/chai/pull/225) Improved AMD wrapper provided by upstream `component(1)`. +- [#185](https://github.com/chaijs/chai/issues/185) `assert.throws()` returns thrown error for further assertions. +- [#237](https://github.com/chaijs/chai/pull/237) Remove coveralls/jscoverage, include istanbul coverage report in travis test. +- Update Karma and Sauce runner versions for consistent CI results. No more karma@canary. + +## 1.8.1 / 2013-10-10 + +The following changes are required if you are upgrading from the previous version: + +- **Users:** + - Refresh `node_modules` folder for updated dependencies. +- **Plugin Developers:** + - No changes required +- **Core Contributors:** + - Refresh `node_modules` folder for updated dependencies. + +### Browserify + +This is a small patch that updates the dependency tree so browserify users can install +chai. (Remove conditional requires) + +## 1.8.0 / 2013-09-18 + +The following changes are required if you are upgrading from the previous version: + +- **Users:** + - See `deep.equal` notes. +- **Plugin Developers:** + - No changes required +- **Core Contributors:** + - Refresh `node_modules` folder for updated dependencies. + +### Deep Equals + +This version of Chai focused on a overhaul to the deep equal utility. The code for this +tool has been removed from the core lib and can now be found at: +[chai / deep-eql](https://github.com/chaijs/deep-eql). As stated in previous releases, +this is part of a larger initiative to provide transparency, independent testing, and coverage for +some of the more complicated internal tools. + +For the most part `.deep.equal` will behave the same as it has. However, in order to provide a +consistent ruleset across all types being tested, the following changes have been made and _might_ +require changes to your tests. + +**1.** Strict equality for non-traversable nodes according to [egal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + +_Previously:_ Non-traversable equal via `===`. + +```js +expect(NaN).to.deep.equal(NaN); +expect(-0).to.not.deep.equal(+0); +``` + +**2.** Arguments are not Arrays (and all types must be equal): + +_Previously:_ Some crazy nonsense that led to empty arrays deep equaling empty objects deep equaling dates. + +```js +expect(arguments).to.not.deep.equal([]); +expect(Array.prototype.slice.call(arguments)).to.deep.equal([]); +``` + +- [#156](https://github.com/chaijs/chai/issues/156) Empty object is eql to empty array +- [#192](https://github.com/chaijs/chai/issues/192) empty object is eql to a Date object +- [#194](https://github.com/chaijs/chai/issues/194) refactor deep-equal utility + +### CI and Browser Testing + +Chai now runs the browser CI suite using [Karma](http://karma-runner.github.io/) directed at +[SauceLabs](https://saucelabs.com/). This means we get to know where our browser support stands... +and we get a cool badge: + +[![Selenium Test Status](https://saucelabs.com/browser-matrix/logicalparadox.svg)](https://saucelabs.com/u/logicalparadox) + +Look for the list of browsers/versions to expand over the coming releases. + +- [#195](https://github.com/chaijs/chai/issues/195) karma test framework + +## 1.7.2 / 2013-06-27 + +The following changes are required if you are upgrading from the previous version: + +- **Users:** + - No changes required. +- **Plugin Developers:** + - No changes required +- **Core Contributors:** + - Refresh `node_modules` folder for updated dependencies. + +### Coverage Reporting + +Coverage reporting has always been available for core-developers but the data has never been published +for our end users. In our ongoing effort to improve accountability this data will now be published via +the [coveralls.io](https://coveralls.io/) service. A badge has been added to the README and the full report +can be viewed online at the [chai coveralls project](https://coveralls.io/r/chaijs/chai). Furthermore, PRs +will receive automated messages indicating how their PR impacts test coverage. This service is tied to TravisCI. + +### Other Fixes + +- [#175](https://github.com/chaijs/chai/issues/175) Add `bower.json`. (Fix ignore all) + +## 1.7.1 / 2013-06-24 + +The following changes are required if you are upgrading from the previous version: + +- **Users:** + - No changes required. +- **Plugin Developers:** + - No changes required +- **Core Contributors:** + - Refresh `node_modules` folder for updated dependencies. + +### Official Bower Support + +Support has been added for the Bower Package Manager ([bower.io])(http://bower.io/). Though +Chai could be installed via Bower in the past, this update adds official support via the `bower.json` +specification file. + +- [#175](https://github.com/chaijs/chai/issues/175) Add `bower.json`. + +## 1.7.0 / 2013-06-17 + +The following changes are required if you are upgrading from the previous version: + +- **Users:** + - No changes required. +- **Plugin Developers:** + - Review AssertionError update notice. +- **Core Contributors:** + - Refresh `node_modules` folder for updated dependencies. + +### AssertionError Update Notice + +Chai now uses [chaijs/assertion-error](https://github.com/chaijs/assertion-error) instead an internal +constructor. This will allow for further iteration/experimentation of the AssertionError constructor +independant of Chai. Future plans include stack parsing for callsite support. + +This update constructor has a different constructor param signature that conforms more with the standard +`Error` object. If your plugin throws and `AssertionError` directly you will need to update your plugin +with the new signature. + +```js +var AssertionError = require('chai').AssertionError; + +/** + * previous + * + * @param {Object} options + */ + +throw new AssertionError({ + message: 'An assertion error occurred' + , actual: actual + , expect: expect + , startStackFunction: arguments.callee + , showStack: true +}); + +/** + * new + * + * @param {String} message + * @param {Object} options + * @param {Function} start stack function + */ + +throw new AssertionError('An assertion error occurred', { + actual: actual + , expect: expect + , showStack: true +}, arguments.callee); + +// other signatures +throw new AssertionError('An assertion error occurred'); +throw new AssertionError('An assertion error occurred', null, arguments.callee); +``` + +#### External Dependencies + +This is the first non-developement dependency for Chai. As Chai continues to evolve we will begin adding +more; the next will likely be improved type detection and deep equality. With Chai's userbase continually growing +there is an higher need for accountability and documentation. External dependencies will allow us to iterate and +test on features independent from our interfaces. + +Note: The browser packaged version `chai.js` will ALWAYS contain all dependencies needed to run Chai. + +### Community Contributions + +- [#169](https://github.com/chaijs/chai/pull/169) Fix deep equal comparison for Date/Regexp types. [@katsgeorgeek](https://github.com/katsgeorgeek) +- [#171](https://github.com/chaijs/chai/pull/171) Add `assert.notOk()`. [@Bartvds](https://github.com/Bartvds) +- [#173](https://github.com/chaijs/chai/pull/173) Fix `inspect` utility. [@domenic](https://github.com/domenic) + +Thank you to all who took the time to contribute! + +## 1.6.1 / 2013-06-05 + +The following changes are required if you are upgrading from the previous version: + +- **Users:** + - No changes required. +- **Plugin Developers:** + - No changes required. +- **Core Contributors:** + - Refresh `node_modules` folder for updated developement dependencies. + +### Deep Equality + +Regular Expressions are now tested as part of all deep equality assertions. In previous versions +they silently passed for all scenarios. Thanks to [@katsgeorgeek](https://github.com/katsgeorgeek) for the contribution. + +### Community Contributions + +- [#161](https://github.com/chaijs/chai/pull/161) Fix documented name for assert interface's isDefined method. [@brandonpayton](https://github.com/brandonpayton) +- [#168](https://github.com/chaijs/chai/pull/168) Fix comparison equality of two regexps for when using deep equality. [@katsgeorgeek](https://github.com/katsgeorgeek) + +Thank you to all who took the time to contribute! + +### Additional Notes + +- Mocha has been locked at version `1.8.x` to ensure `mocha-phantomjs` compatibility. + +## 1.6.0 / 2013-04-29 + +The following changes are required if you are upgrading from the previous version: + +- **Users:** + - No changes required. +- **Plugin Developers:** + - No changes required. +- **Core Contributors:** + - Refresh `node_modules` folder for updated developement dependencies. + +### New Assertions + +#### Array Members Inclusion + +Asserts that the target is a superset of `set`, or that the target and `set` have the same members. +Order is not taken into account. Thanks to [@NickHeiner](https://github.com/NickHeiner) for the contribution. + +```js +// (expect/should) full set +expect([4, 2]).to.have.members([2, 4]); +expect([5, 2]).to.not.have.members([5, 2, 1]); + +// (expect/should) inclusion +expect([1, 2, 3]).to.include.members([3, 2]); +expect([1, 2, 3]).to.not.include.members([3, 2, 8]); + +// (assert) full set +assert.sameMembers([ 1, 2, 3 ], [ 2, 1, 3 ], 'same members'); + +// (assert) inclusion +assert.includeMembers([ 1, 2, 3 ], [ 2, 1 ], 'include members'); + +``` + +#### Non-inclusion for Assert Interface + +Most `assert` functions have a negative version, like `instanceOf()` has a corresponding `notInstaceOf()`. +However `include()` did not have a corresponding `notInclude()`. This has been added. + +```js +assert.notInclude([ 1, 2, 3 ], 8); +assert.notInclude('foobar', 'baz'); +``` + +### Community Contributions + +- [#140](https://github.com/chaijs/chai/pull/140) Restore `call`/`apply` methods for plugin interface. [@RubenVerborgh](https://github.com/RubenVerborgh) +- [#148](https://github.com/chaijs/chai/issues/148)/[#153](https://github.com/chaijs/chai/pull/153) Add `members` and `include.members` assertions. [#NickHeiner](https://github.com/NickHeiner) + +Thank you to all who took time to contribute! + +### Other Bug Fixes + +- [#142](https://github.com/chaijs/chai/issues/142) `assert#include` will no longer silently pass on wrong-type haystack. +- [#158](https://github.com/chaijs/chai/issues/158) `assert#notInclude` has been added. +- Travis-CI now tests Node.js `v0.10.x`. Support for `v0.6.x` has been removed. `v0.8.x` is still tested as before. + +## 1.5.0 / 2013-02-03 + +### Migration Requirements + +The following changes are required if you are upgrading from the previous version: + +- **Users:** + - _Update [2013-02-04]:_ Some users may notice a small subset of deep equality assertions will no longer pass. This is the result of + [#120](https://github.com/chaijs/chai/issues/120), an improvement to our deep equality algorithm. Users will need to revise their assertions + to be more granular should this occur. Further information: [#139](https://github.com/chaijs/chai/issues/139). +- **Plugin Developers:** + - No changes required. +- **Core Contributors:** + - Refresh `node_modules` folder for updated developement dependencies. + +### Community Contributions + +- [#126](https://github.com/chaijs/chai/pull/126): Add `eqls` alias for `eql`. [@RubenVerborgh](https://github.com/RubenVerborgh) +- [#127](https://github.com/chaijs/chai/issues/127): Performance refactor for chainable methods. [@RubenVerborgh](https://github.com/RubenVerborgh) +- [#133](https://github.com/chaijs/chai/pull/133): Assertion `.throw` support for primitives. [@RubenVerborgh](https://github.com/RubenVerborgh) +- [#137](https://github.com/chaijs/chai/issues/137): Assertion `.throw` support for empty messages. [@timnew](https://github.com/timnew) +- [#136](https://github.com/chaijs/chai/pull/136): Fix backward negation messages when using `.above()` and `.below()`. [@whatthejeff](https://github.com/whatthejeff) + +Thank you to all who took time to contribute! + +### Other Bug Fixes + +- Improve type detection of `.a()`/`.an()` to work in cross-browser scenarios. +- [#116](https://github.com/chaijs/chai/issues/116): `.throw()` has cleaner display of errors when WebKit browsers. +- [#120](https://github.com/chaijs/chai/issues/120): `.eql()` now works to compare dom nodes in browsers. + + +### Usage Updates + +#### For Users + +**1. Component Support:** Chai now included the proper configuration to be installed as a +[component](https://github.com/component/component). Component users are encouraged to consult +[chaijs.com](http://chaijs.com) for the latest version number as using the master branch +does not gaurantee stability. + +```js +// relevant component.json + devDependencies: { + "chaijs/chai": "1.5.0" + } +``` + +Alternatively, bleeding-edge is available: + + $ component install chaijs/chai + +**2. Configurable showDiff:** Some test runners (such as [mocha](http://visionmedia.github.com/mocha/)) +include support for showing the diff of strings and objects when an equality error occurs. Chai has +already included support for this, however some users may not prefer this display behavior. To revert to +no diff display, the following configuration is available: + +```js +chai.Assertion.showDiff = false; // diff output disabled +chai.Assertion.showDiff = true; // default, diff output enabled +``` + +#### For Plugin Developers + +**1. New Utility - type**: The new utility `.type()` is available as a better implementation of `typeof` +that can be used cross-browser. It handles the inconsistencies of Array, `null`, and `undefined` detection. + +- **@param** _{Mixed}_ object to detect type of +- **@return** _{String}_ object type + +```js +chai.use(function (c, utils) { + // some examples + utils.type({}); // 'object' + utils.type(null); // `null' + utils.type(undefined); // `undefined` + utils.type([]); // `array` +}); +``` + +#### For Core Contributors + +**1. Browser Testing**: Browser testing of the `./chai.js` file is now available in the command line +via PhantomJS. `make test` and Travis-CI will now also rebuild and test `./chai.js`. Consequently, all +pull requests will now be browser tested in this way. + +_Note: Contributors opening pull requests should still NOT include the browser build._ + +**2. SauceLabs Testing**: Early SauceLab support has been enabled with the file `./support/mocha-cloud.js`. +Those interested in trying it out should create a free [Open Sauce](https://saucelabs.com/signup/plan) account +and include their credentials in `./test/auth/sauce.json`. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/bower.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/bower.json new file mode 100644 index 00000000..af2ee029 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/bower.json @@ -0,0 +1,26 @@ +{ + "name": "chai", + "description": "BDD/TDD assertion library for node.js and the browser. Test framework agnostic.", + "license": "MIT", + "keywords": [ + "test", + "assertion", + "assert", + "testing", + "chai" + ], + "main": "chai.js", + "ignore": [ + "build", + "components", + "lib", + "node_modules", + "support", + "test", + "index.js", + "Makefile", + ".*" + ], + "dependencies": {}, + "devDependencies": {} +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/chai.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/chai.js new file mode 100644 index 00000000..1d30296a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/chai.js @@ -0,0 +1,6142 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.chai = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o + * MIT Licensed + */ + +var used = [] + , exports = module.exports = {}; + +/*! + * Chai version + */ + +exports.version = '3.5.0'; + +/*! + * Assertion Error + */ + +exports.AssertionError = require('assertion-error'); + +/*! + * Utils for plugins (not exported) + */ + +var util = require('./chai/utils'); + +/** + * # .use(function) + * + * Provides a way to extend the internals of Chai + * + * @param {Function} + * @returns {this} for chaining + * @api public + */ + +exports.use = function (fn) { + if (!~used.indexOf(fn)) { + fn(this, util); + used.push(fn); + } + + return this; +}; + +/*! + * Utility Functions + */ + +exports.util = util; + +/*! + * Configuration + */ + +var config = require('./chai/config'); +exports.config = config; + +/*! + * Primary `Assertion` prototype + */ + +var assertion = require('./chai/assertion'); +exports.use(assertion); + +/*! + * Core Assertions + */ + +var core = require('./chai/core/assertions'); +exports.use(core); + +/*! + * Expect interface + */ + +var expect = require('./chai/interface/expect'); +exports.use(expect); + +/*! + * Should interface + */ + +var should = require('./chai/interface/should'); +exports.use(should); + +/*! + * Assert interface + */ + +var assert = require('./chai/interface/assert'); +exports.use(assert); + +},{"./chai/assertion":3,"./chai/config":4,"./chai/core/assertions":5,"./chai/interface/assert":6,"./chai/interface/expect":7,"./chai/interface/should":8,"./chai/utils":22,"assertion-error":30}],3:[function(require,module,exports){ +/*! + * chai + * http://chaijs.com + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + */ + +var config = require('./config'); + +module.exports = function (_chai, util) { + /*! + * Module dependencies. + */ + + var AssertionError = _chai.AssertionError + , flag = util.flag; + + /*! + * Module export. + */ + + _chai.Assertion = Assertion; + + /*! + * Assertion Constructor + * + * Creates object for chaining. + * + * @api private + */ + + function Assertion (obj, msg, stack) { + flag(this, 'ssfi', stack || arguments.callee); + flag(this, 'object', obj); + flag(this, 'message', msg); + } + + Object.defineProperty(Assertion, 'includeStack', { + get: function() { + console.warn('Assertion.includeStack is deprecated, use chai.config.includeStack instead.'); + return config.includeStack; + }, + set: function(value) { + console.warn('Assertion.includeStack is deprecated, use chai.config.includeStack instead.'); + config.includeStack = value; + } + }); + + Object.defineProperty(Assertion, 'showDiff', { + get: function() { + console.warn('Assertion.showDiff is deprecated, use chai.config.showDiff instead.'); + return config.showDiff; + }, + set: function(value) { + console.warn('Assertion.showDiff is deprecated, use chai.config.showDiff instead.'); + config.showDiff = value; + } + }); + + Assertion.addProperty = function (name, fn) { + util.addProperty(this.prototype, name, fn); + }; + + Assertion.addMethod = function (name, fn) { + util.addMethod(this.prototype, name, fn); + }; + + Assertion.addChainableMethod = function (name, fn, chainingBehavior) { + util.addChainableMethod(this.prototype, name, fn, chainingBehavior); + }; + + Assertion.overwriteProperty = function (name, fn) { + util.overwriteProperty(this.prototype, name, fn); + }; + + Assertion.overwriteMethod = function (name, fn) { + util.overwriteMethod(this.prototype, name, fn); + }; + + Assertion.overwriteChainableMethod = function (name, fn, chainingBehavior) { + util.overwriteChainableMethod(this.prototype, name, fn, chainingBehavior); + }; + + /** + * ### .assert(expression, message, negateMessage, expected, actual, showDiff) + * + * Executes an expression and check expectations. Throws AssertionError for reporting if test doesn't pass. + * + * @name assert + * @param {Philosophical} expression to be tested + * @param {String|Function} message or function that returns message to display if expression fails + * @param {String|Function} negatedMessage or function that returns negatedMessage to display if negated expression fails + * @param {Mixed} expected value (remember to check for negation) + * @param {Mixed} actual (optional) will default to `this.obj` + * @param {Boolean} showDiff (optional) when set to `true`, assert will display a diff in addition to the message if expression fails + * @api private + */ + + Assertion.prototype.assert = function (expr, msg, negateMsg, expected, _actual, showDiff) { + var ok = util.test(this, arguments); + if (true !== showDiff) showDiff = false; + if (true !== config.showDiff) showDiff = false; + + if (!ok) { + var msg = util.getMessage(this, arguments) + , actual = util.getActual(this, arguments); + throw new AssertionError(msg, { + actual: actual + , expected: expected + , showDiff: showDiff + }, (config.includeStack) ? this.assert : flag(this, 'ssfi')); + } + }; + + /*! + * ### ._obj + * + * Quick reference to stored `actual` value for plugin developers. + * + * @api private + */ + + Object.defineProperty(Assertion.prototype, '_obj', + { get: function () { + return flag(this, 'object'); + } + , set: function (val) { + flag(this, 'object', val); + } + }); +}; + +},{"./config":4}],4:[function(require,module,exports){ +module.exports = { + + /** + * ### config.includeStack + * + * User configurable property, influences whether stack trace + * is included in Assertion error message. Default of false + * suppresses stack trace in the error message. + * + * chai.config.includeStack = true; // enable stack on error + * + * @param {Boolean} + * @api public + */ + + includeStack: false, + + /** + * ### config.showDiff + * + * User configurable property, influences whether or not + * the `showDiff` flag should be included in the thrown + * AssertionErrors. `false` will always be `false`; `true` + * will be true when the assertion has requested a diff + * be shown. + * + * @param {Boolean} + * @api public + */ + + showDiff: true, + + /** + * ### config.truncateThreshold + * + * User configurable property, sets length threshold for actual and + * expected values in assertion errors. If this threshold is exceeded, for + * example for large data structures, the value is replaced with something + * like `[ Array(3) ]` or `{ Object (prop1, prop2) }`. + * + * Set it to zero if you want to disable truncating altogether. + * + * This is especially userful when doing assertions on arrays: having this + * set to a reasonable large value makes the failure messages readily + * inspectable. + * + * chai.config.truncateThreshold = 0; // disable truncating + * + * @param {Number} + * @api public + */ + + truncateThreshold: 40 + +}; + +},{}],5:[function(require,module,exports){ +/*! + * chai + * http://chaijs.com + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + */ + +module.exports = function (chai, _) { + var Assertion = chai.Assertion + , toString = Object.prototype.toString + , flag = _.flag; + + /** + * ### Language Chains + * + * The following are provided as chainable getters to + * improve the readability of your assertions. They + * do not provide testing capabilities unless they + * have been overwritten by a plugin. + * + * **Chains** + * + * - to + * - be + * - been + * - is + * - that + * - which + * - and + * - has + * - have + * - with + * - at + * - of + * - same + * + * @name language chains + * @namespace BDD + * @api public + */ + + [ 'to', 'be', 'been' + , 'is', 'and', 'has', 'have' + , 'with', 'that', 'which', 'at' + , 'of', 'same' ].forEach(function (chain) { + Assertion.addProperty(chain, function () { + return this; + }); + }); + + /** + * ### .not + * + * Negates any of assertions following in the chain. + * + * expect(foo).to.not.equal('bar'); + * expect(goodFn).to.not.throw(Error); + * expect({ foo: 'baz' }).to.have.property('foo') + * .and.not.equal('bar'); + * + * @name not + * @namespace BDD + * @api public + */ + + Assertion.addProperty('not', function () { + flag(this, 'negate', true); + }); + + /** + * ### .deep + * + * Sets the `deep` flag, later used by the `equal` and + * `property` assertions. + * + * expect(foo).to.deep.equal({ bar: 'baz' }); + * expect({ foo: { bar: { baz: 'quux' } } }) + * .to.have.deep.property('foo.bar.baz', 'quux'); + * + * `.deep.property` special characters can be escaped + * by adding two slashes before the `.` or `[]`. + * + * var deepCss = { '.link': { '[target]': 42 }}; + * expect(deepCss).to.have.deep.property('\\.link.\\[target\\]', 42); + * + * @name deep + * @namespace BDD + * @api public + */ + + Assertion.addProperty('deep', function () { + flag(this, 'deep', true); + }); + + /** + * ### .any + * + * Sets the `any` flag, (opposite of the `all` flag) + * later used in the `keys` assertion. + * + * expect(foo).to.have.any.keys('bar', 'baz'); + * + * @name any + * @namespace BDD + * @api public + */ + + Assertion.addProperty('any', function () { + flag(this, 'any', true); + flag(this, 'all', false) + }); + + + /** + * ### .all + * + * Sets the `all` flag (opposite of the `any` flag) + * later used by the `keys` assertion. + * + * expect(foo).to.have.all.keys('bar', 'baz'); + * + * @name all + * @namespace BDD + * @api public + */ + + Assertion.addProperty('all', function () { + flag(this, 'all', true); + flag(this, 'any', false); + }); + + /** + * ### .a(type) + * + * The `a` and `an` assertions are aliases that can be + * used either as language chains or to assert a value's + * type. + * + * // typeof + * expect('test').to.be.a('string'); + * expect({ foo: 'bar' }).to.be.an('object'); + * expect(null).to.be.a('null'); + * expect(undefined).to.be.an('undefined'); + * expect(new Error).to.be.an('error'); + * expect(new Promise).to.be.a('promise'); + * expect(new Float32Array()).to.be.a('float32array'); + * expect(Symbol()).to.be.a('symbol'); + * + * // es6 overrides + * expect({[Symbol.toStringTag]:()=>'foo'}).to.be.a('foo'); + * + * // language chain + * expect(foo).to.be.an.instanceof(Foo); + * + * @name a + * @alias an + * @param {String} type + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function an (type, msg) { + if (msg) flag(this, 'message', msg); + type = type.toLowerCase(); + var obj = flag(this, 'object') + , article = ~[ 'a', 'e', 'i', 'o', 'u' ].indexOf(type.charAt(0)) ? 'an ' : 'a '; + + this.assert( + type === _.type(obj) + , 'expected #{this} to be ' + article + type + , 'expected #{this} not to be ' + article + type + ); + } + + Assertion.addChainableMethod('an', an); + Assertion.addChainableMethod('a', an); + + /** + * ### .include(value) + * + * The `include` and `contain` assertions can be used as either property + * based language chains or as methods to assert the inclusion of an object + * in an array or a substring in a string. When used as language chains, + * they toggle the `contains` flag for the `keys` assertion. + * + * expect([1,2,3]).to.include(2); + * expect('foobar').to.contain('foo'); + * expect({ foo: 'bar', hello: 'universe' }).to.include.keys('foo'); + * + * @name include + * @alias contain + * @alias includes + * @alias contains + * @param {Object|String|Number} obj + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function includeChainingBehavior () { + flag(this, 'contains', true); + } + + function include (val, msg) { + _.expectTypes(this, ['array', 'object', 'string']); + + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + var expected = false; + + if (_.type(obj) === 'array' && _.type(val) === 'object') { + for (var i in obj) { + if (_.eql(obj[i], val)) { + expected = true; + break; + } + } + } else if (_.type(val) === 'object') { + if (!flag(this, 'negate')) { + for (var k in val) new Assertion(obj).property(k, val[k]); + return; + } + var subset = {}; + for (var k in val) subset[k] = obj[k]; + expected = _.eql(subset, val); + } else { + expected = (obj != undefined) && ~obj.indexOf(val); + } + this.assert( + expected + , 'expected #{this} to include ' + _.inspect(val) + , 'expected #{this} to not include ' + _.inspect(val)); + } + + Assertion.addChainableMethod('include', include, includeChainingBehavior); + Assertion.addChainableMethod('contain', include, includeChainingBehavior); + Assertion.addChainableMethod('contains', include, includeChainingBehavior); + Assertion.addChainableMethod('includes', include, includeChainingBehavior); + + /** + * ### .ok + * + * Asserts that the target is truthy. + * + * expect('everything').to.be.ok; + * expect(1).to.be.ok; + * expect(false).to.not.be.ok; + * expect(undefined).to.not.be.ok; + * expect(null).to.not.be.ok; + * + * @name ok + * @namespace BDD + * @api public + */ + + Assertion.addProperty('ok', function () { + this.assert( + flag(this, 'object') + , 'expected #{this} to be truthy' + , 'expected #{this} to be falsy'); + }); + + /** + * ### .true + * + * Asserts that the target is `true`. + * + * expect(true).to.be.true; + * expect(1).to.not.be.true; + * + * @name true + * @namespace BDD + * @api public + */ + + Assertion.addProperty('true', function () { + this.assert( + true === flag(this, 'object') + , 'expected #{this} to be true' + , 'expected #{this} to be false' + , this.negate ? false : true + ); + }); + + /** + * ### .false + * + * Asserts that the target is `false`. + * + * expect(false).to.be.false; + * expect(0).to.not.be.false; + * + * @name false + * @namespace BDD + * @api public + */ + + Assertion.addProperty('false', function () { + this.assert( + false === flag(this, 'object') + , 'expected #{this} to be false' + , 'expected #{this} to be true' + , this.negate ? true : false + ); + }); + + /** + * ### .null + * + * Asserts that the target is `null`. + * + * expect(null).to.be.null; + * expect(undefined).to.not.be.null; + * + * @name null + * @namespace BDD + * @api public + */ + + Assertion.addProperty('null', function () { + this.assert( + null === flag(this, 'object') + , 'expected #{this} to be null' + , 'expected #{this} not to be null' + ); + }); + + /** + * ### .undefined + * + * Asserts that the target is `undefined`. + * + * expect(undefined).to.be.undefined; + * expect(null).to.not.be.undefined; + * + * @name undefined + * @namespace BDD + * @api public + */ + + Assertion.addProperty('undefined', function () { + this.assert( + undefined === flag(this, 'object') + , 'expected #{this} to be undefined' + , 'expected #{this} not to be undefined' + ); + }); + + /** + * ### .NaN + * Asserts that the target is `NaN`. + * + * expect('foo').to.be.NaN; + * expect(4).not.to.be.NaN; + * + * @name NaN + * @namespace BDD + * @api public + */ + + Assertion.addProperty('NaN', function () { + this.assert( + isNaN(flag(this, 'object')) + , 'expected #{this} to be NaN' + , 'expected #{this} not to be NaN' + ); + }); + + /** + * ### .exist + * + * Asserts that the target is neither `null` nor `undefined`. + * + * var foo = 'hi' + * , bar = null + * , baz; + * + * expect(foo).to.exist; + * expect(bar).to.not.exist; + * expect(baz).to.not.exist; + * + * @name exist + * @namespace BDD + * @api public + */ + + Assertion.addProperty('exist', function () { + this.assert( + null != flag(this, 'object') + , 'expected #{this} to exist' + , 'expected #{this} to not exist' + ); + }); + + + /** + * ### .empty + * + * Asserts that the target's length is `0`. For arrays and strings, it checks + * the `length` property. For objects, it gets the count of + * enumerable keys. + * + * expect([]).to.be.empty; + * expect('').to.be.empty; + * expect({}).to.be.empty; + * + * @name empty + * @namespace BDD + * @api public + */ + + Assertion.addProperty('empty', function () { + var obj = flag(this, 'object') + , expected = obj; + + if (Array.isArray(obj) || 'string' === typeof object) { + expected = obj.length; + } else if (typeof obj === 'object') { + expected = Object.keys(obj).length; + } + + this.assert( + !expected + , 'expected #{this} to be empty' + , 'expected #{this} not to be empty' + ); + }); + + /** + * ### .arguments + * + * Asserts that the target is an arguments object. + * + * function test () { + * expect(arguments).to.be.arguments; + * } + * + * @name arguments + * @alias Arguments + * @namespace BDD + * @api public + */ + + function checkArguments () { + var obj = flag(this, 'object') + , type = Object.prototype.toString.call(obj); + this.assert( + '[object Arguments]' === type + , 'expected #{this} to be arguments but got ' + type + , 'expected #{this} to not be arguments' + ); + } + + Assertion.addProperty('arguments', checkArguments); + Assertion.addProperty('Arguments', checkArguments); + + /** + * ### .equal(value) + * + * Asserts that the target is strictly equal (`===`) to `value`. + * Alternately, if the `deep` flag is set, asserts that + * the target is deeply equal to `value`. + * + * expect('hello').to.equal('hello'); + * expect(42).to.equal(42); + * expect(1).to.not.equal(true); + * expect({ foo: 'bar' }).to.not.equal({ foo: 'bar' }); + * expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' }); + * + * @name equal + * @alias equals + * @alias eq + * @alias deep.equal + * @param {Mixed} value + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertEqual (val, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + if (flag(this, 'deep')) { + return this.eql(val); + } else { + this.assert( + val === obj + , 'expected #{this} to equal #{exp}' + , 'expected #{this} to not equal #{exp}' + , val + , this._obj + , true + ); + } + } + + Assertion.addMethod('equal', assertEqual); + Assertion.addMethod('equals', assertEqual); + Assertion.addMethod('eq', assertEqual); + + /** + * ### .eql(value) + * + * Asserts that the target is deeply equal to `value`. + * + * expect({ foo: 'bar' }).to.eql({ foo: 'bar' }); + * expect([ 1, 2, 3 ]).to.eql([ 1, 2, 3 ]); + * + * @name eql + * @alias eqls + * @param {Mixed} value + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertEql(obj, msg) { + if (msg) flag(this, 'message', msg); + this.assert( + _.eql(obj, flag(this, 'object')) + , 'expected #{this} to deeply equal #{exp}' + , 'expected #{this} to not deeply equal #{exp}' + , obj + , this._obj + , true + ); + } + + Assertion.addMethod('eql', assertEql); + Assertion.addMethod('eqls', assertEql); + + /** + * ### .above(value) + * + * Asserts that the target is greater than `value`. + * + * expect(10).to.be.above(5); + * + * Can also be used in conjunction with `length` to + * assert a minimum length. The benefit being a + * more informative error message than if the length + * was supplied directly. + * + * expect('foo').to.have.length.above(2); + * expect([ 1, 2, 3 ]).to.have.length.above(2); + * + * @name above + * @alias gt + * @alias greaterThan + * @param {Number} value + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertAbove (n, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + if (flag(this, 'doLength')) { + new Assertion(obj, msg).to.have.property('length'); + var len = obj.length; + this.assert( + len > n + , 'expected #{this} to have a length above #{exp} but got #{act}' + , 'expected #{this} to not have a length above #{exp}' + , n + , len + ); + } else { + this.assert( + obj > n + , 'expected #{this} to be above ' + n + , 'expected #{this} to be at most ' + n + ); + } + } + + Assertion.addMethod('above', assertAbove); + Assertion.addMethod('gt', assertAbove); + Assertion.addMethod('greaterThan', assertAbove); + + /** + * ### .least(value) + * + * Asserts that the target is greater than or equal to `value`. + * + * expect(10).to.be.at.least(10); + * + * Can also be used in conjunction with `length` to + * assert a minimum length. The benefit being a + * more informative error message than if the length + * was supplied directly. + * + * expect('foo').to.have.length.of.at.least(2); + * expect([ 1, 2, 3 ]).to.have.length.of.at.least(3); + * + * @name least + * @alias gte + * @param {Number} value + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertLeast (n, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + if (flag(this, 'doLength')) { + new Assertion(obj, msg).to.have.property('length'); + var len = obj.length; + this.assert( + len >= n + , 'expected #{this} to have a length at least #{exp} but got #{act}' + , 'expected #{this} to have a length below #{exp}' + , n + , len + ); + } else { + this.assert( + obj >= n + , 'expected #{this} to be at least ' + n + , 'expected #{this} to be below ' + n + ); + } + } + + Assertion.addMethod('least', assertLeast); + Assertion.addMethod('gte', assertLeast); + + /** + * ### .below(value) + * + * Asserts that the target is less than `value`. + * + * expect(5).to.be.below(10); + * + * Can also be used in conjunction with `length` to + * assert a maximum length. The benefit being a + * more informative error message than if the length + * was supplied directly. + * + * expect('foo').to.have.length.below(4); + * expect([ 1, 2, 3 ]).to.have.length.below(4); + * + * @name below + * @alias lt + * @alias lessThan + * @param {Number} value + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertBelow (n, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + if (flag(this, 'doLength')) { + new Assertion(obj, msg).to.have.property('length'); + var len = obj.length; + this.assert( + len < n + , 'expected #{this} to have a length below #{exp} but got #{act}' + , 'expected #{this} to not have a length below #{exp}' + , n + , len + ); + } else { + this.assert( + obj < n + , 'expected #{this} to be below ' + n + , 'expected #{this} to be at least ' + n + ); + } + } + + Assertion.addMethod('below', assertBelow); + Assertion.addMethod('lt', assertBelow); + Assertion.addMethod('lessThan', assertBelow); + + /** + * ### .most(value) + * + * Asserts that the target is less than or equal to `value`. + * + * expect(5).to.be.at.most(5); + * + * Can also be used in conjunction with `length` to + * assert a maximum length. The benefit being a + * more informative error message than if the length + * was supplied directly. + * + * expect('foo').to.have.length.of.at.most(4); + * expect([ 1, 2, 3 ]).to.have.length.of.at.most(3); + * + * @name most + * @alias lte + * @param {Number} value + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertMost (n, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + if (flag(this, 'doLength')) { + new Assertion(obj, msg).to.have.property('length'); + var len = obj.length; + this.assert( + len <= n + , 'expected #{this} to have a length at most #{exp} but got #{act}' + , 'expected #{this} to have a length above #{exp}' + , n + , len + ); + } else { + this.assert( + obj <= n + , 'expected #{this} to be at most ' + n + , 'expected #{this} to be above ' + n + ); + } + } + + Assertion.addMethod('most', assertMost); + Assertion.addMethod('lte', assertMost); + + /** + * ### .within(start, finish) + * + * Asserts that the target is within a range. + * + * expect(7).to.be.within(5,10); + * + * Can also be used in conjunction with `length` to + * assert a length range. The benefit being a + * more informative error message than if the length + * was supplied directly. + * + * expect('foo').to.have.length.within(2,4); + * expect([ 1, 2, 3 ]).to.have.length.within(2,4); + * + * @name within + * @param {Number} start lowerbound inclusive + * @param {Number} finish upperbound inclusive + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + Assertion.addMethod('within', function (start, finish, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object') + , range = start + '..' + finish; + if (flag(this, 'doLength')) { + new Assertion(obj, msg).to.have.property('length'); + var len = obj.length; + this.assert( + len >= start && len <= finish + , 'expected #{this} to have a length within ' + range + , 'expected #{this} to not have a length within ' + range + ); + } else { + this.assert( + obj >= start && obj <= finish + , 'expected #{this} to be within ' + range + , 'expected #{this} to not be within ' + range + ); + } + }); + + /** + * ### .instanceof(constructor) + * + * Asserts that the target is an instance of `constructor`. + * + * var Tea = function (name) { this.name = name; } + * , Chai = new Tea('chai'); + * + * expect(Chai).to.be.an.instanceof(Tea); + * expect([ 1, 2, 3 ]).to.be.instanceof(Array); + * + * @name instanceof + * @param {Constructor} constructor + * @param {String} message _optional_ + * @alias instanceOf + * @namespace BDD + * @api public + */ + + function assertInstanceOf (constructor, msg) { + if (msg) flag(this, 'message', msg); + var name = _.getName(constructor); + this.assert( + flag(this, 'object') instanceof constructor + , 'expected #{this} to be an instance of ' + name + , 'expected #{this} to not be an instance of ' + name + ); + }; + + Assertion.addMethod('instanceof', assertInstanceOf); + Assertion.addMethod('instanceOf', assertInstanceOf); + + /** + * ### .property(name, [value]) + * + * Asserts that the target has a property `name`, optionally asserting that + * the value of that property is strictly equal to `value`. + * If the `deep` flag is set, you can use dot- and bracket-notation for deep + * references into objects and arrays. + * + * // simple referencing + * var obj = { foo: 'bar' }; + * expect(obj).to.have.property('foo'); + * expect(obj).to.have.property('foo', 'bar'); + * + * // deep referencing + * var deepObj = { + * green: { tea: 'matcha' } + * , teas: [ 'chai', 'matcha', { tea: 'konacha' } ] + * }; + * + * expect(deepObj).to.have.deep.property('green.tea', 'matcha'); + * expect(deepObj).to.have.deep.property('teas[1]', 'matcha'); + * expect(deepObj).to.have.deep.property('teas[2].tea', 'konacha'); + * + * You can also use an array as the starting point of a `deep.property` + * assertion, or traverse nested arrays. + * + * var arr = [ + * [ 'chai', 'matcha', 'konacha' ] + * , [ { tea: 'chai' } + * , { tea: 'matcha' } + * , { tea: 'konacha' } ] + * ]; + * + * expect(arr).to.have.deep.property('[0][1]', 'matcha'); + * expect(arr).to.have.deep.property('[1][2].tea', 'konacha'); + * + * Furthermore, `property` changes the subject of the assertion + * to be the value of that property from the original object. This + * permits for further chainable assertions on that property. + * + * expect(obj).to.have.property('foo') + * .that.is.a('string'); + * expect(deepObj).to.have.property('green') + * .that.is.an('object') + * .that.deep.equals({ tea: 'matcha' }); + * expect(deepObj).to.have.property('teas') + * .that.is.an('array') + * .with.deep.property('[2]') + * .that.deep.equals({ tea: 'konacha' }); + * + * Note that dots and bracket in `name` must be backslash-escaped when + * the `deep` flag is set, while they must NOT be escaped when the `deep` + * flag is not set. + * + * // simple referencing + * var css = { '.link[target]': 42 }; + * expect(css).to.have.property('.link[target]', 42); + * + * // deep referencing + * var deepCss = { '.link': { '[target]': 42 }}; + * expect(deepCss).to.have.deep.property('\\.link.\\[target\\]', 42); + * + * @name property + * @alias deep.property + * @param {String} name + * @param {Mixed} value (optional) + * @param {String} message _optional_ + * @returns value of property for chaining + * @namespace BDD + * @api public + */ + + Assertion.addMethod('property', function (name, val, msg) { + if (msg) flag(this, 'message', msg); + + var isDeep = !!flag(this, 'deep') + , descriptor = isDeep ? 'deep property ' : 'property ' + , negate = flag(this, 'negate') + , obj = flag(this, 'object') + , pathInfo = isDeep ? _.getPathInfo(name, obj) : null + , hasProperty = isDeep + ? pathInfo.exists + : _.hasProperty(name, obj) + , value = isDeep + ? pathInfo.value + : obj[name]; + + if (negate && arguments.length > 1) { + if (undefined === value) { + msg = (msg != null) ? msg + ': ' : ''; + throw new Error(msg + _.inspect(obj) + ' has no ' + descriptor + _.inspect(name)); + } + } else { + this.assert( + hasProperty + , 'expected #{this} to have a ' + descriptor + _.inspect(name) + , 'expected #{this} to not have ' + descriptor + _.inspect(name)); + } + + if (arguments.length > 1) { + this.assert( + val === value + , 'expected #{this} to have a ' + descriptor + _.inspect(name) + ' of #{exp}, but got #{act}' + , 'expected #{this} to not have a ' + descriptor + _.inspect(name) + ' of #{act}' + , val + , value + ); + } + + flag(this, 'object', value); + }); + + + /** + * ### .ownProperty(name) + * + * Asserts that the target has an own property `name`. + * + * expect('test').to.have.ownProperty('length'); + * + * @name ownProperty + * @alias haveOwnProperty + * @param {String} name + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertOwnProperty (name, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + this.assert( + obj.hasOwnProperty(name) + , 'expected #{this} to have own property ' + _.inspect(name) + , 'expected #{this} to not have own property ' + _.inspect(name) + ); + } + + Assertion.addMethod('ownProperty', assertOwnProperty); + Assertion.addMethod('haveOwnProperty', assertOwnProperty); + + /** + * ### .ownPropertyDescriptor(name[, descriptor[, message]]) + * + * Asserts that the target has an own property descriptor `name`, that optionally matches `descriptor`. + * + * expect('test').to.have.ownPropertyDescriptor('length'); + * expect('test').to.have.ownPropertyDescriptor('length', { enumerable: false, configurable: false, writable: false, value: 4 }); + * expect('test').not.to.have.ownPropertyDescriptor('length', { enumerable: false, configurable: false, writable: false, value: 3 }); + * expect('test').ownPropertyDescriptor('length').to.have.property('enumerable', false); + * expect('test').ownPropertyDescriptor('length').to.have.keys('value'); + * + * @name ownPropertyDescriptor + * @alias haveOwnPropertyDescriptor + * @param {String} name + * @param {Object} descriptor _optional_ + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertOwnPropertyDescriptor (name, descriptor, msg) { + if (typeof descriptor === 'string') { + msg = descriptor; + descriptor = null; + } + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + var actualDescriptor = Object.getOwnPropertyDescriptor(Object(obj), name); + if (actualDescriptor && descriptor) { + this.assert( + _.eql(descriptor, actualDescriptor) + , 'expected the own property descriptor for ' + _.inspect(name) + ' on #{this} to match ' + _.inspect(descriptor) + ', got ' + _.inspect(actualDescriptor) + , 'expected the own property descriptor for ' + _.inspect(name) + ' on #{this} to not match ' + _.inspect(descriptor) + , descriptor + , actualDescriptor + , true + ); + } else { + this.assert( + actualDescriptor + , 'expected #{this} to have an own property descriptor for ' + _.inspect(name) + , 'expected #{this} to not have an own property descriptor for ' + _.inspect(name) + ); + } + flag(this, 'object', actualDescriptor); + } + + Assertion.addMethod('ownPropertyDescriptor', assertOwnPropertyDescriptor); + Assertion.addMethod('haveOwnPropertyDescriptor', assertOwnPropertyDescriptor); + + /** + * ### .length + * + * Sets the `doLength` flag later used as a chain precursor to a value + * comparison for the `length` property. + * + * expect('foo').to.have.length.above(2); + * expect([ 1, 2, 3 ]).to.have.length.above(2); + * expect('foo').to.have.length.below(4); + * expect([ 1, 2, 3 ]).to.have.length.below(4); + * expect('foo').to.have.length.within(2,4); + * expect([ 1, 2, 3 ]).to.have.length.within(2,4); + * + * *Deprecation notice:* Using `length` as an assertion will be deprecated + * in version 2.4.0 and removed in 3.0.0. Code using the old style of + * asserting for `length` property value using `length(value)` should be + * switched to use `lengthOf(value)` instead. + * + * @name length + * @namespace BDD + * @api public + */ + + /** + * ### .lengthOf(value[, message]) + * + * Asserts that the target's `length` property has + * the expected value. + * + * expect([ 1, 2, 3]).to.have.lengthOf(3); + * expect('foobar').to.have.lengthOf(6); + * + * @name lengthOf + * @param {Number} length + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertLengthChain () { + flag(this, 'doLength', true); + } + + function assertLength (n, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + new Assertion(obj, msg).to.have.property('length'); + var len = obj.length; + + this.assert( + len == n + , 'expected #{this} to have a length of #{exp} but got #{act}' + , 'expected #{this} to not have a length of #{act}' + , n + , len + ); + } + + Assertion.addChainableMethod('length', assertLength, assertLengthChain); + Assertion.addMethod('lengthOf', assertLength); + + /** + * ### .match(regexp) + * + * Asserts that the target matches a regular expression. + * + * expect('foobar').to.match(/^foo/); + * + * @name match + * @alias matches + * @param {RegExp} RegularExpression + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + function assertMatch(re, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + this.assert( + re.exec(obj) + , 'expected #{this} to match ' + re + , 'expected #{this} not to match ' + re + ); + } + + Assertion.addMethod('match', assertMatch); + Assertion.addMethod('matches', assertMatch); + + /** + * ### .string(string) + * + * Asserts that the string target contains another string. + * + * expect('foobar').to.have.string('bar'); + * + * @name string + * @param {String} string + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + Assertion.addMethod('string', function (str, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + new Assertion(obj, msg).is.a('string'); + + this.assert( + ~obj.indexOf(str) + , 'expected #{this} to contain ' + _.inspect(str) + , 'expected #{this} to not contain ' + _.inspect(str) + ); + }); + + + /** + * ### .keys(key1, [key2], [...]) + * + * Asserts that the target contains any or all of the passed-in keys. + * Use in combination with `any`, `all`, `contains`, or `have` will affect + * what will pass. + * + * When used in conjunction with `any`, at least one key that is passed + * in must exist in the target object. This is regardless whether or not + * the `have` or `contain` qualifiers are used. Note, either `any` or `all` + * should be used in the assertion. If neither are used, the assertion is + * defaulted to `all`. + * + * When both `all` and `contain` are used, the target object must have at + * least all of the passed-in keys but may have more keys not listed. + * + * When both `all` and `have` are used, the target object must both contain + * all of the passed-in keys AND the number of keys in the target object must + * match the number of keys passed in (in other words, a target object must + * have all and only all of the passed-in keys). + * + * expect({ foo: 1, bar: 2 }).to.have.any.keys('foo', 'baz'); + * expect({ foo: 1, bar: 2 }).to.have.any.keys('foo'); + * expect({ foo: 1, bar: 2 }).to.contain.any.keys('bar', 'baz'); + * expect({ foo: 1, bar: 2 }).to.contain.any.keys(['foo']); + * expect({ foo: 1, bar: 2 }).to.contain.any.keys({'foo': 6}); + * expect({ foo: 1, bar: 2 }).to.have.all.keys(['bar', 'foo']); + * expect({ foo: 1, bar: 2 }).to.have.all.keys({'bar': 6, 'foo': 7}); + * expect({ foo: 1, bar: 2, baz: 3 }).to.contain.all.keys(['bar', 'foo']); + * expect({ foo: 1, bar: 2, baz: 3 }).to.contain.all.keys({'bar': 6}); + * + * + * @name keys + * @alias key + * @param {...String|Array|Object} keys + * @namespace BDD + * @api public + */ + + function assertKeys (keys) { + var obj = flag(this, 'object') + , str + , ok = true + , mixedArgsMsg = 'keys must be given single argument of Array|Object|String, or multiple String arguments'; + + switch (_.type(keys)) { + case "array": + if (arguments.length > 1) throw (new Error(mixedArgsMsg)); + break; + case "object": + if (arguments.length > 1) throw (new Error(mixedArgsMsg)); + keys = Object.keys(keys); + break; + default: + keys = Array.prototype.slice.call(arguments); + } + + if (!keys.length) throw new Error('keys required'); + + var actual = Object.keys(obj) + , expected = keys + , len = keys.length + , any = flag(this, 'any') + , all = flag(this, 'all'); + + if (!any && !all) { + all = true; + } + + // Has any + if (any) { + var intersection = expected.filter(function(key) { + return ~actual.indexOf(key); + }); + ok = intersection.length > 0; + } + + // Has all + if (all) { + ok = keys.every(function(key){ + return ~actual.indexOf(key); + }); + if (!flag(this, 'negate') && !flag(this, 'contains')) { + ok = ok && keys.length == actual.length; + } + } + + // Key string + if (len > 1) { + keys = keys.map(function(key){ + return _.inspect(key); + }); + var last = keys.pop(); + if (all) { + str = keys.join(', ') + ', and ' + last; + } + if (any) { + str = keys.join(', ') + ', or ' + last; + } + } else { + str = _.inspect(keys[0]); + } + + // Form + str = (len > 1 ? 'keys ' : 'key ') + str; + + // Have / include + str = (flag(this, 'contains') ? 'contain ' : 'have ') + str; + + // Assertion + this.assert( + ok + , 'expected #{this} to ' + str + , 'expected #{this} to not ' + str + , expected.slice(0).sort() + , actual.sort() + , true + ); + } + + Assertion.addMethod('keys', assertKeys); + Assertion.addMethod('key', assertKeys); + + /** + * ### .throw(constructor) + * + * Asserts that the function target will throw a specific error, or specific type of error + * (as determined using `instanceof`), optionally with a RegExp or string inclusion test + * for the error's message. + * + * var err = new ReferenceError('This is a bad function.'); + * var fn = function () { throw err; } + * expect(fn).to.throw(ReferenceError); + * expect(fn).to.throw(Error); + * expect(fn).to.throw(/bad function/); + * expect(fn).to.not.throw('good function'); + * expect(fn).to.throw(ReferenceError, /bad function/); + * expect(fn).to.throw(err); + * + * Please note that when a throw expectation is negated, it will check each + * parameter independently, starting with error constructor type. The appropriate way + * to check for the existence of a type of error but for a message that does not match + * is to use `and`. + * + * expect(fn).to.throw(ReferenceError) + * .and.not.throw(/good function/); + * + * @name throw + * @alias throws + * @alias Throw + * @param {ErrorConstructor} constructor + * @param {String|RegExp} expected error message + * @param {String} message _optional_ + * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types + * @returns error for chaining (null if no error) + * @namespace BDD + * @api public + */ + + function assertThrows (constructor, errMsg, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + new Assertion(obj, msg).is.a('function'); + + var thrown = false + , desiredError = null + , name = null + , thrownError = null; + + if (arguments.length === 0) { + errMsg = null; + constructor = null; + } else if (constructor && (constructor instanceof RegExp || 'string' === typeof constructor)) { + errMsg = constructor; + constructor = null; + } else if (constructor && constructor instanceof Error) { + desiredError = constructor; + constructor = null; + errMsg = null; + } else if (typeof constructor === 'function') { + name = constructor.prototype.name; + if (!name || (name === 'Error' && constructor !== Error)) { + name = constructor.name || (new constructor()).name; + } + } else { + constructor = null; + } + + try { + obj(); + } catch (err) { + // first, check desired error + if (desiredError) { + this.assert( + err === desiredError + , 'expected #{this} to throw #{exp} but #{act} was thrown' + , 'expected #{this} to not throw #{exp}' + , (desiredError instanceof Error ? desiredError.toString() : desiredError) + , (err instanceof Error ? err.toString() : err) + ); + + flag(this, 'object', err); + return this; + } + + // next, check constructor + if (constructor) { + this.assert( + err instanceof constructor + , 'expected #{this} to throw #{exp} but #{act} was thrown' + , 'expected #{this} to not throw #{exp} but #{act} was thrown' + , name + , (err instanceof Error ? err.toString() : err) + ); + + if (!errMsg) { + flag(this, 'object', err); + return this; + } + } + + // next, check message + var message = 'error' === _.type(err) && "message" in err + ? err.message + : '' + err; + + if ((message != null) && errMsg && errMsg instanceof RegExp) { + this.assert( + errMsg.exec(message) + , 'expected #{this} to throw error matching #{exp} but got #{act}' + , 'expected #{this} to throw error not matching #{exp}' + , errMsg + , message + ); + + flag(this, 'object', err); + return this; + } else if ((message != null) && errMsg && 'string' === typeof errMsg) { + this.assert( + ~message.indexOf(errMsg) + , 'expected #{this} to throw error including #{exp} but got #{act}' + , 'expected #{this} to throw error not including #{act}' + , errMsg + , message + ); + + flag(this, 'object', err); + return this; + } else { + thrown = true; + thrownError = err; + } + } + + var actuallyGot = '' + , expectedThrown = name !== null + ? name + : desiredError + ? '#{exp}' //_.inspect(desiredError) + : 'an error'; + + if (thrown) { + actuallyGot = ' but #{act} was thrown' + } + + this.assert( + thrown === true + , 'expected #{this} to throw ' + expectedThrown + actuallyGot + , 'expected #{this} to not throw ' + expectedThrown + actuallyGot + , (desiredError instanceof Error ? desiredError.toString() : desiredError) + , (thrownError instanceof Error ? thrownError.toString() : thrownError) + ); + + flag(this, 'object', thrownError); + }; + + Assertion.addMethod('throw', assertThrows); + Assertion.addMethod('throws', assertThrows); + Assertion.addMethod('Throw', assertThrows); + + /** + * ### .respondTo(method) + * + * Asserts that the object or class target will respond to a method. + * + * Klass.prototype.bar = function(){}; + * expect(Klass).to.respondTo('bar'); + * expect(obj).to.respondTo('bar'); + * + * To check if a constructor will respond to a static function, + * set the `itself` flag. + * + * Klass.baz = function(){}; + * expect(Klass).itself.to.respondTo('baz'); + * + * @name respondTo + * @alias respondsTo + * @param {String} method + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function respondTo (method, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object') + , itself = flag(this, 'itself') + , context = ('function' === _.type(obj) && !itself) + ? obj.prototype[method] + : obj[method]; + + this.assert( + 'function' === typeof context + , 'expected #{this} to respond to ' + _.inspect(method) + , 'expected #{this} to not respond to ' + _.inspect(method) + ); + } + + Assertion.addMethod('respondTo', respondTo); + Assertion.addMethod('respondsTo', respondTo); + + /** + * ### .itself + * + * Sets the `itself` flag, later used by the `respondTo` assertion. + * + * function Foo() {} + * Foo.bar = function() {} + * Foo.prototype.baz = function() {} + * + * expect(Foo).itself.to.respondTo('bar'); + * expect(Foo).itself.not.to.respondTo('baz'); + * + * @name itself + * @namespace BDD + * @api public + */ + + Assertion.addProperty('itself', function () { + flag(this, 'itself', true); + }); + + /** + * ### .satisfy(method) + * + * Asserts that the target passes a given truth test. + * + * expect(1).to.satisfy(function(num) { return num > 0; }); + * + * @name satisfy + * @alias satisfies + * @param {Function} matcher + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function satisfy (matcher, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + var result = matcher(obj); + this.assert( + result + , 'expected #{this} to satisfy ' + _.objDisplay(matcher) + , 'expected #{this} to not satisfy' + _.objDisplay(matcher) + , this.negate ? false : true + , result + ); + } + + Assertion.addMethod('satisfy', satisfy); + Assertion.addMethod('satisfies', satisfy); + + /** + * ### .closeTo(expected, delta) + * + * Asserts that the target is equal `expected`, to within a +/- `delta` range. + * + * expect(1.5).to.be.closeTo(1, 0.5); + * + * @name closeTo + * @alias approximately + * @param {Number} expected + * @param {Number} delta + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function closeTo(expected, delta, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + + new Assertion(obj, msg).is.a('number'); + if (_.type(expected) !== 'number' || _.type(delta) !== 'number') { + throw new Error('the arguments to closeTo or approximately must be numbers'); + } + + this.assert( + Math.abs(obj - expected) <= delta + , 'expected #{this} to be close to ' + expected + ' +/- ' + delta + , 'expected #{this} not to be close to ' + expected + ' +/- ' + delta + ); + } + + Assertion.addMethod('closeTo', closeTo); + Assertion.addMethod('approximately', closeTo); + + function isSubsetOf(subset, superset, cmp) { + return subset.every(function(elem) { + if (!cmp) return superset.indexOf(elem) !== -1; + + return superset.some(function(elem2) { + return cmp(elem, elem2); + }); + }) + } + + /** + * ### .members(set) + * + * Asserts that the target is a superset of `set`, + * or that the target and `set` have the same strictly-equal (===) members. + * Alternately, if the `deep` flag is set, set members are compared for deep + * equality. + * + * expect([1, 2, 3]).to.include.members([3, 2]); + * expect([1, 2, 3]).to.not.include.members([3, 2, 8]); + * + * expect([4, 2]).to.have.members([2, 4]); + * expect([5, 2]).to.not.have.members([5, 2, 1]); + * + * expect([{ id: 1 }]).to.deep.include.members([{ id: 1 }]); + * + * @name members + * @param {Array} set + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + Assertion.addMethod('members', function (subset, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + + new Assertion(obj).to.be.an('array'); + new Assertion(subset).to.be.an('array'); + + var cmp = flag(this, 'deep') ? _.eql : undefined; + + if (flag(this, 'contains')) { + return this.assert( + isSubsetOf(subset, obj, cmp) + , 'expected #{this} to be a superset of #{act}' + , 'expected #{this} to not be a superset of #{act}' + , obj + , subset + ); + } + + this.assert( + isSubsetOf(obj, subset, cmp) && isSubsetOf(subset, obj, cmp) + , 'expected #{this} to have the same members as #{act}' + , 'expected #{this} to not have the same members as #{act}' + , obj + , subset + ); + }); + + /** + * ### .oneOf(list) + * + * Assert that a value appears somewhere in the top level of array `list`. + * + * expect('a').to.be.oneOf(['a', 'b', 'c']); + * expect(9).to.not.be.oneOf(['z']); + * expect([3]).to.not.be.oneOf([1, 2, [3]]); + * + * var three = [3]; + * // for object-types, contents are not compared + * expect(three).to.not.be.oneOf([1, 2, [3]]); + * // comparing references works + * expect(three).to.be.oneOf([1, 2, three]); + * + * @name oneOf + * @param {Array<*>} list + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function oneOf (list, msg) { + if (msg) flag(this, 'message', msg); + var expected = flag(this, 'object'); + new Assertion(list).to.be.an('array'); + + this.assert( + list.indexOf(expected) > -1 + , 'expected #{this} to be one of #{exp}' + , 'expected #{this} to not be one of #{exp}' + , list + , expected + ); + } + + Assertion.addMethod('oneOf', oneOf); + + + /** + * ### .change(function) + * + * Asserts that a function changes an object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val += 3 }; + * var noChangeFn = function() { return 'foo' + 'bar'; } + * expect(fn).to.change(obj, 'val'); + * expect(noChangeFn).to.not.change(obj, 'val') + * + * @name change + * @alias changes + * @alias Change + * @param {String} object + * @param {String} property name + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertChanges (object, prop, msg) { + if (msg) flag(this, 'message', msg); + var fn = flag(this, 'object'); + new Assertion(object, msg).to.have.property(prop); + new Assertion(fn).is.a('function'); + + var initial = object[prop]; + fn(); + + this.assert( + initial !== object[prop] + , 'expected .' + prop + ' to change' + , 'expected .' + prop + ' to not change' + ); + } + + Assertion.addChainableMethod('change', assertChanges); + Assertion.addChainableMethod('changes', assertChanges); + + /** + * ### .increase(function) + * + * Asserts that a function increases an object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 15 }; + * expect(fn).to.increase(obj, 'val'); + * + * @name increase + * @alias increases + * @alias Increase + * @param {String} object + * @param {String} property name + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertIncreases (object, prop, msg) { + if (msg) flag(this, 'message', msg); + var fn = flag(this, 'object'); + new Assertion(object, msg).to.have.property(prop); + new Assertion(fn).is.a('function'); + + var initial = object[prop]; + fn(); + + this.assert( + object[prop] - initial > 0 + , 'expected .' + prop + ' to increase' + , 'expected .' + prop + ' to not increase' + ); + } + + Assertion.addChainableMethod('increase', assertIncreases); + Assertion.addChainableMethod('increases', assertIncreases); + + /** + * ### .decrease(function) + * + * Asserts that a function decreases an object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 5 }; + * expect(fn).to.decrease(obj, 'val'); + * + * @name decrease + * @alias decreases + * @alias Decrease + * @param {String} object + * @param {String} property name + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertDecreases (object, prop, msg) { + if (msg) flag(this, 'message', msg); + var fn = flag(this, 'object'); + new Assertion(object, msg).to.have.property(prop); + new Assertion(fn).is.a('function'); + + var initial = object[prop]; + fn(); + + this.assert( + object[prop] - initial < 0 + , 'expected .' + prop + ' to decrease' + , 'expected .' + prop + ' to not decrease' + ); + } + + Assertion.addChainableMethod('decrease', assertDecreases); + Assertion.addChainableMethod('decreases', assertDecreases); + + /** + * ### .extensible + * + * Asserts that the target is extensible (can have new properties added to + * it). + * + * var nonExtensibleObject = Object.preventExtensions({}); + * var sealedObject = Object.seal({}); + * var frozenObject = Object.freeze({}); + * + * expect({}).to.be.extensible; + * expect(nonExtensibleObject).to.not.be.extensible; + * expect(sealedObject).to.not.be.extensible; + * expect(frozenObject).to.not.be.extensible; + * + * @name extensible + * @namespace BDD + * @api public + */ + + Assertion.addProperty('extensible', function() { + var obj = flag(this, 'object'); + + // In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError. + // In ES6, a non-object argument will be treated as if it was a non-extensible ordinary object, simply return false. + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible + // The following provides ES6 behavior when a TypeError is thrown under ES5. + + var isExtensible; + + try { + isExtensible = Object.isExtensible(obj); + } catch (err) { + if (err instanceof TypeError) isExtensible = false; + else throw err; + } + + this.assert( + isExtensible + , 'expected #{this} to be extensible' + , 'expected #{this} to not be extensible' + ); + }); + + /** + * ### .sealed + * + * Asserts that the target is sealed (cannot have new properties added to it + * and its existing properties cannot be removed). + * + * var sealedObject = Object.seal({}); + * var frozenObject = Object.freeze({}); + * + * expect(sealedObject).to.be.sealed; + * expect(frozenObject).to.be.sealed; + * expect({}).to.not.be.sealed; + * + * @name sealed + * @namespace BDD + * @api public + */ + + Assertion.addProperty('sealed', function() { + var obj = flag(this, 'object'); + + // In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError. + // In ES6, a non-object argument will be treated as if it was a sealed ordinary object, simply return true. + // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed + // The following provides ES6 behavior when a TypeError is thrown under ES5. + + var isSealed; + + try { + isSealed = Object.isSealed(obj); + } catch (err) { + if (err instanceof TypeError) isSealed = true; + else throw err; + } + + this.assert( + isSealed + , 'expected #{this} to be sealed' + , 'expected #{this} to not be sealed' + ); + }); + + /** + * ### .frozen + * + * Asserts that the target is frozen (cannot have new properties added to it + * and its existing properties cannot be modified). + * + * var frozenObject = Object.freeze({}); + * + * expect(frozenObject).to.be.frozen; + * expect({}).to.not.be.frozen; + * + * @name frozen + * @namespace BDD + * @api public + */ + + Assertion.addProperty('frozen', function() { + var obj = flag(this, 'object'); + + // In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError. + // In ES6, a non-object argument will be treated as if it was a frozen ordinary object, simply return true. + // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen + // The following provides ES6 behavior when a TypeError is thrown under ES5. + + var isFrozen; + + try { + isFrozen = Object.isFrozen(obj); + } catch (err) { + if (err instanceof TypeError) isFrozen = true; + else throw err; + } + + this.assert( + isFrozen + , 'expected #{this} to be frozen' + , 'expected #{this} to not be frozen' + ); + }); +}; + +},{}],6:[function(require,module,exports){ +/*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + */ + + +module.exports = function (chai, util) { + + /*! + * Chai dependencies. + */ + + var Assertion = chai.Assertion + , flag = util.flag; + + /*! + * Module export. + */ + + /** + * ### assert(expression, message) + * + * Write your own test expressions. + * + * assert('foo' !== 'bar', 'foo is not bar'); + * assert(Array.isArray([]), 'empty arrays are arrays'); + * + * @param {Mixed} expression to test for truthiness + * @param {String} message to display on error + * @name assert + * @namespace Assert + * @api public + */ + + var assert = chai.assert = function (express, errmsg) { + var test = new Assertion(null, null, chai.assert); + test.assert( + express + , errmsg + , '[ negation message unavailable ]' + ); + }; + + /** + * ### .fail(actual, expected, [message], [operator]) + * + * Throw a failure. Node.js `assert` module-compatible. + * + * @name fail + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @param {String} operator + * @namespace Assert + * @api public + */ + + assert.fail = function (actual, expected, message, operator) { + message = message || 'assert.fail()'; + throw new chai.AssertionError(message, { + actual: actual + , expected: expected + , operator: operator + }, assert.fail); + }; + + /** + * ### .isOk(object, [message]) + * + * Asserts that `object` is truthy. + * + * assert.isOk('everything', 'everything is ok'); + * assert.isOk(false, 'this will fail'); + * + * @name isOk + * @alias ok + * @param {Mixed} object to test + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isOk = function (val, msg) { + new Assertion(val, msg).is.ok; + }; + + /** + * ### .isNotOk(object, [message]) + * + * Asserts that `object` is falsy. + * + * assert.isNotOk('everything', 'this will fail'); + * assert.isNotOk(false, 'this will pass'); + * + * @name isNotOk + * @alias notOk + * @param {Mixed} object to test + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotOk = function (val, msg) { + new Assertion(val, msg).is.not.ok; + }; + + /** + * ### .equal(actual, expected, [message]) + * + * Asserts non-strict equality (`==`) of `actual` and `expected`. + * + * assert.equal(3, '3', '== coerces values to strings'); + * + * @name equal + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.equal = function (act, exp, msg) { + var test = new Assertion(act, msg, assert.equal); + + test.assert( + exp == flag(test, 'object') + , 'expected #{this} to equal #{exp}' + , 'expected #{this} to not equal #{act}' + , exp + , act + ); + }; + + /** + * ### .notEqual(actual, expected, [message]) + * + * Asserts non-strict inequality (`!=`) of `actual` and `expected`. + * + * assert.notEqual(3, 4, 'these numbers are not equal'); + * + * @name notEqual + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.notEqual = function (act, exp, msg) { + var test = new Assertion(act, msg, assert.notEqual); + + test.assert( + exp != flag(test, 'object') + , 'expected #{this} to not equal #{exp}' + , 'expected #{this} to equal #{act}' + , exp + , act + ); + }; + + /** + * ### .strictEqual(actual, expected, [message]) + * + * Asserts strict equality (`===`) of `actual` and `expected`. + * + * assert.strictEqual(true, true, 'these booleans are strictly equal'); + * + * @name strictEqual + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.strictEqual = function (act, exp, msg) { + new Assertion(act, msg).to.equal(exp); + }; + + /** + * ### .notStrictEqual(actual, expected, [message]) + * + * Asserts strict inequality (`!==`) of `actual` and `expected`. + * + * assert.notStrictEqual(3, '3', 'no coercion for strict equality'); + * + * @name notStrictEqual + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.notStrictEqual = function (act, exp, msg) { + new Assertion(act, msg).to.not.equal(exp); + }; + + /** + * ### .deepEqual(actual, expected, [message]) + * + * Asserts that `actual` is deeply equal to `expected`. + * + * assert.deepEqual({ tea: 'green' }, { tea: 'green' }); + * + * @name deepEqual + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.deepEqual = function (act, exp, msg) { + new Assertion(act, msg).to.eql(exp); + }; + + /** + * ### .notDeepEqual(actual, expected, [message]) + * + * Assert that `actual` is not deeply equal to `expected`. + * + * assert.notDeepEqual({ tea: 'green' }, { tea: 'jasmine' }); + * + * @name notDeepEqual + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.notDeepEqual = function (act, exp, msg) { + new Assertion(act, msg).to.not.eql(exp); + }; + + /** + * ### .isAbove(valueToCheck, valueToBeAbove, [message]) + * + * Asserts `valueToCheck` is strictly greater than (>) `valueToBeAbove` + * + * assert.isAbove(5, 2, '5 is strictly greater than 2'); + * + * @name isAbove + * @param {Mixed} valueToCheck + * @param {Mixed} valueToBeAbove + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isAbove = function (val, abv, msg) { + new Assertion(val, msg).to.be.above(abv); + }; + + /** + * ### .isAtLeast(valueToCheck, valueToBeAtLeast, [message]) + * + * Asserts `valueToCheck` is greater than or equal to (>=) `valueToBeAtLeast` + * + * assert.isAtLeast(5, 2, '5 is greater or equal to 2'); + * assert.isAtLeast(3, 3, '3 is greater or equal to 3'); + * + * @name isAtLeast + * @param {Mixed} valueToCheck + * @param {Mixed} valueToBeAtLeast + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isAtLeast = function (val, atlst, msg) { + new Assertion(val, msg).to.be.least(atlst); + }; + + /** + * ### .isBelow(valueToCheck, valueToBeBelow, [message]) + * + * Asserts `valueToCheck` is strictly less than (<) `valueToBeBelow` + * + * assert.isBelow(3, 6, '3 is strictly less than 6'); + * + * @name isBelow + * @param {Mixed} valueToCheck + * @param {Mixed} valueToBeBelow + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isBelow = function (val, blw, msg) { + new Assertion(val, msg).to.be.below(blw); + }; + + /** + * ### .isAtMost(valueToCheck, valueToBeAtMost, [message]) + * + * Asserts `valueToCheck` is less than or equal to (<=) `valueToBeAtMost` + * + * assert.isAtMost(3, 6, '3 is less than or equal to 6'); + * assert.isAtMost(4, 4, '4 is less than or equal to 4'); + * + * @name isAtMost + * @param {Mixed} valueToCheck + * @param {Mixed} valueToBeAtMost + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isAtMost = function (val, atmst, msg) { + new Assertion(val, msg).to.be.most(atmst); + }; + + /** + * ### .isTrue(value, [message]) + * + * Asserts that `value` is true. + * + * var teaServed = true; + * assert.isTrue(teaServed, 'the tea has been served'); + * + * @name isTrue + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isTrue = function (val, msg) { + new Assertion(val, msg).is['true']; + }; + + /** + * ### .isNotTrue(value, [message]) + * + * Asserts that `value` is not true. + * + * var tea = 'tasty chai'; + * assert.isNotTrue(tea, 'great, time for tea!'); + * + * @name isNotTrue + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotTrue = function (val, msg) { + new Assertion(val, msg).to.not.equal(true); + }; + + /** + * ### .isFalse(value, [message]) + * + * Asserts that `value` is false. + * + * var teaServed = false; + * assert.isFalse(teaServed, 'no tea yet? hmm...'); + * + * @name isFalse + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isFalse = function (val, msg) { + new Assertion(val, msg).is['false']; + }; + + /** + * ### .isNotFalse(value, [message]) + * + * Asserts that `value` is not false. + * + * var tea = 'tasty chai'; + * assert.isNotFalse(tea, 'great, time for tea!'); + * + * @name isNotFalse + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotFalse = function (val, msg) { + new Assertion(val, msg).to.not.equal(false); + }; + + /** + * ### .isNull(value, [message]) + * + * Asserts that `value` is null. + * + * assert.isNull(err, 'there was no error'); + * + * @name isNull + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNull = function (val, msg) { + new Assertion(val, msg).to.equal(null); + }; + + /** + * ### .isNotNull(value, [message]) + * + * Asserts that `value` is not null. + * + * var tea = 'tasty chai'; + * assert.isNotNull(tea, 'great, time for tea!'); + * + * @name isNotNull + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotNull = function (val, msg) { + new Assertion(val, msg).to.not.equal(null); + }; + + /** + * ### .isNaN + * Asserts that value is NaN + * + * assert.isNaN('foo', 'foo is NaN'); + * + * @name isNaN + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNaN = function (val, msg) { + new Assertion(val, msg).to.be.NaN; + }; + + /** + * ### .isNotNaN + * Asserts that value is not NaN + * + * assert.isNotNaN(4, '4 is not NaN'); + * + * @name isNotNaN + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + assert.isNotNaN = function (val, msg) { + new Assertion(val, msg).not.to.be.NaN; + }; + + /** + * ### .isUndefined(value, [message]) + * + * Asserts that `value` is `undefined`. + * + * var tea; + * assert.isUndefined(tea, 'no tea defined'); + * + * @name isUndefined + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isUndefined = function (val, msg) { + new Assertion(val, msg).to.equal(undefined); + }; + + /** + * ### .isDefined(value, [message]) + * + * Asserts that `value` is not `undefined`. + * + * var tea = 'cup of chai'; + * assert.isDefined(tea, 'tea has been defined'); + * + * @name isDefined + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isDefined = function (val, msg) { + new Assertion(val, msg).to.not.equal(undefined); + }; + + /** + * ### .isFunction(value, [message]) + * + * Asserts that `value` is a function. + * + * function serveTea() { return 'cup of tea'; }; + * assert.isFunction(serveTea, 'great, we can have tea now'); + * + * @name isFunction + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isFunction = function (val, msg) { + new Assertion(val, msg).to.be.a('function'); + }; + + /** + * ### .isNotFunction(value, [message]) + * + * Asserts that `value` is _not_ a function. + * + * var serveTea = [ 'heat', 'pour', 'sip' ]; + * assert.isNotFunction(serveTea, 'great, we have listed the steps'); + * + * @name isNotFunction + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotFunction = function (val, msg) { + new Assertion(val, msg).to.not.be.a('function'); + }; + + /** + * ### .isObject(value, [message]) + * + * Asserts that `value` is an object of type 'Object' (as revealed by `Object.prototype.toString`). + * _The assertion does not match subclassed objects._ + * + * var selection = { name: 'Chai', serve: 'with spices' }; + * assert.isObject(selection, 'tea selection is an object'); + * + * @name isObject + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isObject = function (val, msg) { + new Assertion(val, msg).to.be.a('object'); + }; + + /** + * ### .isNotObject(value, [message]) + * + * Asserts that `value` is _not_ an object of type 'Object' (as revealed by `Object.prototype.toString`). + * + * var selection = 'chai' + * assert.isNotObject(selection, 'tea selection is not an object'); + * assert.isNotObject(null, 'null is not an object'); + * + * @name isNotObject + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotObject = function (val, msg) { + new Assertion(val, msg).to.not.be.a('object'); + }; + + /** + * ### .isArray(value, [message]) + * + * Asserts that `value` is an array. + * + * var menu = [ 'green', 'chai', 'oolong' ]; + * assert.isArray(menu, 'what kind of tea do we want?'); + * + * @name isArray + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isArray = function (val, msg) { + new Assertion(val, msg).to.be.an('array'); + }; + + /** + * ### .isNotArray(value, [message]) + * + * Asserts that `value` is _not_ an array. + * + * var menu = 'green|chai|oolong'; + * assert.isNotArray(menu, 'what kind of tea do we want?'); + * + * @name isNotArray + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotArray = function (val, msg) { + new Assertion(val, msg).to.not.be.an('array'); + }; + + /** + * ### .isString(value, [message]) + * + * Asserts that `value` is a string. + * + * var teaOrder = 'chai'; + * assert.isString(teaOrder, 'order placed'); + * + * @name isString + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isString = function (val, msg) { + new Assertion(val, msg).to.be.a('string'); + }; + + /** + * ### .isNotString(value, [message]) + * + * Asserts that `value` is _not_ a string. + * + * var teaOrder = 4; + * assert.isNotString(teaOrder, 'order placed'); + * + * @name isNotString + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotString = function (val, msg) { + new Assertion(val, msg).to.not.be.a('string'); + }; + + /** + * ### .isNumber(value, [message]) + * + * Asserts that `value` is a number. + * + * var cups = 2; + * assert.isNumber(cups, 'how many cups'); + * + * @name isNumber + * @param {Number} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNumber = function (val, msg) { + new Assertion(val, msg).to.be.a('number'); + }; + + /** + * ### .isNotNumber(value, [message]) + * + * Asserts that `value` is _not_ a number. + * + * var cups = '2 cups please'; + * assert.isNotNumber(cups, 'how many cups'); + * + * @name isNotNumber + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotNumber = function (val, msg) { + new Assertion(val, msg).to.not.be.a('number'); + }; + + /** + * ### .isBoolean(value, [message]) + * + * Asserts that `value` is a boolean. + * + * var teaReady = true + * , teaServed = false; + * + * assert.isBoolean(teaReady, 'is the tea ready'); + * assert.isBoolean(teaServed, 'has tea been served'); + * + * @name isBoolean + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isBoolean = function (val, msg) { + new Assertion(val, msg).to.be.a('boolean'); + }; + + /** + * ### .isNotBoolean(value, [message]) + * + * Asserts that `value` is _not_ a boolean. + * + * var teaReady = 'yep' + * , teaServed = 'nope'; + * + * assert.isNotBoolean(teaReady, 'is the tea ready'); + * assert.isNotBoolean(teaServed, 'has tea been served'); + * + * @name isNotBoolean + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotBoolean = function (val, msg) { + new Assertion(val, msg).to.not.be.a('boolean'); + }; + + /** + * ### .typeOf(value, name, [message]) + * + * Asserts that `value`'s type is `name`, as determined by + * `Object.prototype.toString`. + * + * assert.typeOf({ tea: 'chai' }, 'object', 'we have an object'); + * assert.typeOf(['chai', 'jasmine'], 'array', 'we have an array'); + * assert.typeOf('tea', 'string', 'we have a string'); + * assert.typeOf(/tea/, 'regexp', 'we have a regular expression'); + * assert.typeOf(null, 'null', 'we have a null'); + * assert.typeOf(undefined, 'undefined', 'we have an undefined'); + * + * @name typeOf + * @param {Mixed} value + * @param {String} name + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.typeOf = function (val, type, msg) { + new Assertion(val, msg).to.be.a(type); + }; + + /** + * ### .notTypeOf(value, name, [message]) + * + * Asserts that `value`'s type is _not_ `name`, as determined by + * `Object.prototype.toString`. + * + * assert.notTypeOf('tea', 'number', 'strings are not numbers'); + * + * @name notTypeOf + * @param {Mixed} value + * @param {String} typeof name + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.notTypeOf = function (val, type, msg) { + new Assertion(val, msg).to.not.be.a(type); + }; + + /** + * ### .instanceOf(object, constructor, [message]) + * + * Asserts that `value` is an instance of `constructor`. + * + * var Tea = function (name) { this.name = name; } + * , chai = new Tea('chai'); + * + * assert.instanceOf(chai, Tea, 'chai is an instance of tea'); + * + * @name instanceOf + * @param {Object} object + * @param {Constructor} constructor + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.instanceOf = function (val, type, msg) { + new Assertion(val, msg).to.be.instanceOf(type); + }; + + /** + * ### .notInstanceOf(object, constructor, [message]) + * + * Asserts `value` is not an instance of `constructor`. + * + * var Tea = function (name) { this.name = name; } + * , chai = new String('chai'); + * + * assert.notInstanceOf(chai, Tea, 'chai is not an instance of tea'); + * + * @name notInstanceOf + * @param {Object} object + * @param {Constructor} constructor + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.notInstanceOf = function (val, type, msg) { + new Assertion(val, msg).to.not.be.instanceOf(type); + }; + + /** + * ### .include(haystack, needle, [message]) + * + * Asserts that `haystack` includes `needle`. Works + * for strings and arrays. + * + * assert.include('foobar', 'bar', 'foobar contains string "bar"'); + * assert.include([ 1, 2, 3 ], 3, 'array contains value'); + * + * @name include + * @param {Array|String} haystack + * @param {Mixed} needle + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.include = function (exp, inc, msg) { + new Assertion(exp, msg, assert.include).include(inc); + }; + + /** + * ### .notInclude(haystack, needle, [message]) + * + * Asserts that `haystack` does not include `needle`. Works + * for strings and arrays. + * + * assert.notInclude('foobar', 'baz', 'string not include substring'); + * assert.notInclude([ 1, 2, 3 ], 4, 'array not include contain value'); + * + * @name notInclude + * @param {Array|String} haystack + * @param {Mixed} needle + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.notInclude = function (exp, inc, msg) { + new Assertion(exp, msg, assert.notInclude).not.include(inc); + }; + + /** + * ### .match(value, regexp, [message]) + * + * Asserts that `value` matches the regular expression `regexp`. + * + * assert.match('foobar', /^foo/, 'regexp matches'); + * + * @name match + * @param {Mixed} value + * @param {RegExp} regexp + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.match = function (exp, re, msg) { + new Assertion(exp, msg).to.match(re); + }; + + /** + * ### .notMatch(value, regexp, [message]) + * + * Asserts that `value` does not match the regular expression `regexp`. + * + * assert.notMatch('foobar', /^foo/, 'regexp does not match'); + * + * @name notMatch + * @param {Mixed} value + * @param {RegExp} regexp + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.notMatch = function (exp, re, msg) { + new Assertion(exp, msg).to.not.match(re); + }; + + /** + * ### .property(object, property, [message]) + * + * Asserts that `object` has a property named by `property`. + * + * assert.property({ tea: { green: 'matcha' }}, 'tea'); + * + * @name property + * @param {Object} object + * @param {String} property + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.property = function (obj, prop, msg) { + new Assertion(obj, msg).to.have.property(prop); + }; + + /** + * ### .notProperty(object, property, [message]) + * + * Asserts that `object` does _not_ have a property named by `property`. + * + * assert.notProperty({ tea: { green: 'matcha' }}, 'coffee'); + * + * @name notProperty + * @param {Object} object + * @param {String} property + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.notProperty = function (obj, prop, msg) { + new Assertion(obj, msg).to.not.have.property(prop); + }; + + /** + * ### .deepProperty(object, property, [message]) + * + * Asserts that `object` has a property named by `property`, which can be a + * string using dot- and bracket-notation for deep reference. + * + * assert.deepProperty({ tea: { green: 'matcha' }}, 'tea.green'); + * + * @name deepProperty + * @param {Object} object + * @param {String} property + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.deepProperty = function (obj, prop, msg) { + new Assertion(obj, msg).to.have.deep.property(prop); + }; + + /** + * ### .notDeepProperty(object, property, [message]) + * + * Asserts that `object` does _not_ have a property named by `property`, which + * can be a string using dot- and bracket-notation for deep reference. + * + * assert.notDeepProperty({ tea: { green: 'matcha' }}, 'tea.oolong'); + * + * @name notDeepProperty + * @param {Object} object + * @param {String} property + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.notDeepProperty = function (obj, prop, msg) { + new Assertion(obj, msg).to.not.have.deep.property(prop); + }; + + /** + * ### .propertyVal(object, property, value, [message]) + * + * Asserts that `object` has a property named by `property` with value given + * by `value`. + * + * assert.propertyVal({ tea: 'is good' }, 'tea', 'is good'); + * + * @name propertyVal + * @param {Object} object + * @param {String} property + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.propertyVal = function (obj, prop, val, msg) { + new Assertion(obj, msg).to.have.property(prop, val); + }; + + /** + * ### .propertyNotVal(object, property, value, [message]) + * + * Asserts that `object` has a property named by `property`, but with a value + * different from that given by `value`. + * + * assert.propertyNotVal({ tea: 'is good' }, 'tea', 'is bad'); + * + * @name propertyNotVal + * @param {Object} object + * @param {String} property + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.propertyNotVal = function (obj, prop, val, msg) { + new Assertion(obj, msg).to.not.have.property(prop, val); + }; + + /** + * ### .deepPropertyVal(object, property, value, [message]) + * + * Asserts that `object` has a property named by `property` with value given + * by `value`. `property` can use dot- and bracket-notation for deep + * reference. + * + * assert.deepPropertyVal({ tea: { green: 'matcha' }}, 'tea.green', 'matcha'); + * + * @name deepPropertyVal + * @param {Object} object + * @param {String} property + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.deepPropertyVal = function (obj, prop, val, msg) { + new Assertion(obj, msg).to.have.deep.property(prop, val); + }; + + /** + * ### .deepPropertyNotVal(object, property, value, [message]) + * + * Asserts that `object` has a property named by `property`, but with a value + * different from that given by `value`. `property` can use dot- and + * bracket-notation for deep reference. + * + * assert.deepPropertyNotVal({ tea: { green: 'matcha' }}, 'tea.green', 'konacha'); + * + * @name deepPropertyNotVal + * @param {Object} object + * @param {String} property + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.deepPropertyNotVal = function (obj, prop, val, msg) { + new Assertion(obj, msg).to.not.have.deep.property(prop, val); + }; + + /** + * ### .lengthOf(object, length, [message]) + * + * Asserts that `object` has a `length` property with the expected value. + * + * assert.lengthOf([1,2,3], 3, 'array has length of 3'); + * assert.lengthOf('foobar', 6, 'string has length of 6'); + * + * @name lengthOf + * @param {Mixed} object + * @param {Number} length + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.lengthOf = function (exp, len, msg) { + new Assertion(exp, msg).to.have.length(len); + }; + + /** + * ### .throws(function, [constructor/string/regexp], [string/regexp], [message]) + * + * Asserts that `function` will throw an error that is an instance of + * `constructor`, or alternately that it will throw an error with message + * matching `regexp`. + * + * assert.throws(fn, 'function throws a reference error'); + * assert.throws(fn, /function throws a reference error/); + * assert.throws(fn, ReferenceError); + * assert.throws(fn, ReferenceError, 'function throws a reference error'); + * assert.throws(fn, ReferenceError, /function throws a reference error/); + * + * @name throws + * @alias throw + * @alias Throw + * @param {Function} function + * @param {ErrorConstructor} constructor + * @param {RegExp} regexp + * @param {String} message + * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types + * @namespace Assert + * @api public + */ + + assert.throws = function (fn, errt, errs, msg) { + if ('string' === typeof errt || errt instanceof RegExp) { + errs = errt; + errt = null; + } + + var assertErr = new Assertion(fn, msg).to.throw(errt, errs); + return flag(assertErr, 'object'); + }; + + /** + * ### .doesNotThrow(function, [constructor/regexp], [message]) + * + * Asserts that `function` will _not_ throw an error that is an instance of + * `constructor`, or alternately that it will not throw an error with message + * matching `regexp`. + * + * assert.doesNotThrow(fn, Error, 'function does not throw'); + * + * @name doesNotThrow + * @param {Function} function + * @param {ErrorConstructor} constructor + * @param {RegExp} regexp + * @param {String} message + * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types + * @namespace Assert + * @api public + */ + + assert.doesNotThrow = function (fn, type, msg) { + if ('string' === typeof type) { + msg = type; + type = null; + } + + new Assertion(fn, msg).to.not.Throw(type); + }; + + /** + * ### .operator(val1, operator, val2, [message]) + * + * Compares two values using `operator`. + * + * assert.operator(1, '<', 2, 'everything is ok'); + * assert.operator(1, '>', 2, 'this will fail'); + * + * @name operator + * @param {Mixed} val1 + * @param {String} operator + * @param {Mixed} val2 + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.operator = function (val, operator, val2, msg) { + var ok; + switch(operator) { + case '==': + ok = val == val2; + break; + case '===': + ok = val === val2; + break; + case '>': + ok = val > val2; + break; + case '>=': + ok = val >= val2; + break; + case '<': + ok = val < val2; + break; + case '<=': + ok = val <= val2; + break; + case '!=': + ok = val != val2; + break; + case '!==': + ok = val !== val2; + break; + default: + throw new Error('Invalid operator "' + operator + '"'); + } + var test = new Assertion(ok, msg); + test.assert( + true === flag(test, 'object') + , 'expected ' + util.inspect(val) + ' to be ' + operator + ' ' + util.inspect(val2) + , 'expected ' + util.inspect(val) + ' to not be ' + operator + ' ' + util.inspect(val2) ); + }; + + /** + * ### .closeTo(actual, expected, delta, [message]) + * + * Asserts that the target is equal `expected`, to within a +/- `delta` range. + * + * assert.closeTo(1.5, 1, 0.5, 'numbers are close'); + * + * @name closeTo + * @param {Number} actual + * @param {Number} expected + * @param {Number} delta + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.closeTo = function (act, exp, delta, msg) { + new Assertion(act, msg).to.be.closeTo(exp, delta); + }; + + /** + * ### .approximately(actual, expected, delta, [message]) + * + * Asserts that the target is equal `expected`, to within a +/- `delta` range. + * + * assert.approximately(1.5, 1, 0.5, 'numbers are close'); + * + * @name approximately + * @param {Number} actual + * @param {Number} expected + * @param {Number} delta + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.approximately = function (act, exp, delta, msg) { + new Assertion(act, msg).to.be.approximately(exp, delta); + }; + + /** + * ### .sameMembers(set1, set2, [message]) + * + * Asserts that `set1` and `set2` have the same members. + * Order is not taken into account. + * + * assert.sameMembers([ 1, 2, 3 ], [ 2, 1, 3 ], 'same members'); + * + * @name sameMembers + * @param {Array} set1 + * @param {Array} set2 + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.sameMembers = function (set1, set2, msg) { + new Assertion(set1, msg).to.have.same.members(set2); + } + + /** + * ### .sameDeepMembers(set1, set2, [message]) + * + * Asserts that `set1` and `set2` have the same members - using a deep equality checking. + * Order is not taken into account. + * + * assert.sameDeepMembers([ {b: 3}, {a: 2}, {c: 5} ], [ {c: 5}, {b: 3}, {a: 2} ], 'same deep members'); + * + * @name sameDeepMembers + * @param {Array} set1 + * @param {Array} set2 + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.sameDeepMembers = function (set1, set2, msg) { + new Assertion(set1, msg).to.have.same.deep.members(set2); + } + + /** + * ### .includeMembers(superset, subset, [message]) + * + * Asserts that `subset` is included in `superset`. + * Order is not taken into account. + * + * assert.includeMembers([ 1, 2, 3 ], [ 2, 1 ], 'include members'); + * + * @name includeMembers + * @param {Array} superset + * @param {Array} subset + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.includeMembers = function (superset, subset, msg) { + new Assertion(superset, msg).to.include.members(subset); + } + + /** + * ### .includeDeepMembers(superset, subset, [message]) + * + * Asserts that `subset` is included in `superset` - using deep equality checking. + * Order is not taken into account. + * Duplicates are ignored. + * + * assert.includeDeepMembers([ {a: 1}, {b: 2}, {c: 3} ], [ {b: 2}, {a: 1}, {b: 2} ], 'include deep members'); + * + * @name includeDeepMembers + * @param {Array} superset + * @param {Array} subset + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.includeDeepMembers = function (superset, subset, msg) { + new Assertion(superset, msg).to.include.deep.members(subset); + } + + /** + * ### .oneOf(inList, list, [message]) + * + * Asserts that non-object, non-array value `inList` appears in the flat array `list`. + * + * assert.oneOf(1, [ 2, 1 ], 'Not found in list'); + * + * @name oneOf + * @param {*} inList + * @param {Array<*>} list + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.oneOf = function (inList, list, msg) { + new Assertion(inList, msg).to.be.oneOf(list); + } + + /** + * ### .changes(function, object, property) + * + * Asserts that a function changes the value of a property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 22 }; + * assert.changes(fn, obj, 'val'); + * + * @name changes + * @param {Function} modifier function + * @param {Object} object + * @param {String} property name + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.changes = function (fn, obj, prop) { + new Assertion(fn).to.change(obj, prop); + } + + /** + * ### .doesNotChange(function, object, property) + * + * Asserts that a function does not changes the value of a property + * + * var obj = { val: 10 }; + * var fn = function() { console.log('foo'); }; + * assert.doesNotChange(fn, obj, 'val'); + * + * @name doesNotChange + * @param {Function} modifier function + * @param {Object} object + * @param {String} property name + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.doesNotChange = function (fn, obj, prop) { + new Assertion(fn).to.not.change(obj, prop); + } + + /** + * ### .increases(function, object, property) + * + * Asserts that a function increases an object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 13 }; + * assert.increases(fn, obj, 'val'); + * + * @name increases + * @param {Function} modifier function + * @param {Object} object + * @param {String} property name + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.increases = function (fn, obj, prop) { + new Assertion(fn).to.increase(obj, prop); + } + + /** + * ### .doesNotIncrease(function, object, property) + * + * Asserts that a function does not increase object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 8 }; + * assert.doesNotIncrease(fn, obj, 'val'); + * + * @name doesNotIncrease + * @param {Function} modifier function + * @param {Object} object + * @param {String} property name + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.doesNotIncrease = function (fn, obj, prop) { + new Assertion(fn).to.not.increase(obj, prop); + } + + /** + * ### .decreases(function, object, property) + * + * Asserts that a function decreases an object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 5 }; + * assert.decreases(fn, obj, 'val'); + * + * @name decreases + * @param {Function} modifier function + * @param {Object} object + * @param {String} property name + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.decreases = function (fn, obj, prop) { + new Assertion(fn).to.decrease(obj, prop); + } + + /** + * ### .doesNotDecrease(function, object, property) + * + * Asserts that a function does not decreases an object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 15 }; + * assert.doesNotDecrease(fn, obj, 'val'); + * + * @name doesNotDecrease + * @param {Function} modifier function + * @param {Object} object + * @param {String} property name + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.doesNotDecrease = function (fn, obj, prop) { + new Assertion(fn).to.not.decrease(obj, prop); + } + + /*! + * ### .ifError(object) + * + * Asserts if value is not a false value, and throws if it is a true value. + * This is added to allow for chai to be a drop-in replacement for Node's + * assert class. + * + * var err = new Error('I am a custom error'); + * assert.ifError(err); // Rethrows err! + * + * @name ifError + * @param {Object} object + * @namespace Assert + * @api public + */ + + assert.ifError = function (val) { + if (val) { + throw(val); + } + }; + + /** + * ### .isExtensible(object) + * + * Asserts that `object` is extensible (can have new properties added to it). + * + * assert.isExtensible({}); + * + * @name isExtensible + * @alias extensible + * @param {Object} object + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.isExtensible = function (obj, msg) { + new Assertion(obj, msg).to.be.extensible; + }; + + /** + * ### .isNotExtensible(object) + * + * Asserts that `object` is _not_ extensible. + * + * var nonExtensibleObject = Object.preventExtensions({}); + * var sealedObject = Object.seal({}); + * var frozenObject = Object.freese({}); + * + * assert.isNotExtensible(nonExtensibleObject); + * assert.isNotExtensible(sealedObject); + * assert.isNotExtensible(frozenObject); + * + * @name isNotExtensible + * @alias notExtensible + * @param {Object} object + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.isNotExtensible = function (obj, msg) { + new Assertion(obj, msg).to.not.be.extensible; + }; + + /** + * ### .isSealed(object) + * + * Asserts that `object` is sealed (cannot have new properties added to it + * and its existing properties cannot be removed). + * + * var sealedObject = Object.seal({}); + * var frozenObject = Object.seal({}); + * + * assert.isSealed(sealedObject); + * assert.isSealed(frozenObject); + * + * @name isSealed + * @alias sealed + * @param {Object} object + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.isSealed = function (obj, msg) { + new Assertion(obj, msg).to.be.sealed; + }; + + /** + * ### .isNotSealed(object) + * + * Asserts that `object` is _not_ sealed. + * + * assert.isNotSealed({}); + * + * @name isNotSealed + * @alias notSealed + * @param {Object} object + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.isNotSealed = function (obj, msg) { + new Assertion(obj, msg).to.not.be.sealed; + }; + + /** + * ### .isFrozen(object) + * + * Asserts that `object` is frozen (cannot have new properties added to it + * and its existing properties cannot be modified). + * + * var frozenObject = Object.freeze({}); + * assert.frozen(frozenObject); + * + * @name isFrozen + * @alias frozen + * @param {Object} object + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.isFrozen = function (obj, msg) { + new Assertion(obj, msg).to.be.frozen; + }; + + /** + * ### .isNotFrozen(object) + * + * Asserts that `object` is _not_ frozen. + * + * assert.isNotFrozen({}); + * + * @name isNotFrozen + * @alias notFrozen + * @param {Object} object + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.isNotFrozen = function (obj, msg) { + new Assertion(obj, msg).to.not.be.frozen; + }; + + /*! + * Aliases. + */ + + (function alias(name, as){ + assert[as] = assert[name]; + return alias; + }) + ('isOk', 'ok') + ('isNotOk', 'notOk') + ('throws', 'throw') + ('throws', 'Throw') + ('isExtensible', 'extensible') + ('isNotExtensible', 'notExtensible') + ('isSealed', 'sealed') + ('isNotSealed', 'notSealed') + ('isFrozen', 'frozen') + ('isNotFrozen', 'notFrozen'); +}; + +},{}],7:[function(require,module,exports){ +/*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + */ + +module.exports = function (chai, util) { + chai.expect = function (val, message) { + return new chai.Assertion(val, message); + }; + + /** + * ### .fail(actual, expected, [message], [operator]) + * + * Throw a failure. + * + * @name fail + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @param {String} operator + * @namespace Expect + * @api public + */ + + chai.expect.fail = function (actual, expected, message, operator) { + message = message || 'expect.fail()'; + throw new chai.AssertionError(message, { + actual: actual + , expected: expected + , operator: operator + }, chai.expect.fail); + }; +}; + +},{}],8:[function(require,module,exports){ +/*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + */ + +module.exports = function (chai, util) { + var Assertion = chai.Assertion; + + function loadShould () { + // explicitly define this method as function as to have it's name to include as `ssfi` + function shouldGetter() { + if (this instanceof String || this instanceof Number || this instanceof Boolean ) { + return new Assertion(this.valueOf(), null, shouldGetter); + } + return new Assertion(this, null, shouldGetter); + } + function shouldSetter(value) { + // See https://github.com/chaijs/chai/issues/86: this makes + // `whatever.should = someValue` actually set `someValue`, which is + // especially useful for `global.should = require('chai').should()`. + // + // Note that we have to use [[DefineProperty]] instead of [[Put]] + // since otherwise we would trigger this very setter! + Object.defineProperty(this, 'should', { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } + // modify Object.prototype to have `should` + Object.defineProperty(Object.prototype, 'should', { + set: shouldSetter + , get: shouldGetter + , configurable: true + }); + + var should = {}; + + /** + * ### .fail(actual, expected, [message], [operator]) + * + * Throw a failure. + * + * @name fail + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @param {String} operator + * @namespace Should + * @api public + */ + + should.fail = function (actual, expected, message, operator) { + message = message || 'should.fail()'; + throw new chai.AssertionError(message, { + actual: actual + , expected: expected + , operator: operator + }, should.fail); + }; + + /** + * ### .equal(actual, expected, [message]) + * + * Asserts non-strict equality (`==`) of `actual` and `expected`. + * + * should.equal(3, '3', '== coerces values to strings'); + * + * @name equal + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @namespace Should + * @api public + */ + + should.equal = function (val1, val2, msg) { + new Assertion(val1, msg).to.equal(val2); + }; + + /** + * ### .throw(function, [constructor/string/regexp], [string/regexp], [message]) + * + * Asserts that `function` will throw an error that is an instance of + * `constructor`, or alternately that it will throw an error with message + * matching `regexp`. + * + * should.throw(fn, 'function throws a reference error'); + * should.throw(fn, /function throws a reference error/); + * should.throw(fn, ReferenceError); + * should.throw(fn, ReferenceError, 'function throws a reference error'); + * should.throw(fn, ReferenceError, /function throws a reference error/); + * + * @name throw + * @alias Throw + * @param {Function} function + * @param {ErrorConstructor} constructor + * @param {RegExp} regexp + * @param {String} message + * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types + * @namespace Should + * @api public + */ + + should.Throw = function (fn, errt, errs, msg) { + new Assertion(fn, msg).to.Throw(errt, errs); + }; + + /** + * ### .exist + * + * Asserts that the target is neither `null` nor `undefined`. + * + * var foo = 'hi'; + * + * should.exist(foo, 'foo exists'); + * + * @name exist + * @namespace Should + * @api public + */ + + should.exist = function (val, msg) { + new Assertion(val, msg).to.exist; + } + + // negation + should.not = {} + + /** + * ### .not.equal(actual, expected, [message]) + * + * Asserts non-strict inequality (`!=`) of `actual` and `expected`. + * + * should.not.equal(3, 4, 'these numbers are not equal'); + * + * @name not.equal + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @namespace Should + * @api public + */ + + should.not.equal = function (val1, val2, msg) { + new Assertion(val1, msg).to.not.equal(val2); + }; + + /** + * ### .throw(function, [constructor/regexp], [message]) + * + * Asserts that `function` will _not_ throw an error that is an instance of + * `constructor`, or alternately that it will not throw an error with message + * matching `regexp`. + * + * should.not.throw(fn, Error, 'function does not throw'); + * + * @name not.throw + * @alias not.Throw + * @param {Function} function + * @param {ErrorConstructor} constructor + * @param {RegExp} regexp + * @param {String} message + * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types + * @namespace Should + * @api public + */ + + should.not.Throw = function (fn, errt, errs, msg) { + new Assertion(fn, msg).to.not.Throw(errt, errs); + }; + + /** + * ### .not.exist + * + * Asserts that the target is neither `null` nor `undefined`. + * + * var bar = null; + * + * should.not.exist(bar, 'bar does not exist'); + * + * @name not.exist + * @namespace Should + * @api public + */ + + should.not.exist = function (val, msg) { + new Assertion(val, msg).to.not.exist; + } + + should['throw'] = should['Throw']; + should.not['throw'] = should.not['Throw']; + + return should; + }; + + chai.should = loadShould; + chai.Should = loadShould; +}; + +},{}],9:[function(require,module,exports){ +/*! + * Chai - addChainingMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/*! + * Module dependencies + */ + +var transferFlags = require('./transferFlags'); +var flag = require('./flag'); +var config = require('../config'); + +/*! + * Module variables + */ + +// Check whether `__proto__` is supported +var hasProtoSupport = '__proto__' in Object; + +// Without `__proto__` support, this module will need to add properties to a function. +// However, some Function.prototype methods cannot be overwritten, +// and there seems no easy cross-platform way to detect them (@see chaijs/chai/issues/69). +var excludeNames = /^(?:length|name|arguments|caller)$/; + +// Cache `Function` properties +var call = Function.prototype.call, + apply = Function.prototype.apply; + +/** + * ### addChainableMethod (ctx, name, method, chainingBehavior) + * + * Adds a method to an object, such that the method can also be chained. + * + * utils.addChainableMethod(chai.Assertion.prototype, 'foo', function (str) { + * var obj = utils.flag(this, 'object'); + * new chai.Assertion(obj).to.be.equal(str); + * }); + * + * Can also be accessed directly from `chai.Assertion`. + * + * chai.Assertion.addChainableMethod('foo', fn, chainingBehavior); + * + * The result can then be used as both a method assertion, executing both `method` and + * `chainingBehavior`, or as a language chain, which only executes `chainingBehavior`. + * + * expect(fooStr).to.be.foo('bar'); + * expect(fooStr).to.be.foo.equal('foo'); + * + * @param {Object} ctx object to which the method is added + * @param {String} name of method to add + * @param {Function} method function to be used for `name`, when called + * @param {Function} chainingBehavior function to be called every time the property is accessed + * @namespace Utils + * @name addChainableMethod + * @api public + */ + +module.exports = function (ctx, name, method, chainingBehavior) { + if (typeof chainingBehavior !== 'function') { + chainingBehavior = function () { }; + } + + var chainableBehavior = { + method: method + , chainingBehavior: chainingBehavior + }; + + // save the methods so we can overwrite them later, if we need to. + if (!ctx.__methods) { + ctx.__methods = {}; + } + ctx.__methods[name] = chainableBehavior; + + Object.defineProperty(ctx, name, + { get: function () { + chainableBehavior.chainingBehavior.call(this); + + var assert = function assert() { + var old_ssfi = flag(this, 'ssfi'); + if (old_ssfi && config.includeStack === false) + flag(this, 'ssfi', assert); + var result = chainableBehavior.method.apply(this, arguments); + return result === undefined ? this : result; + }; + + // Use `__proto__` if available + if (hasProtoSupport) { + // Inherit all properties from the object by replacing the `Function` prototype + var prototype = assert.__proto__ = Object.create(this); + // Restore the `call` and `apply` methods from `Function` + prototype.call = call; + prototype.apply = apply; + } + // Otherwise, redefine all properties (slow!) + else { + var asserterNames = Object.getOwnPropertyNames(ctx); + asserterNames.forEach(function (asserterName) { + if (!excludeNames.test(asserterName)) { + var pd = Object.getOwnPropertyDescriptor(ctx, asserterName); + Object.defineProperty(assert, asserterName, pd); + } + }); + } + + transferFlags(this, assert); + return assert; + } + , configurable: true + }); +}; + +},{"../config":4,"./flag":13,"./transferFlags":29}],10:[function(require,module,exports){ +/*! + * Chai - addMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +var config = require('../config'); + +/** + * ### .addMethod (ctx, name, method) + * + * Adds a method to the prototype of an object. + * + * utils.addMethod(chai.Assertion.prototype, 'foo', function (str) { + * var obj = utils.flag(this, 'object'); + * new chai.Assertion(obj).to.be.equal(str); + * }); + * + * Can also be accessed directly from `chai.Assertion`. + * + * chai.Assertion.addMethod('foo', fn); + * + * Then can be used as any other assertion. + * + * expect(fooStr).to.be.foo('bar'); + * + * @param {Object} ctx object to which the method is added + * @param {String} name of method to add + * @param {Function} method function to be used for name + * @namespace Utils + * @name addMethod + * @api public + */ +var flag = require('./flag'); + +module.exports = function (ctx, name, method) { + ctx[name] = function () { + var old_ssfi = flag(this, 'ssfi'); + if (old_ssfi && config.includeStack === false) + flag(this, 'ssfi', ctx[name]); + var result = method.apply(this, arguments); + return result === undefined ? this : result; + }; +}; + +},{"../config":4,"./flag":13}],11:[function(require,module,exports){ +/*! + * Chai - addProperty utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +var config = require('../config'); +var flag = require('./flag'); + +/** + * ### addProperty (ctx, name, getter) + * + * Adds a property to the prototype of an object. + * + * utils.addProperty(chai.Assertion.prototype, 'foo', function () { + * var obj = utils.flag(this, 'object'); + * new chai.Assertion(obj).to.be.instanceof(Foo); + * }); + * + * Can also be accessed directly from `chai.Assertion`. + * + * chai.Assertion.addProperty('foo', fn); + * + * Then can be used as any other assertion. + * + * expect(myFoo).to.be.foo; + * + * @param {Object} ctx object to which the property is added + * @param {String} name of property to add + * @param {Function} getter function to be used for name + * @namespace Utils + * @name addProperty + * @api public + */ + +module.exports = function (ctx, name, getter) { + Object.defineProperty(ctx, name, + { get: function addProperty() { + var old_ssfi = flag(this, 'ssfi'); + if (old_ssfi && config.includeStack === false) + flag(this, 'ssfi', addProperty); + + var result = getter.call(this); + return result === undefined ? this : result; + } + , configurable: true + }); +}; + +},{"../config":4,"./flag":13}],12:[function(require,module,exports){ +/*! + * Chai - expectTypes utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * ### expectTypes(obj, types) + * + * Ensures that the object being tested against is of a valid type. + * + * utils.expectTypes(this, ['array', 'object', 'string']); + * + * @param {Mixed} obj constructed Assertion + * @param {Array} type A list of allowed types for this assertion + * @namespace Utils + * @name expectTypes + * @api public + */ + +var AssertionError = require('assertion-error'); +var flag = require('./flag'); +var type = require('type-detect'); + +module.exports = function (obj, types) { + var obj = flag(obj, 'object'); + types = types.map(function (t) { return t.toLowerCase(); }); + types.sort(); + + // Transforms ['lorem', 'ipsum'] into 'a lirum, or an ipsum' + var str = types.map(function (t, index) { + var art = ~[ 'a', 'e', 'i', 'o', 'u' ].indexOf(t.charAt(0)) ? 'an' : 'a'; + var or = types.length > 1 && index === types.length - 1 ? 'or ' : ''; + return or + art + ' ' + t; + }).join(', '); + + if (!types.some(function (expected) { return type(obj) === expected; })) { + throw new AssertionError( + 'object tested must be ' + str + ', but ' + type(obj) + ' given' + ); + } +}; + +},{"./flag":13,"assertion-error":30,"type-detect":35}],13:[function(require,module,exports){ +/*! + * Chai - flag utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * ### flag(object, key, [value]) + * + * Get or set a flag value on an object. If a + * value is provided it will be set, else it will + * return the currently set value or `undefined` if + * the value is not set. + * + * utils.flag(this, 'foo', 'bar'); // setter + * utils.flag(this, 'foo'); // getter, returns `bar` + * + * @param {Object} object constructed Assertion + * @param {String} key + * @param {Mixed} value (optional) + * @namespace Utils + * @name flag + * @api private + */ + +module.exports = function (obj, key, value) { + var flags = obj.__flags || (obj.__flags = Object.create(null)); + if (arguments.length === 3) { + flags[key] = value; + } else { + return flags[key]; + } +}; + +},{}],14:[function(require,module,exports){ +/*! + * Chai - getActual utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * # getActual(object, [actual]) + * + * Returns the `actual` value for an Assertion + * + * @param {Object} object (constructed Assertion) + * @param {Arguments} chai.Assertion.prototype.assert arguments + * @namespace Utils + * @name getActual + */ + +module.exports = function (obj, args) { + return args.length > 4 ? args[4] : obj._obj; +}; + +},{}],15:[function(require,module,exports){ +/*! + * Chai - getEnumerableProperties utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * ### .getEnumerableProperties(object) + * + * This allows the retrieval of enumerable property names of an object, + * inherited or not. + * + * @param {Object} object + * @returns {Array} + * @namespace Utils + * @name getEnumerableProperties + * @api public + */ + +module.exports = function getEnumerableProperties(object) { + var result = []; + for (var name in object) { + result.push(name); + } + return result; +}; + +},{}],16:[function(require,module,exports){ +/*! + * Chai - message composition utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/*! + * Module dependancies + */ + +var flag = require('./flag') + , getActual = require('./getActual') + , inspect = require('./inspect') + , objDisplay = require('./objDisplay'); + +/** + * ### .getMessage(object, message, negateMessage) + * + * Construct the error message based on flags + * and template tags. Template tags will return + * a stringified inspection of the object referenced. + * + * Message template tags: + * - `#{this}` current asserted object + * - `#{act}` actual value + * - `#{exp}` expected value + * + * @param {Object} object (constructed Assertion) + * @param {Arguments} chai.Assertion.prototype.assert arguments + * @namespace Utils + * @name getMessage + * @api public + */ + +module.exports = function (obj, args) { + var negate = flag(obj, 'negate') + , val = flag(obj, 'object') + , expected = args[3] + , actual = getActual(obj, args) + , msg = negate ? args[2] : args[1] + , flagMsg = flag(obj, 'message'); + + if(typeof msg === "function") msg = msg(); + msg = msg || ''; + msg = msg + .replace(/#\{this\}/g, function () { return objDisplay(val); }) + .replace(/#\{act\}/g, function () { return objDisplay(actual); }) + .replace(/#\{exp\}/g, function () { return objDisplay(expected); }); + + return flagMsg ? flagMsg + ': ' + msg : msg; +}; + +},{"./flag":13,"./getActual":14,"./inspect":23,"./objDisplay":24}],17:[function(require,module,exports){ +/*! + * Chai - getName utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * # getName(func) + * + * Gets the name of a function, in a cross-browser way. + * + * @param {Function} a function (usually a constructor) + * @namespace Utils + * @name getName + */ + +module.exports = function (func) { + if (func.name) return func.name; + + var match = /^\s?function ([^(]*)\(/.exec(func); + return match && match[1] ? match[1] : ""; +}; + +},{}],18:[function(require,module,exports){ +/*! + * Chai - getPathInfo utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +var hasProperty = require('./hasProperty'); + +/** + * ### .getPathInfo(path, object) + * + * This allows the retrieval of property info in an + * object given a string path. + * + * The path info consists of an object with the + * following properties: + * + * * parent - The parent object of the property referenced by `path` + * * name - The name of the final property, a number if it was an array indexer + * * value - The value of the property, if it exists, otherwise `undefined` + * * exists - Whether the property exists or not + * + * @param {String} path + * @param {Object} object + * @returns {Object} info + * @namespace Utils + * @name getPathInfo + * @api public + */ + +module.exports = function getPathInfo(path, obj) { + var parsed = parsePath(path), + last = parsed[parsed.length - 1]; + + var info = { + parent: parsed.length > 1 ? _getPathValue(parsed, obj, parsed.length - 1) : obj, + name: last.p || last.i, + value: _getPathValue(parsed, obj) + }; + info.exists = hasProperty(info.name, info.parent); + + return info; +}; + + +/*! + * ## parsePath(path) + * + * Helper function used to parse string object + * paths. Use in conjunction with `_getPathValue`. + * + * var parsed = parsePath('myobject.property.subprop'); + * + * ### Paths: + * + * * Can be as near infinitely deep and nested + * * Arrays are also valid using the formal `myobject.document[3].property`. + * * Literal dots and brackets (not delimiter) must be backslash-escaped. + * + * @param {String} path + * @returns {Object} parsed + * @api private + */ + +function parsePath (path) { + var str = path.replace(/([^\\])\[/g, '$1.[') + , parts = str.match(/(\\\.|[^.]+?)+/g); + return parts.map(function (value) { + var re = /^\[(\d+)\]$/ + , mArr = re.exec(value); + if (mArr) return { i: parseFloat(mArr[1]) }; + else return { p: value.replace(/\\([.\[\]])/g, '$1') }; + }); +} + + +/*! + * ## _getPathValue(parsed, obj) + * + * Helper companion function for `.parsePath` that returns + * the value located at the parsed address. + * + * var value = getPathValue(parsed, obj); + * + * @param {Object} parsed definition from `parsePath`. + * @param {Object} object to search against + * @param {Number} object to search against + * @returns {Object|Undefined} value + * @api private + */ + +function _getPathValue (parsed, obj, index) { + var tmp = obj + , res; + + index = (index === undefined ? parsed.length : index); + + for (var i = 0, l = index; i < l; i++) { + var part = parsed[i]; + if (tmp) { + if ('undefined' !== typeof part.p) + tmp = tmp[part.p]; + else if ('undefined' !== typeof part.i) + tmp = tmp[part.i]; + if (i == (l - 1)) res = tmp; + } else { + res = undefined; + } + } + return res; +} + +},{"./hasProperty":21}],19:[function(require,module,exports){ +/*! + * Chai - getPathValue utility + * Copyright(c) 2012-2014 Jake Luer + * @see https://github.com/logicalparadox/filtr + * MIT Licensed + */ + +var getPathInfo = require('./getPathInfo'); + +/** + * ### .getPathValue(path, object) + * + * This allows the retrieval of values in an + * object given a string path. + * + * var obj = { + * prop1: { + * arr: ['a', 'b', 'c'] + * , str: 'Hello' + * } + * , prop2: { + * arr: [ { nested: 'Universe' } ] + * , str: 'Hello again!' + * } + * } + * + * The following would be the results. + * + * getPathValue('prop1.str', obj); // Hello + * getPathValue('prop1.att[2]', obj); // b + * getPathValue('prop2.arr[0].nested', obj); // Universe + * + * @param {String} path + * @param {Object} object + * @returns {Object} value or `undefined` + * @namespace Utils + * @name getPathValue + * @api public + */ +module.exports = function(path, obj) { + var info = getPathInfo(path, obj); + return info.value; +}; + +},{"./getPathInfo":18}],20:[function(require,module,exports){ +/*! + * Chai - getProperties utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * ### .getProperties(object) + * + * This allows the retrieval of property names of an object, enumerable or not, + * inherited or not. + * + * @param {Object} object + * @returns {Array} + * @namespace Utils + * @name getProperties + * @api public + */ + +module.exports = function getProperties(object) { + var result = Object.getOwnPropertyNames(object); + + function addProperty(property) { + if (result.indexOf(property) === -1) { + result.push(property); + } + } + + var proto = Object.getPrototypeOf(object); + while (proto !== null) { + Object.getOwnPropertyNames(proto).forEach(addProperty); + proto = Object.getPrototypeOf(proto); + } + + return result; +}; + +},{}],21:[function(require,module,exports){ +/*! + * Chai - hasProperty utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +var type = require('type-detect'); + +/** + * ### .hasProperty(object, name) + * + * This allows checking whether an object has + * named property or numeric array index. + * + * Basically does the same thing as the `in` + * operator but works properly with natives + * and null/undefined values. + * + * var obj = { + * arr: ['a', 'b', 'c'] + * , str: 'Hello' + * } + * + * The following would be the results. + * + * hasProperty('str', obj); // true + * hasProperty('constructor', obj); // true + * hasProperty('bar', obj); // false + * + * hasProperty('length', obj.str); // true + * hasProperty(1, obj.str); // true + * hasProperty(5, obj.str); // false + * + * hasProperty('length', obj.arr); // true + * hasProperty(2, obj.arr); // true + * hasProperty(3, obj.arr); // false + * + * @param {Objuect} object + * @param {String|Number} name + * @returns {Boolean} whether it exists + * @namespace Utils + * @name getPathInfo + * @api public + */ + +var literals = { + 'number': Number + , 'string': String +}; + +module.exports = function hasProperty(name, obj) { + var ot = type(obj); + + // Bad Object, obviously no props at all + if(ot === 'null' || ot === 'undefined') + return false; + + // The `in` operator does not work with certain literals + // box these before the check + if(literals[ot] && typeof obj !== 'object') + obj = new literals[ot](obj); + + return name in obj; +}; + +},{"type-detect":35}],22:[function(require,module,exports){ +/*! + * chai + * Copyright(c) 2011 Jake Luer + * MIT Licensed + */ + +/*! + * Main exports + */ + +var exports = module.exports = {}; + +/*! + * test utility + */ + +exports.test = require('./test'); + +/*! + * type utility + */ + +exports.type = require('type-detect'); + +/*! + * expectTypes utility + */ +exports.expectTypes = require('./expectTypes'); + +/*! + * message utility + */ + +exports.getMessage = require('./getMessage'); + +/*! + * actual utility + */ + +exports.getActual = require('./getActual'); + +/*! + * Inspect util + */ + +exports.inspect = require('./inspect'); + +/*! + * Object Display util + */ + +exports.objDisplay = require('./objDisplay'); + +/*! + * Flag utility + */ + +exports.flag = require('./flag'); + +/*! + * Flag transferring utility + */ + +exports.transferFlags = require('./transferFlags'); + +/*! + * Deep equal utility + */ + +exports.eql = require('deep-eql'); + +/*! + * Deep path value + */ + +exports.getPathValue = require('./getPathValue'); + +/*! + * Deep path info + */ + +exports.getPathInfo = require('./getPathInfo'); + +/*! + * Check if a property exists + */ + +exports.hasProperty = require('./hasProperty'); + +/*! + * Function name + */ + +exports.getName = require('./getName'); + +/*! + * add Property + */ + +exports.addProperty = require('./addProperty'); + +/*! + * add Method + */ + +exports.addMethod = require('./addMethod'); + +/*! + * overwrite Property + */ + +exports.overwriteProperty = require('./overwriteProperty'); + +/*! + * overwrite Method + */ + +exports.overwriteMethod = require('./overwriteMethod'); + +/*! + * Add a chainable method + */ + +exports.addChainableMethod = require('./addChainableMethod'); + +/*! + * Overwrite chainable method + */ + +exports.overwriteChainableMethod = require('./overwriteChainableMethod'); + +},{"./addChainableMethod":9,"./addMethod":10,"./addProperty":11,"./expectTypes":12,"./flag":13,"./getActual":14,"./getMessage":16,"./getName":17,"./getPathInfo":18,"./getPathValue":19,"./hasProperty":21,"./inspect":23,"./objDisplay":24,"./overwriteChainableMethod":25,"./overwriteMethod":26,"./overwriteProperty":27,"./test":28,"./transferFlags":29,"deep-eql":31,"type-detect":35}],23:[function(require,module,exports){ +// This is (almost) directly from Node.js utils +// https://github.com/joyent/node/blob/f8c335d0caf47f16d31413f89aa28eda3878e3aa/lib/util.js + +var getName = require('./getName'); +var getProperties = require('./getProperties'); +var getEnumerableProperties = require('./getEnumerableProperties'); + +module.exports = inspect; + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Boolean} showHidden Flag that shows hidden (not enumerable) + * properties of objects. + * @param {Number} depth Depth in which to descend in object. Default is 2. + * @param {Boolean} colors Flag to turn on ANSI escape codes to color the + * output. Default is false (no coloring). + * @namespace Utils + * @name inspect + */ +function inspect(obj, showHidden, depth, colors) { + var ctx = { + showHidden: showHidden, + seen: [], + stylize: function (str) { return str; } + }; + return formatValue(ctx, obj, (typeof depth === 'undefined' ? 2 : depth)); +} + +// Returns true if object is a DOM element. +var isDOMElement = function (object) { + if (typeof HTMLElement === 'object') { + return object instanceof HTMLElement; + } else { + return object && + typeof object === 'object' && + object.nodeType === 1 && + typeof object.nodeName === 'string'; + } +}; + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (value && typeof value.inspect === 'function' && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes); + if (typeof ret !== 'string') { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // If this is a DOM element, try to get the outer HTML. + if (isDOMElement(value)) { + if ('outerHTML' in value) { + return value.outerHTML; + // This value does not have an outerHTML attribute, + // it could still be an XML element + } else { + // Attempt to serialize it + try { + if (document.xmlVersion) { + var xmlSerializer = new XMLSerializer(); + return xmlSerializer.serializeToString(value); + } else { + // Firefox 11- do not support outerHTML + // It does, however, support innerHTML + // Use the following to render the element + var ns = "http://www.w3.org/1999/xhtml"; + var container = document.createElementNS(ns, '_'); + + container.appendChild(value.cloneNode(false)); + html = container.innerHTML + .replace('><', '>' + value.innerHTML + '<'); + container.innerHTML = ''; + return html; + } + } catch (err) { + // This could be a non-native DOM implementation, + // continue with the normal flow: + // printing the element as if it is an object. + } + } + } + + // Look up the keys of the object. + var visibleKeys = getEnumerableProperties(value); + var keys = ctx.showHidden ? getProperties(value) : visibleKeys; + + // Some type of object without properties can be shortcutted. + // In IE, errors have a single `stack` property, or if they are vanilla `Error`, + // a `stack` plus `description` property; ignore those for consistency. + if (keys.length === 0 || (isError(value) && ( + (keys.length === 1 && keys[0] === 'stack') || + (keys.length === 2 && keys[0] === 'description' && keys[1] === 'stack') + ))) { + if (typeof value === 'function') { + var name = getName(value); + var nameSuffix = name ? ': ' + name : ''; + return ctx.stylize('[Function' + nameSuffix + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toUTCString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (typeof value === 'function') { + var name = getName(value); + var nameSuffix = name ? ': ' + name : ''; + base = ' [Function' + nameSuffix + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + return formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + switch (typeof value) { + case 'undefined': + return ctx.stylize('undefined', 'undefined'); + + case 'string': + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + + case 'number': + if (value === 0 && (1/value) === -Infinity) { + return ctx.stylize('-0', 'number'); + } + return ctx.stylize('' + value, 'number'); + + case 'boolean': + return ctx.stylize('' + value, 'boolean'); + } + // For some reason typeof null is "object", so special case here. + if (value === null) { + return ctx.stylize('null', 'null'); + } +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (Object.prototype.hasOwnProperty.call(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str; + if (value.__lookupGetter__) { + if (value.__lookupGetter__(key)) { + if (value.__lookupSetter__(key)) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (value.__lookupSetter__(key)) { + str = ctx.stylize('[Setter]', 'special'); + } + } + } + if (visibleKeys.indexOf(key) < 0) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(value[key]) < 0) { + if (recurseTimes === null) { + str = formatValue(ctx, value[key], null); + } else { + str = formatValue(ctx, value[key], recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (typeof name === 'undefined') { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + +function isArray(ar) { + return Array.isArray(ar) || + (typeof ar === 'object' && objectToString(ar) === '[object Array]'); +} + +function isRegExp(re) { + return typeof re === 'object' && objectToString(re) === '[object RegExp]'; +} + +function isDate(d) { + return typeof d === 'object' && objectToString(d) === '[object Date]'; +} + +function isError(e) { + return typeof e === 'object' && objectToString(e) === '[object Error]'; +} + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + +},{"./getEnumerableProperties":15,"./getName":17,"./getProperties":20}],24:[function(require,module,exports){ +/*! + * Chai - flag utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/*! + * Module dependancies + */ + +var inspect = require('./inspect'); +var config = require('../config'); + +/** + * ### .objDisplay (object) + * + * Determines if an object or an array matches + * criteria to be inspected in-line for error + * messages or should be truncated. + * + * @param {Mixed} javascript object to inspect + * @name objDisplay + * @namespace Utils + * @api public + */ + +module.exports = function (obj) { + var str = inspect(obj) + , type = Object.prototype.toString.call(obj); + + if (config.truncateThreshold && str.length >= config.truncateThreshold) { + if (type === '[object Function]') { + return !obj.name || obj.name === '' + ? '[Function]' + : '[Function: ' + obj.name + ']'; + } else if (type === '[object Array]') { + return '[ Array(' + obj.length + ') ]'; + } else if (type === '[object Object]') { + var keys = Object.keys(obj) + , kstr = keys.length > 2 + ? keys.splice(0, 2).join(', ') + ', ...' + : keys.join(', '); + return '{ Object (' + kstr + ') }'; + } else { + return str; + } + } else { + return str; + } +}; + +},{"../config":4,"./inspect":23}],25:[function(require,module,exports){ +/*! + * Chai - overwriteChainableMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * ### overwriteChainableMethod (ctx, name, method, chainingBehavior) + * + * Overwites an already existing chainable method + * and provides access to the previous function or + * property. Must return functions to be used for + * name. + * + * utils.overwriteChainableMethod(chai.Assertion.prototype, 'length', + * function (_super) { + * } + * , function (_super) { + * } + * ); + * + * Can also be accessed directly from `chai.Assertion`. + * + * chai.Assertion.overwriteChainableMethod('foo', fn, fn); + * + * Then can be used as any other assertion. + * + * expect(myFoo).to.have.length(3); + * expect(myFoo).to.have.length.above(3); + * + * @param {Object} ctx object whose method / property is to be overwritten + * @param {String} name of method / property to overwrite + * @param {Function} method function that returns a function to be used for name + * @param {Function} chainingBehavior function that returns a function to be used for property + * @namespace Utils + * @name overwriteChainableMethod + * @api public + */ + +module.exports = function (ctx, name, method, chainingBehavior) { + var chainableBehavior = ctx.__methods[name]; + + var _chainingBehavior = chainableBehavior.chainingBehavior; + chainableBehavior.chainingBehavior = function () { + var result = chainingBehavior(_chainingBehavior).call(this); + return result === undefined ? this : result; + }; + + var _method = chainableBehavior.method; + chainableBehavior.method = function () { + var result = method(_method).apply(this, arguments); + return result === undefined ? this : result; + }; +}; + +},{}],26:[function(require,module,exports){ +/*! + * Chai - overwriteMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * ### overwriteMethod (ctx, name, fn) + * + * Overwites an already existing method and provides + * access to previous function. Must return function + * to be used for name. + * + * utils.overwriteMethod(chai.Assertion.prototype, 'equal', function (_super) { + * return function (str) { + * var obj = utils.flag(this, 'object'); + * if (obj instanceof Foo) { + * new chai.Assertion(obj.value).to.equal(str); + * } else { + * _super.apply(this, arguments); + * } + * } + * }); + * + * Can also be accessed directly from `chai.Assertion`. + * + * chai.Assertion.overwriteMethod('foo', fn); + * + * Then can be used as any other assertion. + * + * expect(myFoo).to.equal('bar'); + * + * @param {Object} ctx object whose method is to be overwritten + * @param {String} name of method to overwrite + * @param {Function} method function that returns a function to be used for name + * @namespace Utils + * @name overwriteMethod + * @api public + */ + +module.exports = function (ctx, name, method) { + var _method = ctx[name] + , _super = function () { return this; }; + + if (_method && 'function' === typeof _method) + _super = _method; + + ctx[name] = function () { + var result = method(_super).apply(this, arguments); + return result === undefined ? this : result; + } +}; + +},{}],27:[function(require,module,exports){ +/*! + * Chai - overwriteProperty utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * ### overwriteProperty (ctx, name, fn) + * + * Overwites an already existing property getter and provides + * access to previous value. Must return function to use as getter. + * + * utils.overwriteProperty(chai.Assertion.prototype, 'ok', function (_super) { + * return function () { + * var obj = utils.flag(this, 'object'); + * if (obj instanceof Foo) { + * new chai.Assertion(obj.name).to.equal('bar'); + * } else { + * _super.call(this); + * } + * } + * }); + * + * + * Can also be accessed directly from `chai.Assertion`. + * + * chai.Assertion.overwriteProperty('foo', fn); + * + * Then can be used as any other assertion. + * + * expect(myFoo).to.be.ok; + * + * @param {Object} ctx object whose property is to be overwritten + * @param {String} name of property to overwrite + * @param {Function} getter function that returns a getter function to be used for name + * @namespace Utils + * @name overwriteProperty + * @api public + */ + +module.exports = function (ctx, name, getter) { + var _get = Object.getOwnPropertyDescriptor(ctx, name) + , _super = function () {}; + + if (_get && 'function' === typeof _get.get) + _super = _get.get + + Object.defineProperty(ctx, name, + { get: function () { + var result = getter(_super).call(this); + return result === undefined ? this : result; + } + , configurable: true + }); +}; + +},{}],28:[function(require,module,exports){ +/*! + * Chai - test utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/*! + * Module dependancies + */ + +var flag = require('./flag'); + +/** + * # test(object, expression) + * + * Test and object for expression. + * + * @param {Object} object (constructed Assertion) + * @param {Arguments} chai.Assertion.prototype.assert arguments + * @namespace Utils + * @name test + */ + +module.exports = function (obj, args) { + var negate = flag(obj, 'negate') + , expr = args[0]; + return negate ? !expr : expr; +}; + +},{"./flag":13}],29:[function(require,module,exports){ +/*! + * Chai - transferFlags utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * ### transferFlags(assertion, object, includeAll = true) + * + * Transfer all the flags for `assertion` to `object`. If + * `includeAll` is set to `false`, then the base Chai + * assertion flags (namely `object`, `ssfi`, and `message`) + * will not be transferred. + * + * + * var newAssertion = new Assertion(); + * utils.transferFlags(assertion, newAssertion); + * + * var anotherAsseriton = new Assertion(myObj); + * utils.transferFlags(assertion, anotherAssertion, false); + * + * @param {Assertion} assertion the assertion to transfer the flags from + * @param {Object} object the object to transfer the flags to; usually a new assertion + * @param {Boolean} includeAll + * @namespace Utils + * @name transferFlags + * @api private + */ + +module.exports = function (assertion, object, includeAll) { + var flags = assertion.__flags || (assertion.__flags = Object.create(null)); + + if (!object.__flags) { + object.__flags = Object.create(null); + } + + includeAll = arguments.length === 3 ? includeAll : true; + + for (var flag in flags) { + if (includeAll || + (flag !== 'object' && flag !== 'ssfi' && flag != 'message')) { + object.__flags[flag] = flags[flag]; + } + } +}; + +},{}],30:[function(require,module,exports){ +/*! + * assertion-error + * Copyright(c) 2013 Jake Luer + * MIT Licensed + */ + +/*! + * Return a function that will copy properties from + * one object to another excluding any originally + * listed. Returned function will create a new `{}`. + * + * @param {String} excluded properties ... + * @return {Function} + */ + +function exclude () { + var excludes = [].slice.call(arguments); + + function excludeProps (res, obj) { + Object.keys(obj).forEach(function (key) { + if (!~excludes.indexOf(key)) res[key] = obj[key]; + }); + } + + return function extendExclude () { + var args = [].slice.call(arguments) + , i = 0 + , res = {}; + + for (; i < args.length; i++) { + excludeProps(res, args[i]); + } + + return res; + }; +}; + +/*! + * Primary Exports + */ + +module.exports = AssertionError; + +/** + * ### AssertionError + * + * An extension of the JavaScript `Error` constructor for + * assertion and validation scenarios. + * + * @param {String} message + * @param {Object} properties to include (optional) + * @param {callee} start stack function (optional) + */ + +function AssertionError (message, _props, ssf) { + var extend = exclude('name', 'message', 'stack', 'constructor', 'toJSON') + , props = extend(_props || {}); + + // default values + this.message = message || 'Unspecified AssertionError'; + this.showDiff = false; + + // copy from properties + for (var key in props) { + this[key] = props[key]; + } + + // capture stack trace + ssf = ssf || arguments.callee; + if (ssf && Error.captureStackTrace) { + Error.captureStackTrace(this, ssf); + } else { + this.stack = new Error().stack; + } +} + +/*! + * Inherit from Error.prototype + */ + +AssertionError.prototype = Object.create(Error.prototype); + +/*! + * Statically set name + */ + +AssertionError.prototype.name = 'AssertionError'; + +/*! + * Ensure correct constructor + */ + +AssertionError.prototype.constructor = AssertionError; + +/** + * Allow errors to be converted to JSON for static transfer. + * + * @param {Boolean} include stack (default: `true`) + * @return {Object} object that can be `JSON.stringify` + */ + +AssertionError.prototype.toJSON = function (stack) { + var extend = exclude('constructor', 'toJSON', 'stack') + , props = extend({ name: this.name }, this); + + // include stack if exists and not turned off + if (false !== stack && this.stack) { + props.stack = this.stack; + } + + return props; +}; + +},{}],31:[function(require,module,exports){ +module.exports = require('./lib/eql'); + +},{"./lib/eql":32}],32:[function(require,module,exports){ +/*! + * deep-eql + * Copyright(c) 2013 Jake Luer + * MIT Licensed + */ + +/*! + * Module dependencies + */ + +var type = require('type-detect'); + +/*! + * Buffer.isBuffer browser shim + */ + +var Buffer; +try { Buffer = require('buffer').Buffer; } +catch(ex) { + Buffer = {}; + Buffer.isBuffer = function() { return false; } +} + +/*! + * Primary Export + */ + +module.exports = deepEqual; + +/** + * Assert super-strict (egal) equality between + * two objects of any type. + * + * @param {Mixed} a + * @param {Mixed} b + * @param {Array} memoised (optional) + * @return {Boolean} equal match + */ + +function deepEqual(a, b, m) { + if (sameValue(a, b)) { + return true; + } else if ('date' === type(a)) { + return dateEqual(a, b); + } else if ('regexp' === type(a)) { + return regexpEqual(a, b); + } else if (Buffer.isBuffer(a)) { + return bufferEqual(a, b); + } else if ('arguments' === type(a)) { + return argumentsEqual(a, b, m); + } else if (!typeEqual(a, b)) { + return false; + } else if (('object' !== type(a) && 'object' !== type(b)) + && ('array' !== type(a) && 'array' !== type(b))) { + return sameValue(a, b); + } else { + return objectEqual(a, b, m); + } +} + +/*! + * Strict (egal) equality test. Ensures that NaN always + * equals NaN and `-0` does not equal `+0`. + * + * @param {Mixed} a + * @param {Mixed} b + * @return {Boolean} equal match + */ + +function sameValue(a, b) { + if (a === b) return a !== 0 || 1 / a === 1 / b; + return a !== a && b !== b; +} + +/*! + * Compare the types of two given objects and + * return if they are equal. Note that an Array + * has a type of `array` (not `object`) and arguments + * have a type of `arguments` (not `array`/`object`). + * + * @param {Mixed} a + * @param {Mixed} b + * @return {Boolean} result + */ + +function typeEqual(a, b) { + return type(a) === type(b); +} + +/*! + * Compare two Date objects by asserting that + * the time values are equal using `saveValue`. + * + * @param {Date} a + * @param {Date} b + * @return {Boolean} result + */ + +function dateEqual(a, b) { + if ('date' !== type(b)) return false; + return sameValue(a.getTime(), b.getTime()); +} + +/*! + * Compare two regular expressions by converting them + * to string and checking for `sameValue`. + * + * @param {RegExp} a + * @param {RegExp} b + * @return {Boolean} result + */ + +function regexpEqual(a, b) { + if ('regexp' !== type(b)) return false; + return sameValue(a.toString(), b.toString()); +} + +/*! + * Assert deep equality of two `arguments` objects. + * Unfortunately, these must be sliced to arrays + * prior to test to ensure no bad behavior. + * + * @param {Arguments} a + * @param {Arguments} b + * @param {Array} memoize (optional) + * @return {Boolean} result + */ + +function argumentsEqual(a, b, m) { + if ('arguments' !== type(b)) return false; + a = [].slice.call(a); + b = [].slice.call(b); + return deepEqual(a, b, m); +} + +/*! + * Get enumerable properties of a given object. + * + * @param {Object} a + * @return {Array} property names + */ + +function enumerable(a) { + var res = []; + for (var key in a) res.push(key); + return res; +} + +/*! + * Simple equality for flat iterable objects + * such as Arrays or Node.js buffers. + * + * @param {Iterable} a + * @param {Iterable} b + * @return {Boolean} result + */ + +function iterableEqual(a, b) { + if (a.length !== b.length) return false; + + var i = 0; + var match = true; + + for (; i < a.length; i++) { + if (a[i] !== b[i]) { + match = false; + break; + } + } + + return match; +} + +/*! + * Extension to `iterableEqual` specifically + * for Node.js Buffers. + * + * @param {Buffer} a + * @param {Mixed} b + * @return {Boolean} result + */ + +function bufferEqual(a, b) { + if (!Buffer.isBuffer(b)) return false; + return iterableEqual(a, b); +} + +/*! + * Block for `objectEqual` ensuring non-existing + * values don't get in. + * + * @param {Mixed} object + * @return {Boolean} result + */ + +function isValue(a) { + return a !== null && a !== undefined; +} + +/*! + * Recursively check the equality of two objects. + * Once basic sameness has been established it will + * defer to `deepEqual` for each enumerable key + * in the object. + * + * @param {Mixed} a + * @param {Mixed} b + * @return {Boolean} result + */ + +function objectEqual(a, b, m) { + if (!isValue(a) || !isValue(b)) { + return false; + } + + if (a.prototype !== b.prototype) { + return false; + } + + var i; + if (m) { + for (i = 0; i < m.length; i++) { + if ((m[i][0] === a && m[i][1] === b) + || (m[i][0] === b && m[i][1] === a)) { + return true; + } + } + } else { + m = []; + } + + try { + var ka = enumerable(a); + var kb = enumerable(b); + } catch (ex) { + return false; + } + + ka.sort(); + kb.sort(); + + if (!iterableEqual(ka, kb)) { + return false; + } + + m.push([ a, b ]); + + var key; + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!deepEqual(a[key], b[key], m)) { + return false; + } + } + + return true; +} + +},{"buffer":undefined,"type-detect":33}],33:[function(require,module,exports){ +module.exports = require('./lib/type'); + +},{"./lib/type":34}],34:[function(require,module,exports){ +/*! + * type-detect + * Copyright(c) 2013 jake luer + * MIT Licensed + */ + +/*! + * Primary Exports + */ + +var exports = module.exports = getType; + +/*! + * Detectable javascript natives + */ + +var natives = { + '[object Array]': 'array' + , '[object RegExp]': 'regexp' + , '[object Function]': 'function' + , '[object Arguments]': 'arguments' + , '[object Date]': 'date' +}; + +/** + * ### typeOf (obj) + * + * Use several different techniques to determine + * the type of object being tested. + * + * + * @param {Mixed} object + * @return {String} object type + * @api public + */ + +function getType (obj) { + var str = Object.prototype.toString.call(obj); + if (natives[str]) return natives[str]; + if (obj === null) return 'null'; + if (obj === undefined) return 'undefined'; + if (obj === Object(obj)) return 'object'; + return typeof obj; +} + +exports.Library = Library; + +/** + * ### Library + * + * Create a repository for custom type detection. + * + * ```js + * var lib = new type.Library; + * ``` + * + */ + +function Library () { + this.tests = {}; +} + +/** + * #### .of (obj) + * + * Expose replacement `typeof` detection to the library. + * + * ```js + * if ('string' === lib.of('hello world')) { + * // ... + * } + * ``` + * + * @param {Mixed} object to test + * @return {String} type + */ + +Library.prototype.of = getType; + +/** + * #### .define (type, test) + * + * Add a test to for the `.test()` assertion. + * + * Can be defined as a regular expression: + * + * ```js + * lib.define('int', /^[0-9]+$/); + * ``` + * + * ... or as a function: + * + * ```js + * lib.define('bln', function (obj) { + * if ('boolean' === lib.of(obj)) return true; + * var blns = [ 'yes', 'no', 'true', 'false', 1, 0 ]; + * if ('string' === lib.of(obj)) obj = obj.toLowerCase(); + * return !! ~blns.indexOf(obj); + * }); + * ``` + * + * @param {String} type + * @param {RegExp|Function} test + * @api public + */ + +Library.prototype.define = function (type, test) { + if (arguments.length === 1) return this.tests[type]; + this.tests[type] = test; + return this; +}; + +/** + * #### .test (obj, test) + * + * Assert that an object is of type. Will first + * check natives, and if that does not pass it will + * use the user defined custom tests. + * + * ```js + * assert(lib.test('1', 'int')); + * assert(lib.test('yes', 'bln')); + * ``` + * + * @param {Mixed} object + * @param {String} type + * @return {Boolean} result + * @api public + */ + +Library.prototype.test = function (obj, type) { + if (type === getType(obj)) return true; + var test = this.tests[type]; + + if (test && 'regexp' === getType(test)) { + return test.test(obj); + } else if (test && 'function' === getType(test)) { + return test(obj); + } else { + throw new ReferenceError('Type test "' + type + '" not defined or invalid.'); + } +}; + +},{}],35:[function(require,module,exports){ +arguments[4][33][0].apply(exports,arguments) +},{"./lib/type":36,"dup":33}],36:[function(require,module,exports){ +/*! + * type-detect + * Copyright(c) 2013 jake luer + * MIT Licensed + */ + +/*! + * Primary Exports + */ + +var exports = module.exports = getType; + +/** + * ### typeOf (obj) + * + * Use several different techniques to determine + * the type of object being tested. + * + * + * @param {Mixed} object + * @return {String} object type + * @api public + */ +var objectTypeRegexp = /^\[object (.*)\]$/; + +function getType(obj) { + var type = Object.prototype.toString.call(obj).match(objectTypeRegexp)[1].toLowerCase(); + // Let "new String('')" return 'object' + if (typeof Promise === 'function' && obj instanceof Promise) return 'promise'; + // PhantomJS has type "DOMWindow" for null + if (obj === null) return 'null'; + // PhantomJS has type "DOMWindow" for undefined + if (obj === undefined) return 'undefined'; + return type; +} + +exports.Library = Library; + +/** + * ### Library + * + * Create a repository for custom type detection. + * + * ```js + * var lib = new type.Library; + * ``` + * + */ + +function Library() { + if (!(this instanceof Library)) return new Library(); + this.tests = {}; +} + +/** + * #### .of (obj) + * + * Expose replacement `typeof` detection to the library. + * + * ```js + * if ('string' === lib.of('hello world')) { + * // ... + * } + * ``` + * + * @param {Mixed} object to test + * @return {String} type + */ + +Library.prototype.of = getType; + +/** + * #### .define (type, test) + * + * Add a test to for the `.test()` assertion. + * + * Can be defined as a regular expression: + * + * ```js + * lib.define('int', /^[0-9]+$/); + * ``` + * + * ... or as a function: + * + * ```js + * lib.define('bln', function (obj) { + * if ('boolean' === lib.of(obj)) return true; + * var blns = [ 'yes', 'no', 'true', 'false', 1, 0 ]; + * if ('string' === lib.of(obj)) obj = obj.toLowerCase(); + * return !! ~blns.indexOf(obj); + * }); + * ``` + * + * @param {String} type + * @param {RegExp|Function} test + * @api public + */ + +Library.prototype.define = function(type, test) { + if (arguments.length === 1) return this.tests[type]; + this.tests[type] = test; + return this; +}; + +/** + * #### .test (obj, test) + * + * Assert that an object is of type. Will first + * check natives, and if that does not pass it will + * use the user defined custom tests. + * + * ```js + * assert(lib.test('1', 'int')); + * assert(lib.test('yes', 'bln')); + * ``` + * + * @param {Mixed} object + * @param {String} type + * @return {Boolean} result + * @api public + */ + +Library.prototype.test = function(obj, type) { + if (type === getType(obj)) return true; + var test = this.tests[type]; + + if (test && 'regexp' === getType(test)) { + return test.test(obj); + } else if (test && 'function' === getType(test)) { + return test(obj); + } else { + throw new ReferenceError('Type test "' + type + '" not defined or invalid.'); + } +}; + +},{}]},{},[1])(1) +}); \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/index.js new file mode 100644 index 00000000..634483b0 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/chai'); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/karma.conf.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/karma.conf.js new file mode 100644 index 00000000..48cf5419 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/karma.conf.js @@ -0,0 +1,28 @@ +module.exports = function(config) { + config.set({ + frameworks: [ 'mocha' ] + , files: [ + 'chai.js' + , 'test/bootstrap/karma.js' + , 'test/*.js' + ] + , reporters: [ 'progress' ] + , colors: true + , logLevel: config.LOG_INFO + , autoWatch: false + , browsers: [ 'PhantomJS' ] + , browserDisconnectTimeout: 10000 + , browserDisconnectTolerance: 2 + , browserNoActivityTimeout: 20000 + , singleRun: true + }); + + switch (process.env.CHAI_TEST_ENV) { + case 'sauce': + require('./karma.sauce')(config); + break; + default: + // ... + break; + }; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/karma.sauce.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/karma.sauce.js new file mode 100644 index 00000000..e57d5e0d --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/karma.sauce.js @@ -0,0 +1,41 @@ +var version = require('./package.json').version; +var ts = new Date().getTime(); + +module.exports = function(config) { + var auth; + + try { + auth = require('./test/auth/index'); + } catch(ex) { + auth = {}; + auth.SAUCE_USERNAME = process.env.SAUCE_USERNAME || null; + auth.SAUCE_ACCESS_KEY = process.env.SAUCE_ACCESS_KEY || null; + } + + if (!auth.SAUCE_USERNAME || !auth.SAUCE_ACCESS_KEY) return; + if (process.env.SKIP_SAUCE) return; + + var branch = process.env.TRAVIS_BRANCH || 'local' + var browserConfig = require('./sauce.browsers'); + var browsers = Object.keys(browserConfig); + var tags = [ 'chaijs_' + version, auth.SAUCE_USERNAME + '@' + branch ]; + var tunnel = process.env.TRAVIS_JOB_NUMBER || ts; + + if (process.env.TRAVIS_JOB_NUMBER) { + tags.push('travis@' + process.env.TRAVIS_JOB_NUMBER); + } + + config.browsers = config.browsers.concat(browsers); + config.customLaunchers = browserConfig; + config.reporters.push('saucelabs'); + config.transports = [ 'xhr-polling' ]; + + config.sauceLabs = { + username: auth.SAUCE_USERNAME + , accessKey: auth.SAUCE_ACCESS_KEY + , startConnect: true + , tags: tags + , testName: 'ChaiJS' + , tunnelIdentifier: tunnel + }; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai.js new file mode 100644 index 00000000..888b485a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai.js @@ -0,0 +1,93 @@ +/*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + */ + +var used = [] + , exports = module.exports = {}; + +/*! + * Chai version + */ + +exports.version = '3.5.0'; + +/*! + * Assertion Error + */ + +exports.AssertionError = require('assertion-error'); + +/*! + * Utils for plugins (not exported) + */ + +var util = require('./chai/utils'); + +/** + * # .use(function) + * + * Provides a way to extend the internals of Chai + * + * @param {Function} + * @returns {this} for chaining + * @api public + */ + +exports.use = function (fn) { + if (!~used.indexOf(fn)) { + fn(this, util); + used.push(fn); + } + + return this; +}; + +/*! + * Utility Functions + */ + +exports.util = util; + +/*! + * Configuration + */ + +var config = require('./chai/config'); +exports.config = config; + +/*! + * Primary `Assertion` prototype + */ + +var assertion = require('./chai/assertion'); +exports.use(assertion); + +/*! + * Core Assertions + */ + +var core = require('./chai/core/assertions'); +exports.use(core); + +/*! + * Expect interface + */ + +var expect = require('./chai/interface/expect'); +exports.use(expect); + +/*! + * Should interface + */ + +var should = require('./chai/interface/should'); +exports.use(should); + +/*! + * Assert interface + */ + +var assert = require('./chai/interface/assert'); +exports.use(assert); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/assertion.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/assertion.js new file mode 100644 index 00000000..b7a7fb5e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/assertion.js @@ -0,0 +1,131 @@ +/*! + * chai + * http://chaijs.com + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + */ + +var config = require('./config'); + +module.exports = function (_chai, util) { + /*! + * Module dependencies. + */ + + var AssertionError = _chai.AssertionError + , flag = util.flag; + + /*! + * Module export. + */ + + _chai.Assertion = Assertion; + + /*! + * Assertion Constructor + * + * Creates object for chaining. + * + * @api private + */ + + function Assertion (obj, msg, stack) { + flag(this, 'ssfi', stack || arguments.callee); + flag(this, 'object', obj); + flag(this, 'message', msg); + } + + Object.defineProperty(Assertion, 'includeStack', { + get: function() { + console.warn('Assertion.includeStack is deprecated, use chai.config.includeStack instead.'); + return config.includeStack; + }, + set: function(value) { + console.warn('Assertion.includeStack is deprecated, use chai.config.includeStack instead.'); + config.includeStack = value; + } + }); + + Object.defineProperty(Assertion, 'showDiff', { + get: function() { + console.warn('Assertion.showDiff is deprecated, use chai.config.showDiff instead.'); + return config.showDiff; + }, + set: function(value) { + console.warn('Assertion.showDiff is deprecated, use chai.config.showDiff instead.'); + config.showDiff = value; + } + }); + + Assertion.addProperty = function (name, fn) { + util.addProperty(this.prototype, name, fn); + }; + + Assertion.addMethod = function (name, fn) { + util.addMethod(this.prototype, name, fn); + }; + + Assertion.addChainableMethod = function (name, fn, chainingBehavior) { + util.addChainableMethod(this.prototype, name, fn, chainingBehavior); + }; + + Assertion.overwriteProperty = function (name, fn) { + util.overwriteProperty(this.prototype, name, fn); + }; + + Assertion.overwriteMethod = function (name, fn) { + util.overwriteMethod(this.prototype, name, fn); + }; + + Assertion.overwriteChainableMethod = function (name, fn, chainingBehavior) { + util.overwriteChainableMethod(this.prototype, name, fn, chainingBehavior); + }; + + /** + * ### .assert(expression, message, negateMessage, expected, actual, showDiff) + * + * Executes an expression and check expectations. Throws AssertionError for reporting if test doesn't pass. + * + * @name assert + * @param {Philosophical} expression to be tested + * @param {String|Function} message or function that returns message to display if expression fails + * @param {String|Function} negatedMessage or function that returns negatedMessage to display if negated expression fails + * @param {Mixed} expected value (remember to check for negation) + * @param {Mixed} actual (optional) will default to `this.obj` + * @param {Boolean} showDiff (optional) when set to `true`, assert will display a diff in addition to the message if expression fails + * @api private + */ + + Assertion.prototype.assert = function (expr, msg, negateMsg, expected, _actual, showDiff) { + var ok = util.test(this, arguments); + if (true !== showDiff) showDiff = false; + if (true !== config.showDiff) showDiff = false; + + if (!ok) { + var msg = util.getMessage(this, arguments) + , actual = util.getActual(this, arguments); + throw new AssertionError(msg, { + actual: actual + , expected: expected + , showDiff: showDiff + }, (config.includeStack) ? this.assert : flag(this, 'ssfi')); + } + }; + + /*! + * ### ._obj + * + * Quick reference to stored `actual` value for plugin developers. + * + * @api private + */ + + Object.defineProperty(Assertion.prototype, '_obj', + { get: function () { + return flag(this, 'object'); + } + , set: function (val) { + flag(this, 'object', val); + } + }); +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/config.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/config.js new file mode 100644 index 00000000..e6f38fff --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/config.js @@ -0,0 +1,55 @@ +module.exports = { + + /** + * ### config.includeStack + * + * User configurable property, influences whether stack trace + * is included in Assertion error message. Default of false + * suppresses stack trace in the error message. + * + * chai.config.includeStack = true; // enable stack on error + * + * @param {Boolean} + * @api public + */ + + includeStack: false, + + /** + * ### config.showDiff + * + * User configurable property, influences whether or not + * the `showDiff` flag should be included in the thrown + * AssertionErrors. `false` will always be `false`; `true` + * will be true when the assertion has requested a diff + * be shown. + * + * @param {Boolean} + * @api public + */ + + showDiff: true, + + /** + * ### config.truncateThreshold + * + * User configurable property, sets length threshold for actual and + * expected values in assertion errors. If this threshold is exceeded, for + * example for large data structures, the value is replaced with something + * like `[ Array(3) ]` or `{ Object (prop1, prop2) }`. + * + * Set it to zero if you want to disable truncating altogether. + * + * This is especially userful when doing assertions on arrays: having this + * set to a reasonable large value makes the failure messages readily + * inspectable. + * + * chai.config.truncateThreshold = 0; // disable truncating + * + * @param {Number} + * @api public + */ + + truncateThreshold: 40 + +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/core/assertions.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/core/assertions.js new file mode 100644 index 00000000..072718e8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/core/assertions.js @@ -0,0 +1,1860 @@ +/*! + * chai + * http://chaijs.com + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + */ + +module.exports = function (chai, _) { + var Assertion = chai.Assertion + , toString = Object.prototype.toString + , flag = _.flag; + + /** + * ### Language Chains + * + * The following are provided as chainable getters to + * improve the readability of your assertions. They + * do not provide testing capabilities unless they + * have been overwritten by a plugin. + * + * **Chains** + * + * - to + * - be + * - been + * - is + * - that + * - which + * - and + * - has + * - have + * - with + * - at + * - of + * - same + * + * @name language chains + * @namespace BDD + * @api public + */ + + [ 'to', 'be', 'been' + , 'is', 'and', 'has', 'have' + , 'with', 'that', 'which', 'at' + , 'of', 'same' ].forEach(function (chain) { + Assertion.addProperty(chain, function () { + return this; + }); + }); + + /** + * ### .not + * + * Negates any of assertions following in the chain. + * + * expect(foo).to.not.equal('bar'); + * expect(goodFn).to.not.throw(Error); + * expect({ foo: 'baz' }).to.have.property('foo') + * .and.not.equal('bar'); + * + * @name not + * @namespace BDD + * @api public + */ + + Assertion.addProperty('not', function () { + flag(this, 'negate', true); + }); + + /** + * ### .deep + * + * Sets the `deep` flag, later used by the `equal` and + * `property` assertions. + * + * expect(foo).to.deep.equal({ bar: 'baz' }); + * expect({ foo: { bar: { baz: 'quux' } } }) + * .to.have.deep.property('foo.bar.baz', 'quux'); + * + * `.deep.property` special characters can be escaped + * by adding two slashes before the `.` or `[]`. + * + * var deepCss = { '.link': { '[target]': 42 }}; + * expect(deepCss).to.have.deep.property('\\.link.\\[target\\]', 42); + * + * @name deep + * @namespace BDD + * @api public + */ + + Assertion.addProperty('deep', function () { + flag(this, 'deep', true); + }); + + /** + * ### .any + * + * Sets the `any` flag, (opposite of the `all` flag) + * later used in the `keys` assertion. + * + * expect(foo).to.have.any.keys('bar', 'baz'); + * + * @name any + * @namespace BDD + * @api public + */ + + Assertion.addProperty('any', function () { + flag(this, 'any', true); + flag(this, 'all', false) + }); + + + /** + * ### .all + * + * Sets the `all` flag (opposite of the `any` flag) + * later used by the `keys` assertion. + * + * expect(foo).to.have.all.keys('bar', 'baz'); + * + * @name all + * @namespace BDD + * @api public + */ + + Assertion.addProperty('all', function () { + flag(this, 'all', true); + flag(this, 'any', false); + }); + + /** + * ### .a(type) + * + * The `a` and `an` assertions are aliases that can be + * used either as language chains or to assert a value's + * type. + * + * // typeof + * expect('test').to.be.a('string'); + * expect({ foo: 'bar' }).to.be.an('object'); + * expect(null).to.be.a('null'); + * expect(undefined).to.be.an('undefined'); + * expect(new Error).to.be.an('error'); + * expect(new Promise).to.be.a('promise'); + * expect(new Float32Array()).to.be.a('float32array'); + * expect(Symbol()).to.be.a('symbol'); + * + * // es6 overrides + * expect({[Symbol.toStringTag]:()=>'foo'}).to.be.a('foo'); + * + * // language chain + * expect(foo).to.be.an.instanceof(Foo); + * + * @name a + * @alias an + * @param {String} type + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function an (type, msg) { + if (msg) flag(this, 'message', msg); + type = type.toLowerCase(); + var obj = flag(this, 'object') + , article = ~[ 'a', 'e', 'i', 'o', 'u' ].indexOf(type.charAt(0)) ? 'an ' : 'a '; + + this.assert( + type === _.type(obj) + , 'expected #{this} to be ' + article + type + , 'expected #{this} not to be ' + article + type + ); + } + + Assertion.addChainableMethod('an', an); + Assertion.addChainableMethod('a', an); + + /** + * ### .include(value) + * + * The `include` and `contain` assertions can be used as either property + * based language chains or as methods to assert the inclusion of an object + * in an array or a substring in a string. When used as language chains, + * they toggle the `contains` flag for the `keys` assertion. + * + * expect([1,2,3]).to.include(2); + * expect('foobar').to.contain('foo'); + * expect({ foo: 'bar', hello: 'universe' }).to.include.keys('foo'); + * + * @name include + * @alias contain + * @alias includes + * @alias contains + * @param {Object|String|Number} obj + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function includeChainingBehavior () { + flag(this, 'contains', true); + } + + function include (val, msg) { + _.expectTypes(this, ['array', 'object', 'string']); + + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + var expected = false; + + if (_.type(obj) === 'array' && _.type(val) === 'object') { + for (var i in obj) { + if (_.eql(obj[i], val)) { + expected = true; + break; + } + } + } else if (_.type(val) === 'object') { + if (!flag(this, 'negate')) { + for (var k in val) new Assertion(obj).property(k, val[k]); + return; + } + var subset = {}; + for (var k in val) subset[k] = obj[k]; + expected = _.eql(subset, val); + } else { + expected = (obj != undefined) && ~obj.indexOf(val); + } + this.assert( + expected + , 'expected #{this} to include ' + _.inspect(val) + , 'expected #{this} to not include ' + _.inspect(val)); + } + + Assertion.addChainableMethod('include', include, includeChainingBehavior); + Assertion.addChainableMethod('contain', include, includeChainingBehavior); + Assertion.addChainableMethod('contains', include, includeChainingBehavior); + Assertion.addChainableMethod('includes', include, includeChainingBehavior); + + /** + * ### .ok + * + * Asserts that the target is truthy. + * + * expect('everything').to.be.ok; + * expect(1).to.be.ok; + * expect(false).to.not.be.ok; + * expect(undefined).to.not.be.ok; + * expect(null).to.not.be.ok; + * + * @name ok + * @namespace BDD + * @api public + */ + + Assertion.addProperty('ok', function () { + this.assert( + flag(this, 'object') + , 'expected #{this} to be truthy' + , 'expected #{this} to be falsy'); + }); + + /** + * ### .true + * + * Asserts that the target is `true`. + * + * expect(true).to.be.true; + * expect(1).to.not.be.true; + * + * @name true + * @namespace BDD + * @api public + */ + + Assertion.addProperty('true', function () { + this.assert( + true === flag(this, 'object') + , 'expected #{this} to be true' + , 'expected #{this} to be false' + , this.negate ? false : true + ); + }); + + /** + * ### .false + * + * Asserts that the target is `false`. + * + * expect(false).to.be.false; + * expect(0).to.not.be.false; + * + * @name false + * @namespace BDD + * @api public + */ + + Assertion.addProperty('false', function () { + this.assert( + false === flag(this, 'object') + , 'expected #{this} to be false' + , 'expected #{this} to be true' + , this.negate ? true : false + ); + }); + + /** + * ### .null + * + * Asserts that the target is `null`. + * + * expect(null).to.be.null; + * expect(undefined).to.not.be.null; + * + * @name null + * @namespace BDD + * @api public + */ + + Assertion.addProperty('null', function () { + this.assert( + null === flag(this, 'object') + , 'expected #{this} to be null' + , 'expected #{this} not to be null' + ); + }); + + /** + * ### .undefined + * + * Asserts that the target is `undefined`. + * + * expect(undefined).to.be.undefined; + * expect(null).to.not.be.undefined; + * + * @name undefined + * @namespace BDD + * @api public + */ + + Assertion.addProperty('undefined', function () { + this.assert( + undefined === flag(this, 'object') + , 'expected #{this} to be undefined' + , 'expected #{this} not to be undefined' + ); + }); + + /** + * ### .NaN + * Asserts that the target is `NaN`. + * + * expect('foo').to.be.NaN; + * expect(4).not.to.be.NaN; + * + * @name NaN + * @namespace BDD + * @api public + */ + + Assertion.addProperty('NaN', function () { + this.assert( + isNaN(flag(this, 'object')) + , 'expected #{this} to be NaN' + , 'expected #{this} not to be NaN' + ); + }); + + /** + * ### .exist + * + * Asserts that the target is neither `null` nor `undefined`. + * + * var foo = 'hi' + * , bar = null + * , baz; + * + * expect(foo).to.exist; + * expect(bar).to.not.exist; + * expect(baz).to.not.exist; + * + * @name exist + * @namespace BDD + * @api public + */ + + Assertion.addProperty('exist', function () { + this.assert( + null != flag(this, 'object') + , 'expected #{this} to exist' + , 'expected #{this} to not exist' + ); + }); + + + /** + * ### .empty + * + * Asserts that the target's length is `0`. For arrays and strings, it checks + * the `length` property. For objects, it gets the count of + * enumerable keys. + * + * expect([]).to.be.empty; + * expect('').to.be.empty; + * expect({}).to.be.empty; + * + * @name empty + * @namespace BDD + * @api public + */ + + Assertion.addProperty('empty', function () { + var obj = flag(this, 'object') + , expected = obj; + + if (Array.isArray(obj) || 'string' === typeof object) { + expected = obj.length; + } else if (typeof obj === 'object') { + expected = Object.keys(obj).length; + } + + this.assert( + !expected + , 'expected #{this} to be empty' + , 'expected #{this} not to be empty' + ); + }); + + /** + * ### .arguments + * + * Asserts that the target is an arguments object. + * + * function test () { + * expect(arguments).to.be.arguments; + * } + * + * @name arguments + * @alias Arguments + * @namespace BDD + * @api public + */ + + function checkArguments () { + var obj = flag(this, 'object') + , type = Object.prototype.toString.call(obj); + this.assert( + '[object Arguments]' === type + , 'expected #{this} to be arguments but got ' + type + , 'expected #{this} to not be arguments' + ); + } + + Assertion.addProperty('arguments', checkArguments); + Assertion.addProperty('Arguments', checkArguments); + + /** + * ### .equal(value) + * + * Asserts that the target is strictly equal (`===`) to `value`. + * Alternately, if the `deep` flag is set, asserts that + * the target is deeply equal to `value`. + * + * expect('hello').to.equal('hello'); + * expect(42).to.equal(42); + * expect(1).to.not.equal(true); + * expect({ foo: 'bar' }).to.not.equal({ foo: 'bar' }); + * expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' }); + * + * @name equal + * @alias equals + * @alias eq + * @alias deep.equal + * @param {Mixed} value + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertEqual (val, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + if (flag(this, 'deep')) { + return this.eql(val); + } else { + this.assert( + val === obj + , 'expected #{this} to equal #{exp}' + , 'expected #{this} to not equal #{exp}' + , val + , this._obj + , true + ); + } + } + + Assertion.addMethod('equal', assertEqual); + Assertion.addMethod('equals', assertEqual); + Assertion.addMethod('eq', assertEqual); + + /** + * ### .eql(value) + * + * Asserts that the target is deeply equal to `value`. + * + * expect({ foo: 'bar' }).to.eql({ foo: 'bar' }); + * expect([ 1, 2, 3 ]).to.eql([ 1, 2, 3 ]); + * + * @name eql + * @alias eqls + * @param {Mixed} value + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertEql(obj, msg) { + if (msg) flag(this, 'message', msg); + this.assert( + _.eql(obj, flag(this, 'object')) + , 'expected #{this} to deeply equal #{exp}' + , 'expected #{this} to not deeply equal #{exp}' + , obj + , this._obj + , true + ); + } + + Assertion.addMethod('eql', assertEql); + Assertion.addMethod('eqls', assertEql); + + /** + * ### .above(value) + * + * Asserts that the target is greater than `value`. + * + * expect(10).to.be.above(5); + * + * Can also be used in conjunction with `length` to + * assert a minimum length. The benefit being a + * more informative error message than if the length + * was supplied directly. + * + * expect('foo').to.have.length.above(2); + * expect([ 1, 2, 3 ]).to.have.length.above(2); + * + * @name above + * @alias gt + * @alias greaterThan + * @param {Number} value + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertAbove (n, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + if (flag(this, 'doLength')) { + new Assertion(obj, msg).to.have.property('length'); + var len = obj.length; + this.assert( + len > n + , 'expected #{this} to have a length above #{exp} but got #{act}' + , 'expected #{this} to not have a length above #{exp}' + , n + , len + ); + } else { + this.assert( + obj > n + , 'expected #{this} to be above ' + n + , 'expected #{this} to be at most ' + n + ); + } + } + + Assertion.addMethod('above', assertAbove); + Assertion.addMethod('gt', assertAbove); + Assertion.addMethod('greaterThan', assertAbove); + + /** + * ### .least(value) + * + * Asserts that the target is greater than or equal to `value`. + * + * expect(10).to.be.at.least(10); + * + * Can also be used in conjunction with `length` to + * assert a minimum length. The benefit being a + * more informative error message than if the length + * was supplied directly. + * + * expect('foo').to.have.length.of.at.least(2); + * expect([ 1, 2, 3 ]).to.have.length.of.at.least(3); + * + * @name least + * @alias gte + * @param {Number} value + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertLeast (n, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + if (flag(this, 'doLength')) { + new Assertion(obj, msg).to.have.property('length'); + var len = obj.length; + this.assert( + len >= n + , 'expected #{this} to have a length at least #{exp} but got #{act}' + , 'expected #{this} to have a length below #{exp}' + , n + , len + ); + } else { + this.assert( + obj >= n + , 'expected #{this} to be at least ' + n + , 'expected #{this} to be below ' + n + ); + } + } + + Assertion.addMethod('least', assertLeast); + Assertion.addMethod('gte', assertLeast); + + /** + * ### .below(value) + * + * Asserts that the target is less than `value`. + * + * expect(5).to.be.below(10); + * + * Can also be used in conjunction with `length` to + * assert a maximum length. The benefit being a + * more informative error message than if the length + * was supplied directly. + * + * expect('foo').to.have.length.below(4); + * expect([ 1, 2, 3 ]).to.have.length.below(4); + * + * @name below + * @alias lt + * @alias lessThan + * @param {Number} value + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertBelow (n, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + if (flag(this, 'doLength')) { + new Assertion(obj, msg).to.have.property('length'); + var len = obj.length; + this.assert( + len < n + , 'expected #{this} to have a length below #{exp} but got #{act}' + , 'expected #{this} to not have a length below #{exp}' + , n + , len + ); + } else { + this.assert( + obj < n + , 'expected #{this} to be below ' + n + , 'expected #{this} to be at least ' + n + ); + } + } + + Assertion.addMethod('below', assertBelow); + Assertion.addMethod('lt', assertBelow); + Assertion.addMethod('lessThan', assertBelow); + + /** + * ### .most(value) + * + * Asserts that the target is less than or equal to `value`. + * + * expect(5).to.be.at.most(5); + * + * Can also be used in conjunction with `length` to + * assert a maximum length. The benefit being a + * more informative error message than if the length + * was supplied directly. + * + * expect('foo').to.have.length.of.at.most(4); + * expect([ 1, 2, 3 ]).to.have.length.of.at.most(3); + * + * @name most + * @alias lte + * @param {Number} value + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertMost (n, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + if (flag(this, 'doLength')) { + new Assertion(obj, msg).to.have.property('length'); + var len = obj.length; + this.assert( + len <= n + , 'expected #{this} to have a length at most #{exp} but got #{act}' + , 'expected #{this} to have a length above #{exp}' + , n + , len + ); + } else { + this.assert( + obj <= n + , 'expected #{this} to be at most ' + n + , 'expected #{this} to be above ' + n + ); + } + } + + Assertion.addMethod('most', assertMost); + Assertion.addMethod('lte', assertMost); + + /** + * ### .within(start, finish) + * + * Asserts that the target is within a range. + * + * expect(7).to.be.within(5,10); + * + * Can also be used in conjunction with `length` to + * assert a length range. The benefit being a + * more informative error message than if the length + * was supplied directly. + * + * expect('foo').to.have.length.within(2,4); + * expect([ 1, 2, 3 ]).to.have.length.within(2,4); + * + * @name within + * @param {Number} start lowerbound inclusive + * @param {Number} finish upperbound inclusive + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + Assertion.addMethod('within', function (start, finish, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object') + , range = start + '..' + finish; + if (flag(this, 'doLength')) { + new Assertion(obj, msg).to.have.property('length'); + var len = obj.length; + this.assert( + len >= start && len <= finish + , 'expected #{this} to have a length within ' + range + , 'expected #{this} to not have a length within ' + range + ); + } else { + this.assert( + obj >= start && obj <= finish + , 'expected #{this} to be within ' + range + , 'expected #{this} to not be within ' + range + ); + } + }); + + /** + * ### .instanceof(constructor) + * + * Asserts that the target is an instance of `constructor`. + * + * var Tea = function (name) { this.name = name; } + * , Chai = new Tea('chai'); + * + * expect(Chai).to.be.an.instanceof(Tea); + * expect([ 1, 2, 3 ]).to.be.instanceof(Array); + * + * @name instanceof + * @param {Constructor} constructor + * @param {String} message _optional_ + * @alias instanceOf + * @namespace BDD + * @api public + */ + + function assertInstanceOf (constructor, msg) { + if (msg) flag(this, 'message', msg); + var name = _.getName(constructor); + this.assert( + flag(this, 'object') instanceof constructor + , 'expected #{this} to be an instance of ' + name + , 'expected #{this} to not be an instance of ' + name + ); + }; + + Assertion.addMethod('instanceof', assertInstanceOf); + Assertion.addMethod('instanceOf', assertInstanceOf); + + /** + * ### .property(name, [value]) + * + * Asserts that the target has a property `name`, optionally asserting that + * the value of that property is strictly equal to `value`. + * If the `deep` flag is set, you can use dot- and bracket-notation for deep + * references into objects and arrays. + * + * // simple referencing + * var obj = { foo: 'bar' }; + * expect(obj).to.have.property('foo'); + * expect(obj).to.have.property('foo', 'bar'); + * + * // deep referencing + * var deepObj = { + * green: { tea: 'matcha' } + * , teas: [ 'chai', 'matcha', { tea: 'konacha' } ] + * }; + * + * expect(deepObj).to.have.deep.property('green.tea', 'matcha'); + * expect(deepObj).to.have.deep.property('teas[1]', 'matcha'); + * expect(deepObj).to.have.deep.property('teas[2].tea', 'konacha'); + * + * You can also use an array as the starting point of a `deep.property` + * assertion, or traverse nested arrays. + * + * var arr = [ + * [ 'chai', 'matcha', 'konacha' ] + * , [ { tea: 'chai' } + * , { tea: 'matcha' } + * , { tea: 'konacha' } ] + * ]; + * + * expect(arr).to.have.deep.property('[0][1]', 'matcha'); + * expect(arr).to.have.deep.property('[1][2].tea', 'konacha'); + * + * Furthermore, `property` changes the subject of the assertion + * to be the value of that property from the original object. This + * permits for further chainable assertions on that property. + * + * expect(obj).to.have.property('foo') + * .that.is.a('string'); + * expect(deepObj).to.have.property('green') + * .that.is.an('object') + * .that.deep.equals({ tea: 'matcha' }); + * expect(deepObj).to.have.property('teas') + * .that.is.an('array') + * .with.deep.property('[2]') + * .that.deep.equals({ tea: 'konacha' }); + * + * Note that dots and bracket in `name` must be backslash-escaped when + * the `deep` flag is set, while they must NOT be escaped when the `deep` + * flag is not set. + * + * // simple referencing + * var css = { '.link[target]': 42 }; + * expect(css).to.have.property('.link[target]', 42); + * + * // deep referencing + * var deepCss = { '.link': { '[target]': 42 }}; + * expect(deepCss).to.have.deep.property('\\.link.\\[target\\]', 42); + * + * @name property + * @alias deep.property + * @param {String} name + * @param {Mixed} value (optional) + * @param {String} message _optional_ + * @returns value of property for chaining + * @namespace BDD + * @api public + */ + + Assertion.addMethod('property', function (name, val, msg) { + if (msg) flag(this, 'message', msg); + + var isDeep = !!flag(this, 'deep') + , descriptor = isDeep ? 'deep property ' : 'property ' + , negate = flag(this, 'negate') + , obj = flag(this, 'object') + , pathInfo = isDeep ? _.getPathInfo(name, obj) : null + , hasProperty = isDeep + ? pathInfo.exists + : _.hasProperty(name, obj) + , value = isDeep + ? pathInfo.value + : obj[name]; + + if (negate && arguments.length > 1) { + if (undefined === value) { + msg = (msg != null) ? msg + ': ' : ''; + throw new Error(msg + _.inspect(obj) + ' has no ' + descriptor + _.inspect(name)); + } + } else { + this.assert( + hasProperty + , 'expected #{this} to have a ' + descriptor + _.inspect(name) + , 'expected #{this} to not have ' + descriptor + _.inspect(name)); + } + + if (arguments.length > 1) { + this.assert( + val === value + , 'expected #{this} to have a ' + descriptor + _.inspect(name) + ' of #{exp}, but got #{act}' + , 'expected #{this} to not have a ' + descriptor + _.inspect(name) + ' of #{act}' + , val + , value + ); + } + + flag(this, 'object', value); + }); + + + /** + * ### .ownProperty(name) + * + * Asserts that the target has an own property `name`. + * + * expect('test').to.have.ownProperty('length'); + * + * @name ownProperty + * @alias haveOwnProperty + * @param {String} name + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertOwnProperty (name, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + this.assert( + obj.hasOwnProperty(name) + , 'expected #{this} to have own property ' + _.inspect(name) + , 'expected #{this} to not have own property ' + _.inspect(name) + ); + } + + Assertion.addMethod('ownProperty', assertOwnProperty); + Assertion.addMethod('haveOwnProperty', assertOwnProperty); + + /** + * ### .ownPropertyDescriptor(name[, descriptor[, message]]) + * + * Asserts that the target has an own property descriptor `name`, that optionally matches `descriptor`. + * + * expect('test').to.have.ownPropertyDescriptor('length'); + * expect('test').to.have.ownPropertyDescriptor('length', { enumerable: false, configurable: false, writable: false, value: 4 }); + * expect('test').not.to.have.ownPropertyDescriptor('length', { enumerable: false, configurable: false, writable: false, value: 3 }); + * expect('test').ownPropertyDescriptor('length').to.have.property('enumerable', false); + * expect('test').ownPropertyDescriptor('length').to.have.keys('value'); + * + * @name ownPropertyDescriptor + * @alias haveOwnPropertyDescriptor + * @param {String} name + * @param {Object} descriptor _optional_ + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertOwnPropertyDescriptor (name, descriptor, msg) { + if (typeof descriptor === 'string') { + msg = descriptor; + descriptor = null; + } + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + var actualDescriptor = Object.getOwnPropertyDescriptor(Object(obj), name); + if (actualDescriptor && descriptor) { + this.assert( + _.eql(descriptor, actualDescriptor) + , 'expected the own property descriptor for ' + _.inspect(name) + ' on #{this} to match ' + _.inspect(descriptor) + ', got ' + _.inspect(actualDescriptor) + , 'expected the own property descriptor for ' + _.inspect(name) + ' on #{this} to not match ' + _.inspect(descriptor) + , descriptor + , actualDescriptor + , true + ); + } else { + this.assert( + actualDescriptor + , 'expected #{this} to have an own property descriptor for ' + _.inspect(name) + , 'expected #{this} to not have an own property descriptor for ' + _.inspect(name) + ); + } + flag(this, 'object', actualDescriptor); + } + + Assertion.addMethod('ownPropertyDescriptor', assertOwnPropertyDescriptor); + Assertion.addMethod('haveOwnPropertyDescriptor', assertOwnPropertyDescriptor); + + /** + * ### .length + * + * Sets the `doLength` flag later used as a chain precursor to a value + * comparison for the `length` property. + * + * expect('foo').to.have.length.above(2); + * expect([ 1, 2, 3 ]).to.have.length.above(2); + * expect('foo').to.have.length.below(4); + * expect([ 1, 2, 3 ]).to.have.length.below(4); + * expect('foo').to.have.length.within(2,4); + * expect([ 1, 2, 3 ]).to.have.length.within(2,4); + * + * *Deprecation notice:* Using `length` as an assertion will be deprecated + * in version 2.4.0 and removed in 3.0.0. Code using the old style of + * asserting for `length` property value using `length(value)` should be + * switched to use `lengthOf(value)` instead. + * + * @name length + * @namespace BDD + * @api public + */ + + /** + * ### .lengthOf(value[, message]) + * + * Asserts that the target's `length` property has + * the expected value. + * + * expect([ 1, 2, 3]).to.have.lengthOf(3); + * expect('foobar').to.have.lengthOf(6); + * + * @name lengthOf + * @param {Number} length + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertLengthChain () { + flag(this, 'doLength', true); + } + + function assertLength (n, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + new Assertion(obj, msg).to.have.property('length'); + var len = obj.length; + + this.assert( + len == n + , 'expected #{this} to have a length of #{exp} but got #{act}' + , 'expected #{this} to not have a length of #{act}' + , n + , len + ); + } + + Assertion.addChainableMethod('length', assertLength, assertLengthChain); + Assertion.addMethod('lengthOf', assertLength); + + /** + * ### .match(regexp) + * + * Asserts that the target matches a regular expression. + * + * expect('foobar').to.match(/^foo/); + * + * @name match + * @alias matches + * @param {RegExp} RegularExpression + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + function assertMatch(re, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + this.assert( + re.exec(obj) + , 'expected #{this} to match ' + re + , 'expected #{this} not to match ' + re + ); + } + + Assertion.addMethod('match', assertMatch); + Assertion.addMethod('matches', assertMatch); + + /** + * ### .string(string) + * + * Asserts that the string target contains another string. + * + * expect('foobar').to.have.string('bar'); + * + * @name string + * @param {String} string + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + Assertion.addMethod('string', function (str, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + new Assertion(obj, msg).is.a('string'); + + this.assert( + ~obj.indexOf(str) + , 'expected #{this} to contain ' + _.inspect(str) + , 'expected #{this} to not contain ' + _.inspect(str) + ); + }); + + + /** + * ### .keys(key1, [key2], [...]) + * + * Asserts that the target contains any or all of the passed-in keys. + * Use in combination with `any`, `all`, `contains`, or `have` will affect + * what will pass. + * + * When used in conjunction with `any`, at least one key that is passed + * in must exist in the target object. This is regardless whether or not + * the `have` or `contain` qualifiers are used. Note, either `any` or `all` + * should be used in the assertion. If neither are used, the assertion is + * defaulted to `all`. + * + * When both `all` and `contain` are used, the target object must have at + * least all of the passed-in keys but may have more keys not listed. + * + * When both `all` and `have` are used, the target object must both contain + * all of the passed-in keys AND the number of keys in the target object must + * match the number of keys passed in (in other words, a target object must + * have all and only all of the passed-in keys). + * + * expect({ foo: 1, bar: 2 }).to.have.any.keys('foo', 'baz'); + * expect({ foo: 1, bar: 2 }).to.have.any.keys('foo'); + * expect({ foo: 1, bar: 2 }).to.contain.any.keys('bar', 'baz'); + * expect({ foo: 1, bar: 2 }).to.contain.any.keys(['foo']); + * expect({ foo: 1, bar: 2 }).to.contain.any.keys({'foo': 6}); + * expect({ foo: 1, bar: 2 }).to.have.all.keys(['bar', 'foo']); + * expect({ foo: 1, bar: 2 }).to.have.all.keys({'bar': 6, 'foo': 7}); + * expect({ foo: 1, bar: 2, baz: 3 }).to.contain.all.keys(['bar', 'foo']); + * expect({ foo: 1, bar: 2, baz: 3 }).to.contain.all.keys({'bar': 6}); + * + * + * @name keys + * @alias key + * @param {...String|Array|Object} keys + * @namespace BDD + * @api public + */ + + function assertKeys (keys) { + var obj = flag(this, 'object') + , str + , ok = true + , mixedArgsMsg = 'keys must be given single argument of Array|Object|String, or multiple String arguments'; + + switch (_.type(keys)) { + case "array": + if (arguments.length > 1) throw (new Error(mixedArgsMsg)); + break; + case "object": + if (arguments.length > 1) throw (new Error(mixedArgsMsg)); + keys = Object.keys(keys); + break; + default: + keys = Array.prototype.slice.call(arguments); + } + + if (!keys.length) throw new Error('keys required'); + + var actual = Object.keys(obj) + , expected = keys + , len = keys.length + , any = flag(this, 'any') + , all = flag(this, 'all'); + + if (!any && !all) { + all = true; + } + + // Has any + if (any) { + var intersection = expected.filter(function(key) { + return ~actual.indexOf(key); + }); + ok = intersection.length > 0; + } + + // Has all + if (all) { + ok = keys.every(function(key){ + return ~actual.indexOf(key); + }); + if (!flag(this, 'negate') && !flag(this, 'contains')) { + ok = ok && keys.length == actual.length; + } + } + + // Key string + if (len > 1) { + keys = keys.map(function(key){ + return _.inspect(key); + }); + var last = keys.pop(); + if (all) { + str = keys.join(', ') + ', and ' + last; + } + if (any) { + str = keys.join(', ') + ', or ' + last; + } + } else { + str = _.inspect(keys[0]); + } + + // Form + str = (len > 1 ? 'keys ' : 'key ') + str; + + // Have / include + str = (flag(this, 'contains') ? 'contain ' : 'have ') + str; + + // Assertion + this.assert( + ok + , 'expected #{this} to ' + str + , 'expected #{this} to not ' + str + , expected.slice(0).sort() + , actual.sort() + , true + ); + } + + Assertion.addMethod('keys', assertKeys); + Assertion.addMethod('key', assertKeys); + + /** + * ### .throw(constructor) + * + * Asserts that the function target will throw a specific error, or specific type of error + * (as determined using `instanceof`), optionally with a RegExp or string inclusion test + * for the error's message. + * + * var err = new ReferenceError('This is a bad function.'); + * var fn = function () { throw err; } + * expect(fn).to.throw(ReferenceError); + * expect(fn).to.throw(Error); + * expect(fn).to.throw(/bad function/); + * expect(fn).to.not.throw('good function'); + * expect(fn).to.throw(ReferenceError, /bad function/); + * expect(fn).to.throw(err); + * + * Please note that when a throw expectation is negated, it will check each + * parameter independently, starting with error constructor type. The appropriate way + * to check for the existence of a type of error but for a message that does not match + * is to use `and`. + * + * expect(fn).to.throw(ReferenceError) + * .and.not.throw(/good function/); + * + * @name throw + * @alias throws + * @alias Throw + * @param {ErrorConstructor} constructor + * @param {String|RegExp} expected error message + * @param {String} message _optional_ + * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types + * @returns error for chaining (null if no error) + * @namespace BDD + * @api public + */ + + function assertThrows (constructor, errMsg, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + new Assertion(obj, msg).is.a('function'); + + var thrown = false + , desiredError = null + , name = null + , thrownError = null; + + if (arguments.length === 0) { + errMsg = null; + constructor = null; + } else if (constructor && (constructor instanceof RegExp || 'string' === typeof constructor)) { + errMsg = constructor; + constructor = null; + } else if (constructor && constructor instanceof Error) { + desiredError = constructor; + constructor = null; + errMsg = null; + } else if (typeof constructor === 'function') { + name = constructor.prototype.name; + if (!name || (name === 'Error' && constructor !== Error)) { + name = constructor.name || (new constructor()).name; + } + } else { + constructor = null; + } + + try { + obj(); + } catch (err) { + // first, check desired error + if (desiredError) { + this.assert( + err === desiredError + , 'expected #{this} to throw #{exp} but #{act} was thrown' + , 'expected #{this} to not throw #{exp}' + , (desiredError instanceof Error ? desiredError.toString() : desiredError) + , (err instanceof Error ? err.toString() : err) + ); + + flag(this, 'object', err); + return this; + } + + // next, check constructor + if (constructor) { + this.assert( + err instanceof constructor + , 'expected #{this} to throw #{exp} but #{act} was thrown' + , 'expected #{this} to not throw #{exp} but #{act} was thrown' + , name + , (err instanceof Error ? err.toString() : err) + ); + + if (!errMsg) { + flag(this, 'object', err); + return this; + } + } + + // next, check message + var message = 'error' === _.type(err) && "message" in err + ? err.message + : '' + err; + + if ((message != null) && errMsg && errMsg instanceof RegExp) { + this.assert( + errMsg.exec(message) + , 'expected #{this} to throw error matching #{exp} but got #{act}' + , 'expected #{this} to throw error not matching #{exp}' + , errMsg + , message + ); + + flag(this, 'object', err); + return this; + } else if ((message != null) && errMsg && 'string' === typeof errMsg) { + this.assert( + ~message.indexOf(errMsg) + , 'expected #{this} to throw error including #{exp} but got #{act}' + , 'expected #{this} to throw error not including #{act}' + , errMsg + , message + ); + + flag(this, 'object', err); + return this; + } else { + thrown = true; + thrownError = err; + } + } + + var actuallyGot = '' + , expectedThrown = name !== null + ? name + : desiredError + ? '#{exp}' //_.inspect(desiredError) + : 'an error'; + + if (thrown) { + actuallyGot = ' but #{act} was thrown' + } + + this.assert( + thrown === true + , 'expected #{this} to throw ' + expectedThrown + actuallyGot + , 'expected #{this} to not throw ' + expectedThrown + actuallyGot + , (desiredError instanceof Error ? desiredError.toString() : desiredError) + , (thrownError instanceof Error ? thrownError.toString() : thrownError) + ); + + flag(this, 'object', thrownError); + }; + + Assertion.addMethod('throw', assertThrows); + Assertion.addMethod('throws', assertThrows); + Assertion.addMethod('Throw', assertThrows); + + /** + * ### .respondTo(method) + * + * Asserts that the object or class target will respond to a method. + * + * Klass.prototype.bar = function(){}; + * expect(Klass).to.respondTo('bar'); + * expect(obj).to.respondTo('bar'); + * + * To check if a constructor will respond to a static function, + * set the `itself` flag. + * + * Klass.baz = function(){}; + * expect(Klass).itself.to.respondTo('baz'); + * + * @name respondTo + * @alias respondsTo + * @param {String} method + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function respondTo (method, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object') + , itself = flag(this, 'itself') + , context = ('function' === _.type(obj) && !itself) + ? obj.prototype[method] + : obj[method]; + + this.assert( + 'function' === typeof context + , 'expected #{this} to respond to ' + _.inspect(method) + , 'expected #{this} to not respond to ' + _.inspect(method) + ); + } + + Assertion.addMethod('respondTo', respondTo); + Assertion.addMethod('respondsTo', respondTo); + + /** + * ### .itself + * + * Sets the `itself` flag, later used by the `respondTo` assertion. + * + * function Foo() {} + * Foo.bar = function() {} + * Foo.prototype.baz = function() {} + * + * expect(Foo).itself.to.respondTo('bar'); + * expect(Foo).itself.not.to.respondTo('baz'); + * + * @name itself + * @namespace BDD + * @api public + */ + + Assertion.addProperty('itself', function () { + flag(this, 'itself', true); + }); + + /** + * ### .satisfy(method) + * + * Asserts that the target passes a given truth test. + * + * expect(1).to.satisfy(function(num) { return num > 0; }); + * + * @name satisfy + * @alias satisfies + * @param {Function} matcher + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function satisfy (matcher, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + var result = matcher(obj); + this.assert( + result + , 'expected #{this} to satisfy ' + _.objDisplay(matcher) + , 'expected #{this} to not satisfy' + _.objDisplay(matcher) + , this.negate ? false : true + , result + ); + } + + Assertion.addMethod('satisfy', satisfy); + Assertion.addMethod('satisfies', satisfy); + + /** + * ### .closeTo(expected, delta) + * + * Asserts that the target is equal `expected`, to within a +/- `delta` range. + * + * expect(1.5).to.be.closeTo(1, 0.5); + * + * @name closeTo + * @alias approximately + * @param {Number} expected + * @param {Number} delta + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function closeTo(expected, delta, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + + new Assertion(obj, msg).is.a('number'); + if (_.type(expected) !== 'number' || _.type(delta) !== 'number') { + throw new Error('the arguments to closeTo or approximately must be numbers'); + } + + this.assert( + Math.abs(obj - expected) <= delta + , 'expected #{this} to be close to ' + expected + ' +/- ' + delta + , 'expected #{this} not to be close to ' + expected + ' +/- ' + delta + ); + } + + Assertion.addMethod('closeTo', closeTo); + Assertion.addMethod('approximately', closeTo); + + function isSubsetOf(subset, superset, cmp) { + return subset.every(function(elem) { + if (!cmp) return superset.indexOf(elem) !== -1; + + return superset.some(function(elem2) { + return cmp(elem, elem2); + }); + }) + } + + /** + * ### .members(set) + * + * Asserts that the target is a superset of `set`, + * or that the target and `set` have the same strictly-equal (===) members. + * Alternately, if the `deep` flag is set, set members are compared for deep + * equality. + * + * expect([1, 2, 3]).to.include.members([3, 2]); + * expect([1, 2, 3]).to.not.include.members([3, 2, 8]); + * + * expect([4, 2]).to.have.members([2, 4]); + * expect([5, 2]).to.not.have.members([5, 2, 1]); + * + * expect([{ id: 1 }]).to.deep.include.members([{ id: 1 }]); + * + * @name members + * @param {Array} set + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + Assertion.addMethod('members', function (subset, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + + new Assertion(obj).to.be.an('array'); + new Assertion(subset).to.be.an('array'); + + var cmp = flag(this, 'deep') ? _.eql : undefined; + + if (flag(this, 'contains')) { + return this.assert( + isSubsetOf(subset, obj, cmp) + , 'expected #{this} to be a superset of #{act}' + , 'expected #{this} to not be a superset of #{act}' + , obj + , subset + ); + } + + this.assert( + isSubsetOf(obj, subset, cmp) && isSubsetOf(subset, obj, cmp) + , 'expected #{this} to have the same members as #{act}' + , 'expected #{this} to not have the same members as #{act}' + , obj + , subset + ); + }); + + /** + * ### .oneOf(list) + * + * Assert that a value appears somewhere in the top level of array `list`. + * + * expect('a').to.be.oneOf(['a', 'b', 'c']); + * expect(9).to.not.be.oneOf(['z']); + * expect([3]).to.not.be.oneOf([1, 2, [3]]); + * + * var three = [3]; + * // for object-types, contents are not compared + * expect(three).to.not.be.oneOf([1, 2, [3]]); + * // comparing references works + * expect(three).to.be.oneOf([1, 2, three]); + * + * @name oneOf + * @param {Array<*>} list + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function oneOf (list, msg) { + if (msg) flag(this, 'message', msg); + var expected = flag(this, 'object'); + new Assertion(list).to.be.an('array'); + + this.assert( + list.indexOf(expected) > -1 + , 'expected #{this} to be one of #{exp}' + , 'expected #{this} to not be one of #{exp}' + , list + , expected + ); + } + + Assertion.addMethod('oneOf', oneOf); + + + /** + * ### .change(function) + * + * Asserts that a function changes an object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val += 3 }; + * var noChangeFn = function() { return 'foo' + 'bar'; } + * expect(fn).to.change(obj, 'val'); + * expect(noChangeFn).to.not.change(obj, 'val') + * + * @name change + * @alias changes + * @alias Change + * @param {String} object + * @param {String} property name + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertChanges (object, prop, msg) { + if (msg) flag(this, 'message', msg); + var fn = flag(this, 'object'); + new Assertion(object, msg).to.have.property(prop); + new Assertion(fn).is.a('function'); + + var initial = object[prop]; + fn(); + + this.assert( + initial !== object[prop] + , 'expected .' + prop + ' to change' + , 'expected .' + prop + ' to not change' + ); + } + + Assertion.addChainableMethod('change', assertChanges); + Assertion.addChainableMethod('changes', assertChanges); + + /** + * ### .increase(function) + * + * Asserts that a function increases an object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 15 }; + * expect(fn).to.increase(obj, 'val'); + * + * @name increase + * @alias increases + * @alias Increase + * @param {String} object + * @param {String} property name + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertIncreases (object, prop, msg) { + if (msg) flag(this, 'message', msg); + var fn = flag(this, 'object'); + new Assertion(object, msg).to.have.property(prop); + new Assertion(fn).is.a('function'); + + var initial = object[prop]; + fn(); + + this.assert( + object[prop] - initial > 0 + , 'expected .' + prop + ' to increase' + , 'expected .' + prop + ' to not increase' + ); + } + + Assertion.addChainableMethod('increase', assertIncreases); + Assertion.addChainableMethod('increases', assertIncreases); + + /** + * ### .decrease(function) + * + * Asserts that a function decreases an object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 5 }; + * expect(fn).to.decrease(obj, 'val'); + * + * @name decrease + * @alias decreases + * @alias Decrease + * @param {String} object + * @param {String} property name + * @param {String} message _optional_ + * @namespace BDD + * @api public + */ + + function assertDecreases (object, prop, msg) { + if (msg) flag(this, 'message', msg); + var fn = flag(this, 'object'); + new Assertion(object, msg).to.have.property(prop); + new Assertion(fn).is.a('function'); + + var initial = object[prop]; + fn(); + + this.assert( + object[prop] - initial < 0 + , 'expected .' + prop + ' to decrease' + , 'expected .' + prop + ' to not decrease' + ); + } + + Assertion.addChainableMethod('decrease', assertDecreases); + Assertion.addChainableMethod('decreases', assertDecreases); + + /** + * ### .extensible + * + * Asserts that the target is extensible (can have new properties added to + * it). + * + * var nonExtensibleObject = Object.preventExtensions({}); + * var sealedObject = Object.seal({}); + * var frozenObject = Object.freeze({}); + * + * expect({}).to.be.extensible; + * expect(nonExtensibleObject).to.not.be.extensible; + * expect(sealedObject).to.not.be.extensible; + * expect(frozenObject).to.not.be.extensible; + * + * @name extensible + * @namespace BDD + * @api public + */ + + Assertion.addProperty('extensible', function() { + var obj = flag(this, 'object'); + + // In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError. + // In ES6, a non-object argument will be treated as if it was a non-extensible ordinary object, simply return false. + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible + // The following provides ES6 behavior when a TypeError is thrown under ES5. + + var isExtensible; + + try { + isExtensible = Object.isExtensible(obj); + } catch (err) { + if (err instanceof TypeError) isExtensible = false; + else throw err; + } + + this.assert( + isExtensible + , 'expected #{this} to be extensible' + , 'expected #{this} to not be extensible' + ); + }); + + /** + * ### .sealed + * + * Asserts that the target is sealed (cannot have new properties added to it + * and its existing properties cannot be removed). + * + * var sealedObject = Object.seal({}); + * var frozenObject = Object.freeze({}); + * + * expect(sealedObject).to.be.sealed; + * expect(frozenObject).to.be.sealed; + * expect({}).to.not.be.sealed; + * + * @name sealed + * @namespace BDD + * @api public + */ + + Assertion.addProperty('sealed', function() { + var obj = flag(this, 'object'); + + // In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError. + // In ES6, a non-object argument will be treated as if it was a sealed ordinary object, simply return true. + // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed + // The following provides ES6 behavior when a TypeError is thrown under ES5. + + var isSealed; + + try { + isSealed = Object.isSealed(obj); + } catch (err) { + if (err instanceof TypeError) isSealed = true; + else throw err; + } + + this.assert( + isSealed + , 'expected #{this} to be sealed' + , 'expected #{this} to not be sealed' + ); + }); + + /** + * ### .frozen + * + * Asserts that the target is frozen (cannot have new properties added to it + * and its existing properties cannot be modified). + * + * var frozenObject = Object.freeze({}); + * + * expect(frozenObject).to.be.frozen; + * expect({}).to.not.be.frozen; + * + * @name frozen + * @namespace BDD + * @api public + */ + + Assertion.addProperty('frozen', function() { + var obj = flag(this, 'object'); + + // In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError. + // In ES6, a non-object argument will be treated as if it was a frozen ordinary object, simply return true. + // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen + // The following provides ES6 behavior when a TypeError is thrown under ES5. + + var isFrozen; + + try { + isFrozen = Object.isFrozen(obj); + } catch (err) { + if (err instanceof TypeError) isFrozen = true; + else throw err; + } + + this.assert( + isFrozen + , 'expected #{this} to be frozen' + , 'expected #{this} to not be frozen' + ); + }); +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/interface/assert.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/interface/assert.js new file mode 100644 index 00000000..09729db9 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/interface/assert.js @@ -0,0 +1,1645 @@ +/*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + */ + + +module.exports = function (chai, util) { + + /*! + * Chai dependencies. + */ + + var Assertion = chai.Assertion + , flag = util.flag; + + /*! + * Module export. + */ + + /** + * ### assert(expression, message) + * + * Write your own test expressions. + * + * assert('foo' !== 'bar', 'foo is not bar'); + * assert(Array.isArray([]), 'empty arrays are arrays'); + * + * @param {Mixed} expression to test for truthiness + * @param {String} message to display on error + * @name assert + * @namespace Assert + * @api public + */ + + var assert = chai.assert = function (express, errmsg) { + var test = new Assertion(null, null, chai.assert); + test.assert( + express + , errmsg + , '[ negation message unavailable ]' + ); + }; + + /** + * ### .fail(actual, expected, [message], [operator]) + * + * Throw a failure. Node.js `assert` module-compatible. + * + * @name fail + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @param {String} operator + * @namespace Assert + * @api public + */ + + assert.fail = function (actual, expected, message, operator) { + message = message || 'assert.fail()'; + throw new chai.AssertionError(message, { + actual: actual + , expected: expected + , operator: operator + }, assert.fail); + }; + + /** + * ### .isOk(object, [message]) + * + * Asserts that `object` is truthy. + * + * assert.isOk('everything', 'everything is ok'); + * assert.isOk(false, 'this will fail'); + * + * @name isOk + * @alias ok + * @param {Mixed} object to test + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isOk = function (val, msg) { + new Assertion(val, msg).is.ok; + }; + + /** + * ### .isNotOk(object, [message]) + * + * Asserts that `object` is falsy. + * + * assert.isNotOk('everything', 'this will fail'); + * assert.isNotOk(false, 'this will pass'); + * + * @name isNotOk + * @alias notOk + * @param {Mixed} object to test + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotOk = function (val, msg) { + new Assertion(val, msg).is.not.ok; + }; + + /** + * ### .equal(actual, expected, [message]) + * + * Asserts non-strict equality (`==`) of `actual` and `expected`. + * + * assert.equal(3, '3', '== coerces values to strings'); + * + * @name equal + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.equal = function (act, exp, msg) { + var test = new Assertion(act, msg, assert.equal); + + test.assert( + exp == flag(test, 'object') + , 'expected #{this} to equal #{exp}' + , 'expected #{this} to not equal #{act}' + , exp + , act + ); + }; + + /** + * ### .notEqual(actual, expected, [message]) + * + * Asserts non-strict inequality (`!=`) of `actual` and `expected`. + * + * assert.notEqual(3, 4, 'these numbers are not equal'); + * + * @name notEqual + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.notEqual = function (act, exp, msg) { + var test = new Assertion(act, msg, assert.notEqual); + + test.assert( + exp != flag(test, 'object') + , 'expected #{this} to not equal #{exp}' + , 'expected #{this} to equal #{act}' + , exp + , act + ); + }; + + /** + * ### .strictEqual(actual, expected, [message]) + * + * Asserts strict equality (`===`) of `actual` and `expected`. + * + * assert.strictEqual(true, true, 'these booleans are strictly equal'); + * + * @name strictEqual + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.strictEqual = function (act, exp, msg) { + new Assertion(act, msg).to.equal(exp); + }; + + /** + * ### .notStrictEqual(actual, expected, [message]) + * + * Asserts strict inequality (`!==`) of `actual` and `expected`. + * + * assert.notStrictEqual(3, '3', 'no coercion for strict equality'); + * + * @name notStrictEqual + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.notStrictEqual = function (act, exp, msg) { + new Assertion(act, msg).to.not.equal(exp); + }; + + /** + * ### .deepEqual(actual, expected, [message]) + * + * Asserts that `actual` is deeply equal to `expected`. + * + * assert.deepEqual({ tea: 'green' }, { tea: 'green' }); + * + * @name deepEqual + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.deepEqual = function (act, exp, msg) { + new Assertion(act, msg).to.eql(exp); + }; + + /** + * ### .notDeepEqual(actual, expected, [message]) + * + * Assert that `actual` is not deeply equal to `expected`. + * + * assert.notDeepEqual({ tea: 'green' }, { tea: 'jasmine' }); + * + * @name notDeepEqual + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.notDeepEqual = function (act, exp, msg) { + new Assertion(act, msg).to.not.eql(exp); + }; + + /** + * ### .isAbove(valueToCheck, valueToBeAbove, [message]) + * + * Asserts `valueToCheck` is strictly greater than (>) `valueToBeAbove` + * + * assert.isAbove(5, 2, '5 is strictly greater than 2'); + * + * @name isAbove + * @param {Mixed} valueToCheck + * @param {Mixed} valueToBeAbove + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isAbove = function (val, abv, msg) { + new Assertion(val, msg).to.be.above(abv); + }; + + /** + * ### .isAtLeast(valueToCheck, valueToBeAtLeast, [message]) + * + * Asserts `valueToCheck` is greater than or equal to (>=) `valueToBeAtLeast` + * + * assert.isAtLeast(5, 2, '5 is greater or equal to 2'); + * assert.isAtLeast(3, 3, '3 is greater or equal to 3'); + * + * @name isAtLeast + * @param {Mixed} valueToCheck + * @param {Mixed} valueToBeAtLeast + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isAtLeast = function (val, atlst, msg) { + new Assertion(val, msg).to.be.least(atlst); + }; + + /** + * ### .isBelow(valueToCheck, valueToBeBelow, [message]) + * + * Asserts `valueToCheck` is strictly less than (<) `valueToBeBelow` + * + * assert.isBelow(3, 6, '3 is strictly less than 6'); + * + * @name isBelow + * @param {Mixed} valueToCheck + * @param {Mixed} valueToBeBelow + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isBelow = function (val, blw, msg) { + new Assertion(val, msg).to.be.below(blw); + }; + + /** + * ### .isAtMost(valueToCheck, valueToBeAtMost, [message]) + * + * Asserts `valueToCheck` is less than or equal to (<=) `valueToBeAtMost` + * + * assert.isAtMost(3, 6, '3 is less than or equal to 6'); + * assert.isAtMost(4, 4, '4 is less than or equal to 4'); + * + * @name isAtMost + * @param {Mixed} valueToCheck + * @param {Mixed} valueToBeAtMost + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isAtMost = function (val, atmst, msg) { + new Assertion(val, msg).to.be.most(atmst); + }; + + /** + * ### .isTrue(value, [message]) + * + * Asserts that `value` is true. + * + * var teaServed = true; + * assert.isTrue(teaServed, 'the tea has been served'); + * + * @name isTrue + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isTrue = function (val, msg) { + new Assertion(val, msg).is['true']; + }; + + /** + * ### .isNotTrue(value, [message]) + * + * Asserts that `value` is not true. + * + * var tea = 'tasty chai'; + * assert.isNotTrue(tea, 'great, time for tea!'); + * + * @name isNotTrue + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotTrue = function (val, msg) { + new Assertion(val, msg).to.not.equal(true); + }; + + /** + * ### .isFalse(value, [message]) + * + * Asserts that `value` is false. + * + * var teaServed = false; + * assert.isFalse(teaServed, 'no tea yet? hmm...'); + * + * @name isFalse + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isFalse = function (val, msg) { + new Assertion(val, msg).is['false']; + }; + + /** + * ### .isNotFalse(value, [message]) + * + * Asserts that `value` is not false. + * + * var tea = 'tasty chai'; + * assert.isNotFalse(tea, 'great, time for tea!'); + * + * @name isNotFalse + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotFalse = function (val, msg) { + new Assertion(val, msg).to.not.equal(false); + }; + + /** + * ### .isNull(value, [message]) + * + * Asserts that `value` is null. + * + * assert.isNull(err, 'there was no error'); + * + * @name isNull + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNull = function (val, msg) { + new Assertion(val, msg).to.equal(null); + }; + + /** + * ### .isNotNull(value, [message]) + * + * Asserts that `value` is not null. + * + * var tea = 'tasty chai'; + * assert.isNotNull(tea, 'great, time for tea!'); + * + * @name isNotNull + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotNull = function (val, msg) { + new Assertion(val, msg).to.not.equal(null); + }; + + /** + * ### .isNaN + * Asserts that value is NaN + * + * assert.isNaN('foo', 'foo is NaN'); + * + * @name isNaN + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNaN = function (val, msg) { + new Assertion(val, msg).to.be.NaN; + }; + + /** + * ### .isNotNaN + * Asserts that value is not NaN + * + * assert.isNotNaN(4, '4 is not NaN'); + * + * @name isNotNaN + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + assert.isNotNaN = function (val, msg) { + new Assertion(val, msg).not.to.be.NaN; + }; + + /** + * ### .isUndefined(value, [message]) + * + * Asserts that `value` is `undefined`. + * + * var tea; + * assert.isUndefined(tea, 'no tea defined'); + * + * @name isUndefined + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isUndefined = function (val, msg) { + new Assertion(val, msg).to.equal(undefined); + }; + + /** + * ### .isDefined(value, [message]) + * + * Asserts that `value` is not `undefined`. + * + * var tea = 'cup of chai'; + * assert.isDefined(tea, 'tea has been defined'); + * + * @name isDefined + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isDefined = function (val, msg) { + new Assertion(val, msg).to.not.equal(undefined); + }; + + /** + * ### .isFunction(value, [message]) + * + * Asserts that `value` is a function. + * + * function serveTea() { return 'cup of tea'; }; + * assert.isFunction(serveTea, 'great, we can have tea now'); + * + * @name isFunction + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isFunction = function (val, msg) { + new Assertion(val, msg).to.be.a('function'); + }; + + /** + * ### .isNotFunction(value, [message]) + * + * Asserts that `value` is _not_ a function. + * + * var serveTea = [ 'heat', 'pour', 'sip' ]; + * assert.isNotFunction(serveTea, 'great, we have listed the steps'); + * + * @name isNotFunction + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotFunction = function (val, msg) { + new Assertion(val, msg).to.not.be.a('function'); + }; + + /** + * ### .isObject(value, [message]) + * + * Asserts that `value` is an object of type 'Object' (as revealed by `Object.prototype.toString`). + * _The assertion does not match subclassed objects._ + * + * var selection = { name: 'Chai', serve: 'with spices' }; + * assert.isObject(selection, 'tea selection is an object'); + * + * @name isObject + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isObject = function (val, msg) { + new Assertion(val, msg).to.be.a('object'); + }; + + /** + * ### .isNotObject(value, [message]) + * + * Asserts that `value` is _not_ an object of type 'Object' (as revealed by `Object.prototype.toString`). + * + * var selection = 'chai' + * assert.isNotObject(selection, 'tea selection is not an object'); + * assert.isNotObject(null, 'null is not an object'); + * + * @name isNotObject + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotObject = function (val, msg) { + new Assertion(val, msg).to.not.be.a('object'); + }; + + /** + * ### .isArray(value, [message]) + * + * Asserts that `value` is an array. + * + * var menu = [ 'green', 'chai', 'oolong' ]; + * assert.isArray(menu, 'what kind of tea do we want?'); + * + * @name isArray + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isArray = function (val, msg) { + new Assertion(val, msg).to.be.an('array'); + }; + + /** + * ### .isNotArray(value, [message]) + * + * Asserts that `value` is _not_ an array. + * + * var menu = 'green|chai|oolong'; + * assert.isNotArray(menu, 'what kind of tea do we want?'); + * + * @name isNotArray + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotArray = function (val, msg) { + new Assertion(val, msg).to.not.be.an('array'); + }; + + /** + * ### .isString(value, [message]) + * + * Asserts that `value` is a string. + * + * var teaOrder = 'chai'; + * assert.isString(teaOrder, 'order placed'); + * + * @name isString + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isString = function (val, msg) { + new Assertion(val, msg).to.be.a('string'); + }; + + /** + * ### .isNotString(value, [message]) + * + * Asserts that `value` is _not_ a string. + * + * var teaOrder = 4; + * assert.isNotString(teaOrder, 'order placed'); + * + * @name isNotString + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotString = function (val, msg) { + new Assertion(val, msg).to.not.be.a('string'); + }; + + /** + * ### .isNumber(value, [message]) + * + * Asserts that `value` is a number. + * + * var cups = 2; + * assert.isNumber(cups, 'how many cups'); + * + * @name isNumber + * @param {Number} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNumber = function (val, msg) { + new Assertion(val, msg).to.be.a('number'); + }; + + /** + * ### .isNotNumber(value, [message]) + * + * Asserts that `value` is _not_ a number. + * + * var cups = '2 cups please'; + * assert.isNotNumber(cups, 'how many cups'); + * + * @name isNotNumber + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotNumber = function (val, msg) { + new Assertion(val, msg).to.not.be.a('number'); + }; + + /** + * ### .isBoolean(value, [message]) + * + * Asserts that `value` is a boolean. + * + * var teaReady = true + * , teaServed = false; + * + * assert.isBoolean(teaReady, 'is the tea ready'); + * assert.isBoolean(teaServed, 'has tea been served'); + * + * @name isBoolean + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isBoolean = function (val, msg) { + new Assertion(val, msg).to.be.a('boolean'); + }; + + /** + * ### .isNotBoolean(value, [message]) + * + * Asserts that `value` is _not_ a boolean. + * + * var teaReady = 'yep' + * , teaServed = 'nope'; + * + * assert.isNotBoolean(teaReady, 'is the tea ready'); + * assert.isNotBoolean(teaServed, 'has tea been served'); + * + * @name isNotBoolean + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.isNotBoolean = function (val, msg) { + new Assertion(val, msg).to.not.be.a('boolean'); + }; + + /** + * ### .typeOf(value, name, [message]) + * + * Asserts that `value`'s type is `name`, as determined by + * `Object.prototype.toString`. + * + * assert.typeOf({ tea: 'chai' }, 'object', 'we have an object'); + * assert.typeOf(['chai', 'jasmine'], 'array', 'we have an array'); + * assert.typeOf('tea', 'string', 'we have a string'); + * assert.typeOf(/tea/, 'regexp', 'we have a regular expression'); + * assert.typeOf(null, 'null', 'we have a null'); + * assert.typeOf(undefined, 'undefined', 'we have an undefined'); + * + * @name typeOf + * @param {Mixed} value + * @param {String} name + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.typeOf = function (val, type, msg) { + new Assertion(val, msg).to.be.a(type); + }; + + /** + * ### .notTypeOf(value, name, [message]) + * + * Asserts that `value`'s type is _not_ `name`, as determined by + * `Object.prototype.toString`. + * + * assert.notTypeOf('tea', 'number', 'strings are not numbers'); + * + * @name notTypeOf + * @param {Mixed} value + * @param {String} typeof name + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.notTypeOf = function (val, type, msg) { + new Assertion(val, msg).to.not.be.a(type); + }; + + /** + * ### .instanceOf(object, constructor, [message]) + * + * Asserts that `value` is an instance of `constructor`. + * + * var Tea = function (name) { this.name = name; } + * , chai = new Tea('chai'); + * + * assert.instanceOf(chai, Tea, 'chai is an instance of tea'); + * + * @name instanceOf + * @param {Object} object + * @param {Constructor} constructor + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.instanceOf = function (val, type, msg) { + new Assertion(val, msg).to.be.instanceOf(type); + }; + + /** + * ### .notInstanceOf(object, constructor, [message]) + * + * Asserts `value` is not an instance of `constructor`. + * + * var Tea = function (name) { this.name = name; } + * , chai = new String('chai'); + * + * assert.notInstanceOf(chai, Tea, 'chai is not an instance of tea'); + * + * @name notInstanceOf + * @param {Object} object + * @param {Constructor} constructor + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.notInstanceOf = function (val, type, msg) { + new Assertion(val, msg).to.not.be.instanceOf(type); + }; + + /** + * ### .include(haystack, needle, [message]) + * + * Asserts that `haystack` includes `needle`. Works + * for strings and arrays. + * + * assert.include('foobar', 'bar', 'foobar contains string "bar"'); + * assert.include([ 1, 2, 3 ], 3, 'array contains value'); + * + * @name include + * @param {Array|String} haystack + * @param {Mixed} needle + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.include = function (exp, inc, msg) { + new Assertion(exp, msg, assert.include).include(inc); + }; + + /** + * ### .notInclude(haystack, needle, [message]) + * + * Asserts that `haystack` does not include `needle`. Works + * for strings and arrays. + * + * assert.notInclude('foobar', 'baz', 'string not include substring'); + * assert.notInclude([ 1, 2, 3 ], 4, 'array not include contain value'); + * + * @name notInclude + * @param {Array|String} haystack + * @param {Mixed} needle + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.notInclude = function (exp, inc, msg) { + new Assertion(exp, msg, assert.notInclude).not.include(inc); + }; + + /** + * ### .match(value, regexp, [message]) + * + * Asserts that `value` matches the regular expression `regexp`. + * + * assert.match('foobar', /^foo/, 'regexp matches'); + * + * @name match + * @param {Mixed} value + * @param {RegExp} regexp + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.match = function (exp, re, msg) { + new Assertion(exp, msg).to.match(re); + }; + + /** + * ### .notMatch(value, regexp, [message]) + * + * Asserts that `value` does not match the regular expression `regexp`. + * + * assert.notMatch('foobar', /^foo/, 'regexp does not match'); + * + * @name notMatch + * @param {Mixed} value + * @param {RegExp} regexp + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.notMatch = function (exp, re, msg) { + new Assertion(exp, msg).to.not.match(re); + }; + + /** + * ### .property(object, property, [message]) + * + * Asserts that `object` has a property named by `property`. + * + * assert.property({ tea: { green: 'matcha' }}, 'tea'); + * + * @name property + * @param {Object} object + * @param {String} property + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.property = function (obj, prop, msg) { + new Assertion(obj, msg).to.have.property(prop); + }; + + /** + * ### .notProperty(object, property, [message]) + * + * Asserts that `object` does _not_ have a property named by `property`. + * + * assert.notProperty({ tea: { green: 'matcha' }}, 'coffee'); + * + * @name notProperty + * @param {Object} object + * @param {String} property + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.notProperty = function (obj, prop, msg) { + new Assertion(obj, msg).to.not.have.property(prop); + }; + + /** + * ### .deepProperty(object, property, [message]) + * + * Asserts that `object` has a property named by `property`, which can be a + * string using dot- and bracket-notation for deep reference. + * + * assert.deepProperty({ tea: { green: 'matcha' }}, 'tea.green'); + * + * @name deepProperty + * @param {Object} object + * @param {String} property + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.deepProperty = function (obj, prop, msg) { + new Assertion(obj, msg).to.have.deep.property(prop); + }; + + /** + * ### .notDeepProperty(object, property, [message]) + * + * Asserts that `object` does _not_ have a property named by `property`, which + * can be a string using dot- and bracket-notation for deep reference. + * + * assert.notDeepProperty({ tea: { green: 'matcha' }}, 'tea.oolong'); + * + * @name notDeepProperty + * @param {Object} object + * @param {String} property + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.notDeepProperty = function (obj, prop, msg) { + new Assertion(obj, msg).to.not.have.deep.property(prop); + }; + + /** + * ### .propertyVal(object, property, value, [message]) + * + * Asserts that `object` has a property named by `property` with value given + * by `value`. + * + * assert.propertyVal({ tea: 'is good' }, 'tea', 'is good'); + * + * @name propertyVal + * @param {Object} object + * @param {String} property + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.propertyVal = function (obj, prop, val, msg) { + new Assertion(obj, msg).to.have.property(prop, val); + }; + + /** + * ### .propertyNotVal(object, property, value, [message]) + * + * Asserts that `object` has a property named by `property`, but with a value + * different from that given by `value`. + * + * assert.propertyNotVal({ tea: 'is good' }, 'tea', 'is bad'); + * + * @name propertyNotVal + * @param {Object} object + * @param {String} property + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.propertyNotVal = function (obj, prop, val, msg) { + new Assertion(obj, msg).to.not.have.property(prop, val); + }; + + /** + * ### .deepPropertyVal(object, property, value, [message]) + * + * Asserts that `object` has a property named by `property` with value given + * by `value`. `property` can use dot- and bracket-notation for deep + * reference. + * + * assert.deepPropertyVal({ tea: { green: 'matcha' }}, 'tea.green', 'matcha'); + * + * @name deepPropertyVal + * @param {Object} object + * @param {String} property + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.deepPropertyVal = function (obj, prop, val, msg) { + new Assertion(obj, msg).to.have.deep.property(prop, val); + }; + + /** + * ### .deepPropertyNotVal(object, property, value, [message]) + * + * Asserts that `object` has a property named by `property`, but with a value + * different from that given by `value`. `property` can use dot- and + * bracket-notation for deep reference. + * + * assert.deepPropertyNotVal({ tea: { green: 'matcha' }}, 'tea.green', 'konacha'); + * + * @name deepPropertyNotVal + * @param {Object} object + * @param {String} property + * @param {Mixed} value + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.deepPropertyNotVal = function (obj, prop, val, msg) { + new Assertion(obj, msg).to.not.have.deep.property(prop, val); + }; + + /** + * ### .lengthOf(object, length, [message]) + * + * Asserts that `object` has a `length` property with the expected value. + * + * assert.lengthOf([1,2,3], 3, 'array has length of 3'); + * assert.lengthOf('foobar', 6, 'string has length of 6'); + * + * @name lengthOf + * @param {Mixed} object + * @param {Number} length + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.lengthOf = function (exp, len, msg) { + new Assertion(exp, msg).to.have.length(len); + }; + + /** + * ### .throws(function, [constructor/string/regexp], [string/regexp], [message]) + * + * Asserts that `function` will throw an error that is an instance of + * `constructor`, or alternately that it will throw an error with message + * matching `regexp`. + * + * assert.throws(fn, 'function throws a reference error'); + * assert.throws(fn, /function throws a reference error/); + * assert.throws(fn, ReferenceError); + * assert.throws(fn, ReferenceError, 'function throws a reference error'); + * assert.throws(fn, ReferenceError, /function throws a reference error/); + * + * @name throws + * @alias throw + * @alias Throw + * @param {Function} function + * @param {ErrorConstructor} constructor + * @param {RegExp} regexp + * @param {String} message + * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types + * @namespace Assert + * @api public + */ + + assert.throws = function (fn, errt, errs, msg) { + if ('string' === typeof errt || errt instanceof RegExp) { + errs = errt; + errt = null; + } + + var assertErr = new Assertion(fn, msg).to.throw(errt, errs); + return flag(assertErr, 'object'); + }; + + /** + * ### .doesNotThrow(function, [constructor/regexp], [message]) + * + * Asserts that `function` will _not_ throw an error that is an instance of + * `constructor`, or alternately that it will not throw an error with message + * matching `regexp`. + * + * assert.doesNotThrow(fn, Error, 'function does not throw'); + * + * @name doesNotThrow + * @param {Function} function + * @param {ErrorConstructor} constructor + * @param {RegExp} regexp + * @param {String} message + * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types + * @namespace Assert + * @api public + */ + + assert.doesNotThrow = function (fn, type, msg) { + if ('string' === typeof type) { + msg = type; + type = null; + } + + new Assertion(fn, msg).to.not.Throw(type); + }; + + /** + * ### .operator(val1, operator, val2, [message]) + * + * Compares two values using `operator`. + * + * assert.operator(1, '<', 2, 'everything is ok'); + * assert.operator(1, '>', 2, 'this will fail'); + * + * @name operator + * @param {Mixed} val1 + * @param {String} operator + * @param {Mixed} val2 + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.operator = function (val, operator, val2, msg) { + var ok; + switch(operator) { + case '==': + ok = val == val2; + break; + case '===': + ok = val === val2; + break; + case '>': + ok = val > val2; + break; + case '>=': + ok = val >= val2; + break; + case '<': + ok = val < val2; + break; + case '<=': + ok = val <= val2; + break; + case '!=': + ok = val != val2; + break; + case '!==': + ok = val !== val2; + break; + default: + throw new Error('Invalid operator "' + operator + '"'); + } + var test = new Assertion(ok, msg); + test.assert( + true === flag(test, 'object') + , 'expected ' + util.inspect(val) + ' to be ' + operator + ' ' + util.inspect(val2) + , 'expected ' + util.inspect(val) + ' to not be ' + operator + ' ' + util.inspect(val2) ); + }; + + /** + * ### .closeTo(actual, expected, delta, [message]) + * + * Asserts that the target is equal `expected`, to within a +/- `delta` range. + * + * assert.closeTo(1.5, 1, 0.5, 'numbers are close'); + * + * @name closeTo + * @param {Number} actual + * @param {Number} expected + * @param {Number} delta + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.closeTo = function (act, exp, delta, msg) { + new Assertion(act, msg).to.be.closeTo(exp, delta); + }; + + /** + * ### .approximately(actual, expected, delta, [message]) + * + * Asserts that the target is equal `expected`, to within a +/- `delta` range. + * + * assert.approximately(1.5, 1, 0.5, 'numbers are close'); + * + * @name approximately + * @param {Number} actual + * @param {Number} expected + * @param {Number} delta + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.approximately = function (act, exp, delta, msg) { + new Assertion(act, msg).to.be.approximately(exp, delta); + }; + + /** + * ### .sameMembers(set1, set2, [message]) + * + * Asserts that `set1` and `set2` have the same members. + * Order is not taken into account. + * + * assert.sameMembers([ 1, 2, 3 ], [ 2, 1, 3 ], 'same members'); + * + * @name sameMembers + * @param {Array} set1 + * @param {Array} set2 + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.sameMembers = function (set1, set2, msg) { + new Assertion(set1, msg).to.have.same.members(set2); + } + + /** + * ### .sameDeepMembers(set1, set2, [message]) + * + * Asserts that `set1` and `set2` have the same members - using a deep equality checking. + * Order is not taken into account. + * + * assert.sameDeepMembers([ {b: 3}, {a: 2}, {c: 5} ], [ {c: 5}, {b: 3}, {a: 2} ], 'same deep members'); + * + * @name sameDeepMembers + * @param {Array} set1 + * @param {Array} set2 + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.sameDeepMembers = function (set1, set2, msg) { + new Assertion(set1, msg).to.have.same.deep.members(set2); + } + + /** + * ### .includeMembers(superset, subset, [message]) + * + * Asserts that `subset` is included in `superset`. + * Order is not taken into account. + * + * assert.includeMembers([ 1, 2, 3 ], [ 2, 1 ], 'include members'); + * + * @name includeMembers + * @param {Array} superset + * @param {Array} subset + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.includeMembers = function (superset, subset, msg) { + new Assertion(superset, msg).to.include.members(subset); + } + + /** + * ### .includeDeepMembers(superset, subset, [message]) + * + * Asserts that `subset` is included in `superset` - using deep equality checking. + * Order is not taken into account. + * Duplicates are ignored. + * + * assert.includeDeepMembers([ {a: 1}, {b: 2}, {c: 3} ], [ {b: 2}, {a: 1}, {b: 2} ], 'include deep members'); + * + * @name includeDeepMembers + * @param {Array} superset + * @param {Array} subset + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.includeDeepMembers = function (superset, subset, msg) { + new Assertion(superset, msg).to.include.deep.members(subset); + } + + /** + * ### .oneOf(inList, list, [message]) + * + * Asserts that non-object, non-array value `inList` appears in the flat array `list`. + * + * assert.oneOf(1, [ 2, 1 ], 'Not found in list'); + * + * @name oneOf + * @param {*} inList + * @param {Array<*>} list + * @param {String} message + * @namespace Assert + * @api public + */ + + assert.oneOf = function (inList, list, msg) { + new Assertion(inList, msg).to.be.oneOf(list); + } + + /** + * ### .changes(function, object, property) + * + * Asserts that a function changes the value of a property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 22 }; + * assert.changes(fn, obj, 'val'); + * + * @name changes + * @param {Function} modifier function + * @param {Object} object + * @param {String} property name + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.changes = function (fn, obj, prop) { + new Assertion(fn).to.change(obj, prop); + } + + /** + * ### .doesNotChange(function, object, property) + * + * Asserts that a function does not changes the value of a property + * + * var obj = { val: 10 }; + * var fn = function() { console.log('foo'); }; + * assert.doesNotChange(fn, obj, 'val'); + * + * @name doesNotChange + * @param {Function} modifier function + * @param {Object} object + * @param {String} property name + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.doesNotChange = function (fn, obj, prop) { + new Assertion(fn).to.not.change(obj, prop); + } + + /** + * ### .increases(function, object, property) + * + * Asserts that a function increases an object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 13 }; + * assert.increases(fn, obj, 'val'); + * + * @name increases + * @param {Function} modifier function + * @param {Object} object + * @param {String} property name + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.increases = function (fn, obj, prop) { + new Assertion(fn).to.increase(obj, prop); + } + + /** + * ### .doesNotIncrease(function, object, property) + * + * Asserts that a function does not increase object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 8 }; + * assert.doesNotIncrease(fn, obj, 'val'); + * + * @name doesNotIncrease + * @param {Function} modifier function + * @param {Object} object + * @param {String} property name + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.doesNotIncrease = function (fn, obj, prop) { + new Assertion(fn).to.not.increase(obj, prop); + } + + /** + * ### .decreases(function, object, property) + * + * Asserts that a function decreases an object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 5 }; + * assert.decreases(fn, obj, 'val'); + * + * @name decreases + * @param {Function} modifier function + * @param {Object} object + * @param {String} property name + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.decreases = function (fn, obj, prop) { + new Assertion(fn).to.decrease(obj, prop); + } + + /** + * ### .doesNotDecrease(function, object, property) + * + * Asserts that a function does not decreases an object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 15 }; + * assert.doesNotDecrease(fn, obj, 'val'); + * + * @name doesNotDecrease + * @param {Function} modifier function + * @param {Object} object + * @param {String} property name + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.doesNotDecrease = function (fn, obj, prop) { + new Assertion(fn).to.not.decrease(obj, prop); + } + + /*! + * ### .ifError(object) + * + * Asserts if value is not a false value, and throws if it is a true value. + * This is added to allow for chai to be a drop-in replacement for Node's + * assert class. + * + * var err = new Error('I am a custom error'); + * assert.ifError(err); // Rethrows err! + * + * @name ifError + * @param {Object} object + * @namespace Assert + * @api public + */ + + assert.ifError = function (val) { + if (val) { + throw(val); + } + }; + + /** + * ### .isExtensible(object) + * + * Asserts that `object` is extensible (can have new properties added to it). + * + * assert.isExtensible({}); + * + * @name isExtensible + * @alias extensible + * @param {Object} object + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.isExtensible = function (obj, msg) { + new Assertion(obj, msg).to.be.extensible; + }; + + /** + * ### .isNotExtensible(object) + * + * Asserts that `object` is _not_ extensible. + * + * var nonExtensibleObject = Object.preventExtensions({}); + * var sealedObject = Object.seal({}); + * var frozenObject = Object.freese({}); + * + * assert.isNotExtensible(nonExtensibleObject); + * assert.isNotExtensible(sealedObject); + * assert.isNotExtensible(frozenObject); + * + * @name isNotExtensible + * @alias notExtensible + * @param {Object} object + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.isNotExtensible = function (obj, msg) { + new Assertion(obj, msg).to.not.be.extensible; + }; + + /** + * ### .isSealed(object) + * + * Asserts that `object` is sealed (cannot have new properties added to it + * and its existing properties cannot be removed). + * + * var sealedObject = Object.seal({}); + * var frozenObject = Object.seal({}); + * + * assert.isSealed(sealedObject); + * assert.isSealed(frozenObject); + * + * @name isSealed + * @alias sealed + * @param {Object} object + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.isSealed = function (obj, msg) { + new Assertion(obj, msg).to.be.sealed; + }; + + /** + * ### .isNotSealed(object) + * + * Asserts that `object` is _not_ sealed. + * + * assert.isNotSealed({}); + * + * @name isNotSealed + * @alias notSealed + * @param {Object} object + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.isNotSealed = function (obj, msg) { + new Assertion(obj, msg).to.not.be.sealed; + }; + + /** + * ### .isFrozen(object) + * + * Asserts that `object` is frozen (cannot have new properties added to it + * and its existing properties cannot be modified). + * + * var frozenObject = Object.freeze({}); + * assert.frozen(frozenObject); + * + * @name isFrozen + * @alias frozen + * @param {Object} object + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.isFrozen = function (obj, msg) { + new Assertion(obj, msg).to.be.frozen; + }; + + /** + * ### .isNotFrozen(object) + * + * Asserts that `object` is _not_ frozen. + * + * assert.isNotFrozen({}); + * + * @name isNotFrozen + * @alias notFrozen + * @param {Object} object + * @param {String} message _optional_ + * @namespace Assert + * @api public + */ + + assert.isNotFrozen = function (obj, msg) { + new Assertion(obj, msg).to.not.be.frozen; + }; + + /*! + * Aliases. + */ + + (function alias(name, as){ + assert[as] = assert[name]; + return alias; + }) + ('isOk', 'ok') + ('isNotOk', 'notOk') + ('throws', 'throw') + ('throws', 'Throw') + ('isExtensible', 'extensible') + ('isNotExtensible', 'notExtensible') + ('isSealed', 'sealed') + ('isNotSealed', 'notSealed') + ('isFrozen', 'frozen') + ('isNotFrozen', 'notFrozen'); +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/interface/expect.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/interface/expect.js new file mode 100644 index 00000000..a255c454 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/interface/expect.js @@ -0,0 +1,34 @@ +/*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + */ + +module.exports = function (chai, util) { + chai.expect = function (val, message) { + return new chai.Assertion(val, message); + }; + + /** + * ### .fail(actual, expected, [message], [operator]) + * + * Throw a failure. + * + * @name fail + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @param {String} operator + * @namespace Expect + * @api public + */ + + chai.expect.fail = function (actual, expected, message, operator) { + message = message || 'expect.fail()'; + throw new chai.AssertionError(message, { + actual: actual + , expected: expected + , operator: operator + }, chai.expect.fail); + }; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/interface/should.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/interface/should.js new file mode 100644 index 00000000..81165c68 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/interface/should.js @@ -0,0 +1,201 @@ +/*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + */ + +module.exports = function (chai, util) { + var Assertion = chai.Assertion; + + function loadShould () { + // explicitly define this method as function as to have it's name to include as `ssfi` + function shouldGetter() { + if (this instanceof String || this instanceof Number || this instanceof Boolean ) { + return new Assertion(this.valueOf(), null, shouldGetter); + } + return new Assertion(this, null, shouldGetter); + } + function shouldSetter(value) { + // See https://github.com/chaijs/chai/issues/86: this makes + // `whatever.should = someValue` actually set `someValue`, which is + // especially useful for `global.should = require('chai').should()`. + // + // Note that we have to use [[DefineProperty]] instead of [[Put]] + // since otherwise we would trigger this very setter! + Object.defineProperty(this, 'should', { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } + // modify Object.prototype to have `should` + Object.defineProperty(Object.prototype, 'should', { + set: shouldSetter + , get: shouldGetter + , configurable: true + }); + + var should = {}; + + /** + * ### .fail(actual, expected, [message], [operator]) + * + * Throw a failure. + * + * @name fail + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @param {String} operator + * @namespace Should + * @api public + */ + + should.fail = function (actual, expected, message, operator) { + message = message || 'should.fail()'; + throw new chai.AssertionError(message, { + actual: actual + , expected: expected + , operator: operator + }, should.fail); + }; + + /** + * ### .equal(actual, expected, [message]) + * + * Asserts non-strict equality (`==`) of `actual` and `expected`. + * + * should.equal(3, '3', '== coerces values to strings'); + * + * @name equal + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @namespace Should + * @api public + */ + + should.equal = function (val1, val2, msg) { + new Assertion(val1, msg).to.equal(val2); + }; + + /** + * ### .throw(function, [constructor/string/regexp], [string/regexp], [message]) + * + * Asserts that `function` will throw an error that is an instance of + * `constructor`, or alternately that it will throw an error with message + * matching `regexp`. + * + * should.throw(fn, 'function throws a reference error'); + * should.throw(fn, /function throws a reference error/); + * should.throw(fn, ReferenceError); + * should.throw(fn, ReferenceError, 'function throws a reference error'); + * should.throw(fn, ReferenceError, /function throws a reference error/); + * + * @name throw + * @alias Throw + * @param {Function} function + * @param {ErrorConstructor} constructor + * @param {RegExp} regexp + * @param {String} message + * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types + * @namespace Should + * @api public + */ + + should.Throw = function (fn, errt, errs, msg) { + new Assertion(fn, msg).to.Throw(errt, errs); + }; + + /** + * ### .exist + * + * Asserts that the target is neither `null` nor `undefined`. + * + * var foo = 'hi'; + * + * should.exist(foo, 'foo exists'); + * + * @name exist + * @namespace Should + * @api public + */ + + should.exist = function (val, msg) { + new Assertion(val, msg).to.exist; + } + + // negation + should.not = {} + + /** + * ### .not.equal(actual, expected, [message]) + * + * Asserts non-strict inequality (`!=`) of `actual` and `expected`. + * + * should.not.equal(3, 4, 'these numbers are not equal'); + * + * @name not.equal + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @namespace Should + * @api public + */ + + should.not.equal = function (val1, val2, msg) { + new Assertion(val1, msg).to.not.equal(val2); + }; + + /** + * ### .throw(function, [constructor/regexp], [message]) + * + * Asserts that `function` will _not_ throw an error that is an instance of + * `constructor`, or alternately that it will not throw an error with message + * matching `regexp`. + * + * should.not.throw(fn, Error, 'function does not throw'); + * + * @name not.throw + * @alias not.Throw + * @param {Function} function + * @param {ErrorConstructor} constructor + * @param {RegExp} regexp + * @param {String} message + * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types + * @namespace Should + * @api public + */ + + should.not.Throw = function (fn, errt, errs, msg) { + new Assertion(fn, msg).to.not.Throw(errt, errs); + }; + + /** + * ### .not.exist + * + * Asserts that the target is neither `null` nor `undefined`. + * + * var bar = null; + * + * should.not.exist(bar, 'bar does not exist'); + * + * @name not.exist + * @namespace Should + * @api public + */ + + should.not.exist = function (val, msg) { + new Assertion(val, msg).to.not.exist; + } + + should['throw'] = should['Throw']; + should.not['throw'] = should.not['Throw']; + + return should; + }; + + chai.should = loadShould; + chai.Should = loadShould; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/addChainableMethod.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/addChainableMethod.js new file mode 100644 index 00000000..ebc10677 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/addChainableMethod.js @@ -0,0 +1,112 @@ +/*! + * Chai - addChainingMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/*! + * Module dependencies + */ + +var transferFlags = require('./transferFlags'); +var flag = require('./flag'); +var config = require('../config'); + +/*! + * Module variables + */ + +// Check whether `__proto__` is supported +var hasProtoSupport = '__proto__' in Object; + +// Without `__proto__` support, this module will need to add properties to a function. +// However, some Function.prototype methods cannot be overwritten, +// and there seems no easy cross-platform way to detect them (@see chaijs/chai/issues/69). +var excludeNames = /^(?:length|name|arguments|caller)$/; + +// Cache `Function` properties +var call = Function.prototype.call, + apply = Function.prototype.apply; + +/** + * ### addChainableMethod (ctx, name, method, chainingBehavior) + * + * Adds a method to an object, such that the method can also be chained. + * + * utils.addChainableMethod(chai.Assertion.prototype, 'foo', function (str) { + * var obj = utils.flag(this, 'object'); + * new chai.Assertion(obj).to.be.equal(str); + * }); + * + * Can also be accessed directly from `chai.Assertion`. + * + * chai.Assertion.addChainableMethod('foo', fn, chainingBehavior); + * + * The result can then be used as both a method assertion, executing both `method` and + * `chainingBehavior`, or as a language chain, which only executes `chainingBehavior`. + * + * expect(fooStr).to.be.foo('bar'); + * expect(fooStr).to.be.foo.equal('foo'); + * + * @param {Object} ctx object to which the method is added + * @param {String} name of method to add + * @param {Function} method function to be used for `name`, when called + * @param {Function} chainingBehavior function to be called every time the property is accessed + * @namespace Utils + * @name addChainableMethod + * @api public + */ + +module.exports = function (ctx, name, method, chainingBehavior) { + if (typeof chainingBehavior !== 'function') { + chainingBehavior = function () { }; + } + + var chainableBehavior = { + method: method + , chainingBehavior: chainingBehavior + }; + + // save the methods so we can overwrite them later, if we need to. + if (!ctx.__methods) { + ctx.__methods = {}; + } + ctx.__methods[name] = chainableBehavior; + + Object.defineProperty(ctx, name, + { get: function () { + chainableBehavior.chainingBehavior.call(this); + + var assert = function assert() { + var old_ssfi = flag(this, 'ssfi'); + if (old_ssfi && config.includeStack === false) + flag(this, 'ssfi', assert); + var result = chainableBehavior.method.apply(this, arguments); + return result === undefined ? this : result; + }; + + // Use `__proto__` if available + if (hasProtoSupport) { + // Inherit all properties from the object by replacing the `Function` prototype + var prototype = assert.__proto__ = Object.create(this); + // Restore the `call` and `apply` methods from `Function` + prototype.call = call; + prototype.apply = apply; + } + // Otherwise, redefine all properties (slow!) + else { + var asserterNames = Object.getOwnPropertyNames(ctx); + asserterNames.forEach(function (asserterName) { + if (!excludeNames.test(asserterName)) { + var pd = Object.getOwnPropertyDescriptor(ctx, asserterName); + Object.defineProperty(assert, asserterName, pd); + } + }); + } + + transferFlags(this, assert); + return assert; + } + , configurable: true + }); +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/addMethod.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/addMethod.js new file mode 100644 index 00000000..a2676cdb --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/addMethod.js @@ -0,0 +1,44 @@ +/*! + * Chai - addMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +var config = require('../config'); + +/** + * ### .addMethod (ctx, name, method) + * + * Adds a method to the prototype of an object. + * + * utils.addMethod(chai.Assertion.prototype, 'foo', function (str) { + * var obj = utils.flag(this, 'object'); + * new chai.Assertion(obj).to.be.equal(str); + * }); + * + * Can also be accessed directly from `chai.Assertion`. + * + * chai.Assertion.addMethod('foo', fn); + * + * Then can be used as any other assertion. + * + * expect(fooStr).to.be.foo('bar'); + * + * @param {Object} ctx object to which the method is added + * @param {String} name of method to add + * @param {Function} method function to be used for name + * @namespace Utils + * @name addMethod + * @api public + */ +var flag = require('./flag'); + +module.exports = function (ctx, name, method) { + ctx[name] = function () { + var old_ssfi = flag(this, 'ssfi'); + if (old_ssfi && config.includeStack === false) + flag(this, 'ssfi', ctx[name]); + var result = method.apply(this, arguments); + return result === undefined ? this : result; + }; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/addProperty.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/addProperty.js new file mode 100644 index 00000000..07d624cd --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/addProperty.js @@ -0,0 +1,48 @@ +/*! + * Chai - addProperty utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +var config = require('../config'); +var flag = require('./flag'); + +/** + * ### addProperty (ctx, name, getter) + * + * Adds a property to the prototype of an object. + * + * utils.addProperty(chai.Assertion.prototype, 'foo', function () { + * var obj = utils.flag(this, 'object'); + * new chai.Assertion(obj).to.be.instanceof(Foo); + * }); + * + * Can also be accessed directly from `chai.Assertion`. + * + * chai.Assertion.addProperty('foo', fn); + * + * Then can be used as any other assertion. + * + * expect(myFoo).to.be.foo; + * + * @param {Object} ctx object to which the property is added + * @param {String} name of property to add + * @param {Function} getter function to be used for name + * @namespace Utils + * @name addProperty + * @api public + */ + +module.exports = function (ctx, name, getter) { + Object.defineProperty(ctx, name, + { get: function addProperty() { + var old_ssfi = flag(this, 'ssfi'); + if (old_ssfi && config.includeStack === false) + flag(this, 'ssfi', addProperty); + + var result = getter.call(this); + return result === undefined ? this : result; + } + , configurable: true + }); +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/expectTypes.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/expectTypes.js new file mode 100644 index 00000000..4dd5b297 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/expectTypes.js @@ -0,0 +1,42 @@ +/*! + * Chai - expectTypes utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * ### expectTypes(obj, types) + * + * Ensures that the object being tested against is of a valid type. + * + * utils.expectTypes(this, ['array', 'object', 'string']); + * + * @param {Mixed} obj constructed Assertion + * @param {Array} type A list of allowed types for this assertion + * @namespace Utils + * @name expectTypes + * @api public + */ + +var AssertionError = require('assertion-error'); +var flag = require('./flag'); +var type = require('type-detect'); + +module.exports = function (obj, types) { + var obj = flag(obj, 'object'); + types = types.map(function (t) { return t.toLowerCase(); }); + types.sort(); + + // Transforms ['lorem', 'ipsum'] into 'a lirum, or an ipsum' + var str = types.map(function (t, index) { + var art = ~[ 'a', 'e', 'i', 'o', 'u' ].indexOf(t.charAt(0)) ? 'an' : 'a'; + var or = types.length > 1 && index === types.length - 1 ? 'or ' : ''; + return or + art + ' ' + t; + }).join(', '); + + if (!types.some(function (expected) { return type(obj) === expected; })) { + throw new AssertionError( + 'object tested must be ' + str + ', but ' + type(obj) + ' given' + ); + } +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/flag.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/flag.js new file mode 100644 index 00000000..ef13236e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/flag.js @@ -0,0 +1,33 @@ +/*! + * Chai - flag utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * ### flag(object, key, [value]) + * + * Get or set a flag value on an object. If a + * value is provided it will be set, else it will + * return the currently set value or `undefined` if + * the value is not set. + * + * utils.flag(this, 'foo', 'bar'); // setter + * utils.flag(this, 'foo'); // getter, returns `bar` + * + * @param {Object} object constructed Assertion + * @param {String} key + * @param {Mixed} value (optional) + * @namespace Utils + * @name flag + * @api private + */ + +module.exports = function (obj, key, value) { + var flags = obj.__flags || (obj.__flags = Object.create(null)); + if (arguments.length === 3) { + flags[key] = value; + } else { + return flags[key]; + } +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getActual.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getActual.js new file mode 100644 index 00000000..ced30797 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getActual.js @@ -0,0 +1,20 @@ +/*! + * Chai - getActual utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * # getActual(object, [actual]) + * + * Returns the `actual` value for an Assertion + * + * @param {Object} object (constructed Assertion) + * @param {Arguments} chai.Assertion.prototype.assert arguments + * @namespace Utils + * @name getActual + */ + +module.exports = function (obj, args) { + return args.length > 4 ? args[4] : obj._obj; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getEnumerableProperties.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getEnumerableProperties.js new file mode 100644 index 00000000..a84252cf --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getEnumerableProperties.js @@ -0,0 +1,26 @@ +/*! + * Chai - getEnumerableProperties utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * ### .getEnumerableProperties(object) + * + * This allows the retrieval of enumerable property names of an object, + * inherited or not. + * + * @param {Object} object + * @returns {Array} + * @namespace Utils + * @name getEnumerableProperties + * @api public + */ + +module.exports = function getEnumerableProperties(object) { + var result = []; + for (var name in object) { + result.push(name); + } + return result; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getMessage.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getMessage.js new file mode 100644 index 00000000..dedd8f9d --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getMessage.js @@ -0,0 +1,51 @@ +/*! + * Chai - message composition utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/*! + * Module dependancies + */ + +var flag = require('./flag') + , getActual = require('./getActual') + , inspect = require('./inspect') + , objDisplay = require('./objDisplay'); + +/** + * ### .getMessage(object, message, negateMessage) + * + * Construct the error message based on flags + * and template tags. Template tags will return + * a stringified inspection of the object referenced. + * + * Message template tags: + * - `#{this}` current asserted object + * - `#{act}` actual value + * - `#{exp}` expected value + * + * @param {Object} object (constructed Assertion) + * @param {Arguments} chai.Assertion.prototype.assert arguments + * @namespace Utils + * @name getMessage + * @api public + */ + +module.exports = function (obj, args) { + var negate = flag(obj, 'negate') + , val = flag(obj, 'object') + , expected = args[3] + , actual = getActual(obj, args) + , msg = negate ? args[2] : args[1] + , flagMsg = flag(obj, 'message'); + + if(typeof msg === "function") msg = msg(); + msg = msg || ''; + msg = msg + .replace(/#\{this\}/g, function () { return objDisplay(val); }) + .replace(/#\{act\}/g, function () { return objDisplay(actual); }) + .replace(/#\{exp\}/g, function () { return objDisplay(expected); }); + + return flagMsg ? flagMsg + ': ' + msg : msg; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getName.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getName.js new file mode 100644 index 00000000..d45a69df --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getName.js @@ -0,0 +1,22 @@ +/*! + * Chai - getName utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * # getName(func) + * + * Gets the name of a function, in a cross-browser way. + * + * @param {Function} a function (usually a constructor) + * @namespace Utils + * @name getName + */ + +module.exports = function (func) { + if (func.name) return func.name; + + var match = /^\s?function ([^(]*)\(/.exec(func); + return match && match[1] ? match[1] : ""; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getPathInfo.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getPathInfo.js new file mode 100644 index 00000000..37198231 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getPathInfo.js @@ -0,0 +1,111 @@ +/*! + * Chai - getPathInfo utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +var hasProperty = require('./hasProperty'); + +/** + * ### .getPathInfo(path, object) + * + * This allows the retrieval of property info in an + * object given a string path. + * + * The path info consists of an object with the + * following properties: + * + * * parent - The parent object of the property referenced by `path` + * * name - The name of the final property, a number if it was an array indexer + * * value - The value of the property, if it exists, otherwise `undefined` + * * exists - Whether the property exists or not + * + * @param {String} path + * @param {Object} object + * @returns {Object} info + * @namespace Utils + * @name getPathInfo + * @api public + */ + +module.exports = function getPathInfo(path, obj) { + var parsed = parsePath(path), + last = parsed[parsed.length - 1]; + + var info = { + parent: parsed.length > 1 ? _getPathValue(parsed, obj, parsed.length - 1) : obj, + name: last.p || last.i, + value: _getPathValue(parsed, obj) + }; + info.exists = hasProperty(info.name, info.parent); + + return info; +}; + + +/*! + * ## parsePath(path) + * + * Helper function used to parse string object + * paths. Use in conjunction with `_getPathValue`. + * + * var parsed = parsePath('myobject.property.subprop'); + * + * ### Paths: + * + * * Can be as near infinitely deep and nested + * * Arrays are also valid using the formal `myobject.document[3].property`. + * * Literal dots and brackets (not delimiter) must be backslash-escaped. + * + * @param {String} path + * @returns {Object} parsed + * @api private + */ + +function parsePath (path) { + var str = path.replace(/([^\\])\[/g, '$1.[') + , parts = str.match(/(\\\.|[^.]+?)+/g); + return parts.map(function (value) { + var re = /^\[(\d+)\]$/ + , mArr = re.exec(value); + if (mArr) return { i: parseFloat(mArr[1]) }; + else return { p: value.replace(/\\([.\[\]])/g, '$1') }; + }); +} + + +/*! + * ## _getPathValue(parsed, obj) + * + * Helper companion function for `.parsePath` that returns + * the value located at the parsed address. + * + * var value = getPathValue(parsed, obj); + * + * @param {Object} parsed definition from `parsePath`. + * @param {Object} object to search against + * @param {Number} object to search against + * @returns {Object|Undefined} value + * @api private + */ + +function _getPathValue (parsed, obj, index) { + var tmp = obj + , res; + + index = (index === undefined ? parsed.length : index); + + for (var i = 0, l = index; i < l; i++) { + var part = parsed[i]; + if (tmp) { + if ('undefined' !== typeof part.p) + tmp = tmp[part.p]; + else if ('undefined' !== typeof part.i) + tmp = tmp[part.i]; + if (i == (l - 1)) res = tmp; + } else { + res = undefined; + } + } + return res; +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getPathValue.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getPathValue.js new file mode 100644 index 00000000..ed4cbfbf --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getPathValue.js @@ -0,0 +1,43 @@ +/*! + * Chai - getPathValue utility + * Copyright(c) 2012-2014 Jake Luer + * @see https://github.com/logicalparadox/filtr + * MIT Licensed + */ + +var getPathInfo = require('./getPathInfo'); + +/** + * ### .getPathValue(path, object) + * + * This allows the retrieval of values in an + * object given a string path. + * + * var obj = { + * prop1: { + * arr: ['a', 'b', 'c'] + * , str: 'Hello' + * } + * , prop2: { + * arr: [ { nested: 'Universe' } ] + * , str: 'Hello again!' + * } + * } + * + * The following would be the results. + * + * getPathValue('prop1.str', obj); // Hello + * getPathValue('prop1.att[2]', obj); // b + * getPathValue('prop2.arr[0].nested', obj); // Universe + * + * @param {String} path + * @param {Object} object + * @returns {Object} value or `undefined` + * @namespace Utils + * @name getPathValue + * @api public + */ +module.exports = function(path, obj) { + var info = getPathInfo(path, obj); + return info.value; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getProperties.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getProperties.js new file mode 100644 index 00000000..ccf9631a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/getProperties.js @@ -0,0 +1,36 @@ +/*! + * Chai - getProperties utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * ### .getProperties(object) + * + * This allows the retrieval of property names of an object, enumerable or not, + * inherited or not. + * + * @param {Object} object + * @returns {Array} + * @namespace Utils + * @name getProperties + * @api public + */ + +module.exports = function getProperties(object) { + var result = Object.getOwnPropertyNames(object); + + function addProperty(property) { + if (result.indexOf(property) === -1) { + result.push(property); + } + } + + var proto = Object.getPrototypeOf(object); + while (proto !== null) { + Object.getOwnPropertyNames(proto).forEach(addProperty); + proto = Object.getPrototypeOf(proto); + } + + return result; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/hasProperty.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/hasProperty.js new file mode 100644 index 00000000..a86a7329 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/hasProperty.js @@ -0,0 +1,64 @@ +/*! + * Chai - hasProperty utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +var type = require('type-detect'); + +/** + * ### .hasProperty(object, name) + * + * This allows checking whether an object has + * named property or numeric array index. + * + * Basically does the same thing as the `in` + * operator but works properly with natives + * and null/undefined values. + * + * var obj = { + * arr: ['a', 'b', 'c'] + * , str: 'Hello' + * } + * + * The following would be the results. + * + * hasProperty('str', obj); // true + * hasProperty('constructor', obj); // true + * hasProperty('bar', obj); // false + * + * hasProperty('length', obj.str); // true + * hasProperty(1, obj.str); // true + * hasProperty(5, obj.str); // false + * + * hasProperty('length', obj.arr); // true + * hasProperty(2, obj.arr); // true + * hasProperty(3, obj.arr); // false + * + * @param {Objuect} object + * @param {String|Number} name + * @returns {Boolean} whether it exists + * @namespace Utils + * @name getPathInfo + * @api public + */ + +var literals = { + 'number': Number + , 'string': String +}; + +module.exports = function hasProperty(name, obj) { + var ot = type(obj); + + // Bad Object, obviously no props at all + if(ot === 'null' || ot === 'undefined') + return false; + + // The `in` operator does not work with certain literals + // box these before the check + if(literals[ot] && typeof obj !== 'object') + obj = new literals[ot](obj); + + return name in obj; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/index.js new file mode 100644 index 00000000..3f9bf6ec --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/index.js @@ -0,0 +1,130 @@ +/*! + * chai + * Copyright(c) 2011 Jake Luer + * MIT Licensed + */ + +/*! + * Main exports + */ + +var exports = module.exports = {}; + +/*! + * test utility + */ + +exports.test = require('./test'); + +/*! + * type utility + */ + +exports.type = require('type-detect'); + +/*! + * expectTypes utility + */ +exports.expectTypes = require('./expectTypes'); + +/*! + * message utility + */ + +exports.getMessage = require('./getMessage'); + +/*! + * actual utility + */ + +exports.getActual = require('./getActual'); + +/*! + * Inspect util + */ + +exports.inspect = require('./inspect'); + +/*! + * Object Display util + */ + +exports.objDisplay = require('./objDisplay'); + +/*! + * Flag utility + */ + +exports.flag = require('./flag'); + +/*! + * Flag transferring utility + */ + +exports.transferFlags = require('./transferFlags'); + +/*! + * Deep equal utility + */ + +exports.eql = require('deep-eql'); + +/*! + * Deep path value + */ + +exports.getPathValue = require('./getPathValue'); + +/*! + * Deep path info + */ + +exports.getPathInfo = require('./getPathInfo'); + +/*! + * Check if a property exists + */ + +exports.hasProperty = require('./hasProperty'); + +/*! + * Function name + */ + +exports.getName = require('./getName'); + +/*! + * add Property + */ + +exports.addProperty = require('./addProperty'); + +/*! + * add Method + */ + +exports.addMethod = require('./addMethod'); + +/*! + * overwrite Property + */ + +exports.overwriteProperty = require('./overwriteProperty'); + +/*! + * overwrite Method + */ + +exports.overwriteMethod = require('./overwriteMethod'); + +/*! + * Add a chainable method + */ + +exports.addChainableMethod = require('./addChainableMethod'); + +/*! + * Overwrite chainable method + */ + +exports.overwriteChainableMethod = require('./overwriteChainableMethod'); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/inspect.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/inspect.js new file mode 100644 index 00000000..dd318991 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/inspect.js @@ -0,0 +1,335 @@ +// This is (almost) directly from Node.js utils +// https://github.com/joyent/node/blob/f8c335d0caf47f16d31413f89aa28eda3878e3aa/lib/util.js + +var getName = require('./getName'); +var getProperties = require('./getProperties'); +var getEnumerableProperties = require('./getEnumerableProperties'); + +module.exports = inspect; + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Boolean} showHidden Flag that shows hidden (not enumerable) + * properties of objects. + * @param {Number} depth Depth in which to descend in object. Default is 2. + * @param {Boolean} colors Flag to turn on ANSI escape codes to color the + * output. Default is false (no coloring). + * @namespace Utils + * @name inspect + */ +function inspect(obj, showHidden, depth, colors) { + var ctx = { + showHidden: showHidden, + seen: [], + stylize: function (str) { return str; } + }; + return formatValue(ctx, obj, (typeof depth === 'undefined' ? 2 : depth)); +} + +// Returns true if object is a DOM element. +var isDOMElement = function (object) { + if (typeof HTMLElement === 'object') { + return object instanceof HTMLElement; + } else { + return object && + typeof object === 'object' && + object.nodeType === 1 && + typeof object.nodeName === 'string'; + } +}; + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (value && typeof value.inspect === 'function' && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes); + if (typeof ret !== 'string') { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // If this is a DOM element, try to get the outer HTML. + if (isDOMElement(value)) { + if ('outerHTML' in value) { + return value.outerHTML; + // This value does not have an outerHTML attribute, + // it could still be an XML element + } else { + // Attempt to serialize it + try { + if (document.xmlVersion) { + var xmlSerializer = new XMLSerializer(); + return xmlSerializer.serializeToString(value); + } else { + // Firefox 11- do not support outerHTML + // It does, however, support innerHTML + // Use the following to render the element + var ns = "http://www.w3.org/1999/xhtml"; + var container = document.createElementNS(ns, '_'); + + container.appendChild(value.cloneNode(false)); + html = container.innerHTML + .replace('><', '>' + value.innerHTML + '<'); + container.innerHTML = ''; + return html; + } + } catch (err) { + // This could be a non-native DOM implementation, + // continue with the normal flow: + // printing the element as if it is an object. + } + } + } + + // Look up the keys of the object. + var visibleKeys = getEnumerableProperties(value); + var keys = ctx.showHidden ? getProperties(value) : visibleKeys; + + // Some type of object without properties can be shortcutted. + // In IE, errors have a single `stack` property, or if they are vanilla `Error`, + // a `stack` plus `description` property; ignore those for consistency. + if (keys.length === 0 || (isError(value) && ( + (keys.length === 1 && keys[0] === 'stack') || + (keys.length === 2 && keys[0] === 'description' && keys[1] === 'stack') + ))) { + if (typeof value === 'function') { + var name = getName(value); + var nameSuffix = name ? ': ' + name : ''; + return ctx.stylize('[Function' + nameSuffix + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toUTCString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (typeof value === 'function') { + var name = getName(value); + var nameSuffix = name ? ': ' + name : ''; + base = ' [Function' + nameSuffix + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + return formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + switch (typeof value) { + case 'undefined': + return ctx.stylize('undefined', 'undefined'); + + case 'string': + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + + case 'number': + if (value === 0 && (1/value) === -Infinity) { + return ctx.stylize('-0', 'number'); + } + return ctx.stylize('' + value, 'number'); + + case 'boolean': + return ctx.stylize('' + value, 'boolean'); + } + // For some reason typeof null is "object", so special case here. + if (value === null) { + return ctx.stylize('null', 'null'); + } +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (Object.prototype.hasOwnProperty.call(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str; + if (value.__lookupGetter__) { + if (value.__lookupGetter__(key)) { + if (value.__lookupSetter__(key)) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (value.__lookupSetter__(key)) { + str = ctx.stylize('[Setter]', 'special'); + } + } + } + if (visibleKeys.indexOf(key) < 0) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(value[key]) < 0) { + if (recurseTimes === null) { + str = formatValue(ctx, value[key], null); + } else { + str = formatValue(ctx, value[key], recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (typeof name === 'undefined') { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + +function isArray(ar) { + return Array.isArray(ar) || + (typeof ar === 'object' && objectToString(ar) === '[object Array]'); +} + +function isRegExp(re) { + return typeof re === 'object' && objectToString(re) === '[object RegExp]'; +} + +function isDate(d) { + return typeof d === 'object' && objectToString(d) === '[object Date]'; +} + +function isError(e) { + return typeof e === 'object' && objectToString(e) === '[object Error]'; +} + +function objectToString(o) { + return Object.prototype.toString.call(o); +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/objDisplay.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/objDisplay.js new file mode 100644 index 00000000..68142581 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/objDisplay.js @@ -0,0 +1,50 @@ +/*! + * Chai - flag utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/*! + * Module dependancies + */ + +var inspect = require('./inspect'); +var config = require('../config'); + +/** + * ### .objDisplay (object) + * + * Determines if an object or an array matches + * criteria to be inspected in-line for error + * messages or should be truncated. + * + * @param {Mixed} javascript object to inspect + * @name objDisplay + * @namespace Utils + * @api public + */ + +module.exports = function (obj) { + var str = inspect(obj) + , type = Object.prototype.toString.call(obj); + + if (config.truncateThreshold && str.length >= config.truncateThreshold) { + if (type === '[object Function]') { + return !obj.name || obj.name === '' + ? '[Function]' + : '[Function: ' + obj.name + ']'; + } else if (type === '[object Array]') { + return '[ Array(' + obj.length + ') ]'; + } else if (type === '[object Object]') { + var keys = Object.keys(obj) + , kstr = keys.length > 2 + ? keys.splice(0, 2).join(', ') + ', ...' + : keys.join(', '); + return '{ Object (' + kstr + ') }'; + } else { + return str; + } + } else { + return str; + } +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/overwriteChainableMethod.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/overwriteChainableMethod.js new file mode 100644 index 00000000..1ef7439c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/overwriteChainableMethod.js @@ -0,0 +1,54 @@ +/*! + * Chai - overwriteChainableMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * ### overwriteChainableMethod (ctx, name, method, chainingBehavior) + * + * Overwites an already existing chainable method + * and provides access to the previous function or + * property. Must return functions to be used for + * name. + * + * utils.overwriteChainableMethod(chai.Assertion.prototype, 'length', + * function (_super) { + * } + * , function (_super) { + * } + * ); + * + * Can also be accessed directly from `chai.Assertion`. + * + * chai.Assertion.overwriteChainableMethod('foo', fn, fn); + * + * Then can be used as any other assertion. + * + * expect(myFoo).to.have.length(3); + * expect(myFoo).to.have.length.above(3); + * + * @param {Object} ctx object whose method / property is to be overwritten + * @param {String} name of method / property to overwrite + * @param {Function} method function that returns a function to be used for name + * @param {Function} chainingBehavior function that returns a function to be used for property + * @namespace Utils + * @name overwriteChainableMethod + * @api public + */ + +module.exports = function (ctx, name, method, chainingBehavior) { + var chainableBehavior = ctx.__methods[name]; + + var _chainingBehavior = chainableBehavior.chainingBehavior; + chainableBehavior.chainingBehavior = function () { + var result = chainingBehavior(_chainingBehavior).call(this); + return result === undefined ? this : result; + }; + + var _method = chainableBehavior.method; + chainableBehavior.method = function () { + var result = method(_method).apply(this, arguments); + return result === undefined ? this : result; + }; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/overwriteMethod.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/overwriteMethod.js new file mode 100644 index 00000000..1d5f6bd5 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/overwriteMethod.js @@ -0,0 +1,52 @@ +/*! + * Chai - overwriteMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * ### overwriteMethod (ctx, name, fn) + * + * Overwites an already existing method and provides + * access to previous function. Must return function + * to be used for name. + * + * utils.overwriteMethod(chai.Assertion.prototype, 'equal', function (_super) { + * return function (str) { + * var obj = utils.flag(this, 'object'); + * if (obj instanceof Foo) { + * new chai.Assertion(obj.value).to.equal(str); + * } else { + * _super.apply(this, arguments); + * } + * } + * }); + * + * Can also be accessed directly from `chai.Assertion`. + * + * chai.Assertion.overwriteMethod('foo', fn); + * + * Then can be used as any other assertion. + * + * expect(myFoo).to.equal('bar'); + * + * @param {Object} ctx object whose method is to be overwritten + * @param {String} name of method to overwrite + * @param {Function} method function that returns a function to be used for name + * @namespace Utils + * @name overwriteMethod + * @api public + */ + +module.exports = function (ctx, name, method) { + var _method = ctx[name] + , _super = function () { return this; }; + + if (_method && 'function' === typeof _method) + _super = _method; + + ctx[name] = function () { + var result = method(_super).apply(this, arguments); + return result === undefined ? this : result; + } +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/overwriteProperty.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/overwriteProperty.js new file mode 100644 index 00000000..a13e7b2a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/overwriteProperty.js @@ -0,0 +1,55 @@ +/*! + * Chai - overwriteProperty utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * ### overwriteProperty (ctx, name, fn) + * + * Overwites an already existing property getter and provides + * access to previous value. Must return function to use as getter. + * + * utils.overwriteProperty(chai.Assertion.prototype, 'ok', function (_super) { + * return function () { + * var obj = utils.flag(this, 'object'); + * if (obj instanceof Foo) { + * new chai.Assertion(obj.name).to.equal('bar'); + * } else { + * _super.call(this); + * } + * } + * }); + * + * + * Can also be accessed directly from `chai.Assertion`. + * + * chai.Assertion.overwriteProperty('foo', fn); + * + * Then can be used as any other assertion. + * + * expect(myFoo).to.be.ok; + * + * @param {Object} ctx object whose property is to be overwritten + * @param {String} name of property to overwrite + * @param {Function} getter function that returns a getter function to be used for name + * @namespace Utils + * @name overwriteProperty + * @api public + */ + +module.exports = function (ctx, name, getter) { + var _get = Object.getOwnPropertyDescriptor(ctx, name) + , _super = function () {}; + + if (_get && 'function' === typeof _get.get) + _super = _get.get + + Object.defineProperty(ctx, name, + { get: function () { + var result = getter(_super).call(this); + return result === undefined ? this : result; + } + , configurable: true + }); +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/test.js new file mode 100644 index 00000000..453d4c72 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/test.js @@ -0,0 +1,28 @@ +/*! + * Chai - test utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/*! + * Module dependancies + */ + +var flag = require('./flag'); + +/** + * # test(object, expression) + * + * Test and object for expression. + * + * @param {Object} object (constructed Assertion) + * @param {Arguments} chai.Assertion.prototype.assert arguments + * @namespace Utils + * @name test + */ + +module.exports = function (obj, args) { + var negate = flag(obj, 'negate') + , expr = args[0]; + return negate ? !expr : expr; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/transferFlags.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/transferFlags.js new file mode 100644 index 00000000..fa2c379d --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/lib/chai/utils/transferFlags.js @@ -0,0 +1,45 @@ +/*! + * Chai - transferFlags utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + */ + +/** + * ### transferFlags(assertion, object, includeAll = true) + * + * Transfer all the flags for `assertion` to `object`. If + * `includeAll` is set to `false`, then the base Chai + * assertion flags (namely `object`, `ssfi`, and `message`) + * will not be transferred. + * + * + * var newAssertion = new Assertion(); + * utils.transferFlags(assertion, newAssertion); + * + * var anotherAsseriton = new Assertion(myObj); + * utils.transferFlags(assertion, anotherAssertion, false); + * + * @param {Assertion} assertion the assertion to transfer the flags from + * @param {Object} object the object to transfer the flags to; usually a new assertion + * @param {Boolean} includeAll + * @namespace Utils + * @name transferFlags + * @api private + */ + +module.exports = function (assertion, object, includeAll) { + var flags = assertion.__flags || (assertion.__flags = Object.create(null)); + + if (!object.__flags) { + object.__flags = Object.create(null); + } + + includeAll = arguments.length === 3 ? includeAll : true; + + for (var flag in flags) { + if (includeAll || + (flag !== 'object' && flag !== 'ssfi' && flag != 'message')) { + object.__flags[flag] = flags[flag]; + } + } +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/package.json new file mode 100644 index 00000000..6abfda11 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/package.json @@ -0,0 +1,119 @@ +{ + "_args": [ + [ + "chai@latest", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector" + ] + ], + "_from": "chai@latest", + "_id": "chai@3.5.0", + "_inCache": true, + "_installable": true, + "_location": "/chai", + "_nodeVersion": "5.5.0", + "_npmUser": { + "email": "chaijs@keithcirkel.co.uk", + "name": "chaijs" + }, + "_npmVersion": "3.3.12", + "_phantomChildren": {}, + "_requested": { + "name": "chai", + "raw": "chai@latest", + "rawSpec": "latest", + "scope": null, + "spec": "latest", + "type": "tag" + }, + "_requiredBy": [ + "#DEV:/" + ], + "_resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", + "_shasum": "4d02637b067fe958bdbfdd3a40ec56fef7373247", + "_shrinkwrap": null, + "_spec": "chai@latest", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector", + "author": { + "email": "jake@alogicalparadox.com", + "name": "Jake Luer" + }, + "bugs": { + "url": "https://github.com/chaijs/chai/issues" + }, + "contributors": [ + { + "email": "jake@alogicalparadox.com", + "name": "Jake Luer" + }, + { + "email": "domenic@domenicdenicola.com", + "name": "Domenic Denicola", + "url": "http://domenicdenicola.com" + }, + { + "email": "hi@vesln.com", + "name": "Veselin Todorov" + }, + { + "email": "john.firebaugh@gmail.com", + "name": "John Firebaugh" + } + ], + "dependencies": { + "assertion-error": "^1.0.1", + "deep-eql": "^0.1.3", + "type-detect": "^1.0.0" + }, + "description": "BDD/TDD assertion library for node.js and the browser. Test framework agnostic.", + "devDependencies": { + "browserify": "^10.2.1", + "bump-cli": "^1.1.3", + "istanbul": "^0.3.14", + "karma": "^0.13.16", + "karma-firefox-launcher": "^0.1.6", + "karma-mocha": "^0.1.10", + "karma-phantomjs-launcher": "^0.2.0", + "karma-sauce-launcher": "^0.2.11", + "mocha": "^2.2.5" + }, + "directories": {}, + "dist": { + "shasum": "4d02637b067fe958bdbfdd3a40ec56fef7373247", + "tarball": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz" + }, + "engines": { + "node": ">= 0.4.0" + }, + "gitHead": "4ca0218391cf947c6cfac2d1a7424a63a4b4c232", + "homepage": "http://chaijs.com", + "keywords": [ + "test", + "assertion", + "assert", + "testing", + "chai" + ], + "license": "MIT", + "main": "./index", + "maintainers": [ + { + "email": "jake@alogicalparadox.com", + "name": "jakeluer" + }, + { + "email": "chaijs@keithcirkel.co.uk", + "name": "chaijs" + } + ], + "name": "chai", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/chaijs/chai.git" + }, + "scripts": { + "test": "make test" + }, + "version": "3.5.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/sauce.browsers.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/sauce.browsers.js new file mode 100644 index 00000000..690c7cca --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/chai/sauce.browsers.js @@ -0,0 +1,128 @@ + +/*! + * Chrome + */ + +exports['SL_Chrome'] = { + base: 'SauceLabs' + , browserName: 'chrome' +}; + +/*! + * Firefox + */ + +/*! + * TODO: Karma doesn't seem to like this, though sauce boots its up + * + +exports['SL_Firefox_23'] = { + base: 'SauceLabs' + , browserName: 'firefox' + , platform: 'Windows XP' + , version: '23' +}; + +*/ + +exports['SL_Firefox_22'] = { + base: 'SauceLabs' + , browserName: 'firefox' + , platform: 'Windows 7' + , version: '22' +}; + +/*! + * Opera + */ + +exports['SL_Opera_12'] = { + base: 'SauceLabs' + , browserName: 'opera' + , platform: 'Windows 7' + , version: '12' +}; + +exports['SL_Opera_11'] = { + base: 'SauceLabs' + , browserName: 'opera' + , platform: 'Windows 7' + , version: '11' +}; + +/*! + * Internet Explorer + */ + +exports['SL_IE_10'] = { + base: 'SauceLabs' + , browserName: 'internet explorer' + , platform: 'Windows 2012' + , version: '10' +}; + +/*! + * Safari + */ + +exports['SL_Safari_6'] = { + base: 'SauceLabs' + , browserName: 'safari' + , platform: 'Mac 10.8' + , version: '6' +}; + +exports['SL_Safari_5'] = { + base: 'SauceLabs' + , browserName: 'safari' + , platform: 'Mac 10.6' + , version: '5' +}; + +/*! + * iPhone + */ + +/*! + * TODO: These take forever to boot or shut down. Causes timeout. + * + +exports['SL_iPhone_6'] = { + base: 'SauceLabs' + , browserName: 'iphone' + , platform: 'Mac 10.8' + , version: '6' +}; + +exports['SL_iPhone_5-1'] = { + base: 'SauceLabs' + , browserName: 'iphone' + , platform: 'Mac 10.8' + , version: '5.1' +}; + +exports['SL_iPhone_5'] = { + base: 'SauceLabs' + , browserName: 'iphone' + , platform: 'Mac 10.6' + , version: '5' +}; + +*/ + +/*! + * Android + */ + +/*! + * TODO: fails because of error serialization + * + +exports['SL_Android_4'] = { + base: 'SauceLabs' + , browserName: 'android' + , platform: 'Linux' + , version: '4' +}; + +*/ diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/README.md new file mode 100644 index 00000000..6dd8dd5e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/README.md @@ -0,0 +1,196 @@ +**cli is a toolkit for rapidly building command line apps - it includes:** + +- Full featured opts/args parser +- Plugin support for adding common options and switches +- Helper methods for working with input/output and spawning child processes +- Output colored/styled messages, [progress bars](https://github.com/chriso/cli/blob/master/examples/progress.js) or [spinners](https://github.com/chriso/cli/blob/master/examples/spinner.js) +- Command [auto-completion](https://github.com/chriso/cli/blob/master/examples/command.js) and [glob support](https://github.com/chriso/cli/blob/master/examples/glob.js) + +Install using `npm install cli` or just bundle [cli.js](https://github.com/chriso/cli/raw/master/cli.js) with your app. + +## Example apps + +### sort.js + +```javascript +#!/usr/bin/env node +require('cli').withStdinLines(function(lines, newline) { + this.output(lines.sort().join(newline)); +}); +``` + +Try it out + +```bash +$ ./sort.js < input.txt +``` + +Let's add support for an `-n` switch to use a numeric sort, and a `-r` switch to reverse output - only 5 extra lines of code (!) + +```javascript +var cli = require('cli'), options = cli.parse(); + +cli.withStdinLines(function(lines, newline) { + lines.sort(!options.n ? null : function(a, b) { + return parseInt(a) > parseInt(b); + }); + if (options.r) lines.reverse(); + this.output(lines.join(newline)); +}); +``` + +### static.js + +Let's create a static file server with daemon support to see the opts parser + plugins in use - note: this requires `npm install creationix daemon` + +```javascript +var cli = require('cli').enable('daemon', 'status'); //Enable 2 plugins + +cli.parse({ + log: ['l', 'Enable logging'], + port: ['p', 'Listen on this port', 'number', 8080], + serve: [false, 'Serve static files from PATH', 'path', './public'] +}); + +cli.main(function(args, options) { + var server, middleware = []; + + if (options.log) { + this.debug('Enabling logging'); + middleware.push(require('creationix/log')()); + } + + this.debug('Serving files from ' + options.serve); + middleware.push(require('creationix/static')('/', options.serve, 'index.html')); + + server = this.createServer(middleware).listen(options.port); + + this.ok('Listening on port ' + options.port); +}); +``` + +To output usage information + +```bash +$ ./static.js --help +``` + +To create a daemon that serves files from */tmp*, run + +```bash +$ ./static.js -ld --serve=/tmp +``` + +For more examples, see [./examples](https://github.com/chriso/cli/tree/master/examples) + +## Helper methods + +cli has methods that collect stdin (newline is autodetected as \n or \r\n) + +```javascript +cli.withStdin(callback); //callback receives stdin as a string +cli.withStdinLines(callback); //callback receives stdin split into an array of lines (lines, newline) +``` + +cli also has a lower level method for working with input line by line (see [./examples/cat.js](https://github.com/chriso/cli/blob/master/examples/cat.js) for an example). + +```javascript +cli.withInput(file, function (line, newline, eof) { + if (!eof) { + this.output(line + newline); + } +}); +``` + +*Note: `file` can be omitted if you want to work with stdin* + +To output a progress bar, call + +```javascript +cli.progress(progress); //Where 0 <= progress <= 1 +``` + +To spawn a child process, use + +```javascript +cli.exec(cmd, callback); //callback receives the output of the process (split into lines) +``` + +cli also comes bundled with kof's [node-natives](https://github.com/kof/node-natives) (access with cli.native) and creationix' [stack](https://github.com/creationix/stack) (access with cli.createServer) + +## Plugins + +Plugins are a way of adding common opts and can be enabled using + +```javascript +cli.enable(plugin1, [plugin2, ...]); //To disable, use the equivalent disable() method +``` + +**help** - *enabled by default* + +Adds `-h,--help` to output auto-generated usage information + +**version** + +Adds `-v,--version` to output version information for the app. cli will attempt to locate and parse a nearby *package.json* + +To set your own app name and version, use `cli.setApp(app_name, version)` + +**status** + +Adds options to show/hide the stylized status messages that are output to the console when using one of these methods + +```javascript +cli.debug(msg); //Only shown when using --debug +cli.error(msg); +cli.fatal(msg); //Exits the process after outputting msg +cli.info(msg); +cli.ok(msg); +``` + +`-k,--no-color` will omit ANSI color escapes from the output + +**glob** - *requires* `npm install glob` + +Enables glob matching of arguments + +**daemon** - *requires* `npm install daemon` + +Adds `-d,--daemon ARG` for daemonizing the process and controlling the resulting daemon + +`ARG` can be either start (default), stop, restart, pid (outputs the daemon's pid if it's running), or log (output the daemon's stdout+stderr) + +**timeout** + +Adds `-t,--timeout N` to exit the process after N seconds with an error + +**catchall** + +Adds `-c,--catch` to catch and output uncaughtExceptions and resume execution + +*Note: Plugins are automatically disabled if an option or switch of the same name is already defined* + +## LICENSE + +(MIT license) + +Copyright (c) 2010 Chris O'Hara + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/cli.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/cli.js new file mode 100644 index 00000000..45eb6ae2 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/cli.js @@ -0,0 +1,1152 @@ +/** + * Copyright (c) 2010 Chris O'Hara + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + //Note: cli includes kof/node-natives and creationix/stack. I couldn't find + //license information for either - contact me if you want your license added + +var cli = exports, + argv, curr_opt, curr_val, full_opt, is_long, + short_tags = [], opt_list, parsed = {}, + usage, argv_parsed, command_list, commands, + daemon, daemon_arg, no_color, show_debug; + +cli.app = null; +cli.version = null; +cli.argv = []; +cli.argc = 0; + +cli.options = {}; +cli.args = []; +cli.command = null; + +cli.width = 70; +cli.option_width = 25; + +/** + * Bind kof's node-natives (https://github.com/kof/node-natives) to `cli.native` + * + * Rather than requiring node natives (e.g. var fs = require('fs')), all + * native modules can be accessed like `cli.native.fs` + */ +cli.native = {}; +var define_native = function (module) { + Object.defineProperty(cli.native, module, { + enumerable: true, + configurable: true, + get: function() { + delete cli.native[module]; + return (cli.native[module] = require(module)); + } + }); +}; +var natives = process.binding('natives'); +for (var module in natives) { + define_native(module); +} + +cli.output = console.log; +cli.exit = require('exit'); + +/** + * Define plugins. Plugins can be enabled and disabled by calling: + * + * `cli.enable(plugin1, [plugin2, ...])` + * `cli.disable(plugin1, [plugin2, ...])` + * + * Methods are chainable - `cli.enable(plugin).disable(plugin2)`. + * + * The 'help' plugin is enabled by default. + */ +var enable = { + help: true, //Adds -h, --help + version: false, //Adds -v,--version => gets version by parsing a nearby package.json + daemon: false, //Adds -d,--daemon [ARG] => (see cli.daemon() below) + status: false, //Adds -k,--no-color & --debug => display plain status messages /display debug messages + timeout: false, //Adds -t,--timeout N => timeout the process after N seconds + catchall: false, //Adds -c,--catch => catch and output uncaughtExceptions + glob: false //Adds glob matching => use cli.glob(arg) +} +cli.enable = function (/*plugins*/) { + Array.prototype.slice.call(arguments).forEach(function (plugin) { + switch (plugin) { + case 'daemon': + try { + daemon = require('daemon'); + if (typeof daemon.daemonize !== 'function') { + throw 'Invalid module'; + } + } catch (e) { + cli.fatal('daemon.node not installed. Please run `npm install daemon`'); + } + break; + case 'catchall': + process.on('uncaughtException', function (err) { + cli.error('Uncaught exception: ' + (err.msg || err)); + }); + break; + case 'help': case 'version': case 'status': + case 'autocomplete': case 'timeout': + //Just add switches. + break; + case 'glob': + cli.glob = require('glob'); + break; + default: + cli.fatal('Unknown plugin "' + plugin + '"'); + break; + } + enable[plugin] = true; + }); + return cli; +} +cli.disable = function (/*plugins*/) { + Array.prototype.slice.call(arguments).forEach(function (plugin) { + if (enable[plugin]) { + enable[plugin] = false; + } + }); + return cli; +} + +/** + * Sets argv (default is process.argv). + * + * @param {Array|String} argv + * @param {Boolean} keep_arg0 (optional - default is false) + * @api public + */ +cli.setArgv = function (arr, keep_arg0) { + if (typeof arr == 'string') { + arr = arr.split(' '); + } else { + arr = arr.slice(); + } + cli.app = arr.shift(); + // Strip off argv[0] if it's a node binary + // So this is still broken and will break if you are calling node through a + // symlink, unless you are lucky enough to have it as 'node' literal. Latter + // is a hack, but resolving abspaths/symlinks is an unportable can of worms. + if (!keep_arg0 && (['node', 'node.exe'].indexOf(cli.native.path.basename(cli.app)) !== -1 + || cli.native.path.basename(process.execPath) === cli.app + || process.execPath === cli.app)) { + cli.app = arr.shift(); + } + cli.app = cli.native.path.basename(cli.app); + argv_parsed = false; + cli.args = cli.argv = argv = arr; + cli.argc = argv.length; + cli.options = {}; + cli.command = null; +}; +cli.setArgv(process.argv); + +/** + * Returns the next opt, or false if no opts are found. + * + * @return {String} opt + * @api public + */ +cli.next = function () { + if (!argv_parsed) { + cli.args = []; + argv_parsed = true; + } + + curr_val = null; + + //If we're currently in a group of short opts (e.g. -abc), return the next opt + if (short_tags.length) { + curr_opt = short_tags.shift(); + full_opt = '-' + curr_opt; + return curr_opt; + } + + if (!argv.length) { + return false; + } + + curr_opt = argv.shift(); + + //If an escape sequence is found (- or --), subsequent opts are ignored + if (curr_opt === '-' || curr_opt === '--') { + while (argv.length) { + cli.args.push(argv.shift()); + } + return false; + } + + //If the next element in argv isn't an opt, add it to the list of args + if (curr_opt[0] !== '-') { + cli.args.push(curr_opt); + return cli.next(); + } else { + //Check if the opt is short/long + is_long = curr_opt[1] === '-'; + curr_opt = curr_opt.substr(is_long ? 2 : 1); + } + + //Accept grouped short opts, e.g. -abc => -a -b -c + if (!is_long && curr_opt.length > 1) { + short_tags = curr_opt.split(''); + return cli.next(); + } + + var eq, len; + + //Check if the long opt is in the form --option=VALUE + if (is_long && (eq = curr_opt.indexOf('=')) >= 0) { + curr_val = curr_opt.substr(eq + 1); + curr_opt = curr_opt.substr(0, eq); + len = curr_val.length; + //Allow values to be quoted + if ((curr_val[0] === '"' && curr_val[len - 1] === '"') || + (curr_val[0] === "'" && curr_val[len - 1] === "'")) + { + curr_val = curr_val.substr(1, len-2); + } + if (curr_val.match(/^[0-9]+$/)) { + curr_val = parseInt(curr_val, 10); + } + } + + //Save the opt representation for later + full_opt = (is_long ? '--' : '-') + curr_opt; + + return curr_opt; +}; + +/** + * Parses command line opts. + * + * `opts` must be an object with opts defined like: + * long_tag: [short_tag, description, value_type, default_value]; + * + * `commands` is an optional array or object for apps that are of the form + * my_app [OPTIONS] [ARGS] + * The command list is output with usage information + there is bundled + * support for auto-completion, etc. + * + * See README.md for more information. + * + * @param {Object} opts + * @param {Object} commands (optional) + * @return {Object} opts (parsed) + * @api public + */ +cli.parse = function (opts, command_def) { + var default_val, i, parsed = cli.options, seen, + catch_all = !opts; + opt_list = opts || {}; + commands = command_def; + command_list = commands || []; + if (commands && !Array.isArray(commands)) { + command_list = Object.keys(commands); + } + while ((o = cli.next())) { + seen = false; + for (var opt in opt_list) { + if (!(opt_list[opt] instanceof Array)) { + continue; + } + if (!opt_list[opt][0]) { + opt_list[opt][0] = opt; + } + if (o === opt || o === opt_list[opt][0]) { + seen = true; + if (opt_list[opt].length === 2) { + parsed[opt] = true; + break; + } + default_val = null; + if (opt_list[opt].length === 4) { + default_val = opt_list[opt][3]; + } + if (opt_list[opt][2] instanceof Array) { + for (i = 0, l = opt_list[opt][2].length; i < l; i++) { + if (typeof opt_list[opt][2][i] === 'number') { + opt_list[opt][2][i] += ''; + } + } + parsed[opt] = cli.getArrayValue(opt_list[opt][2], is_long ? null : default_val); + break; + } + if (opt_list[opt][2].toLowerCase) { + opt_list[opt][2] = opt_list[opt][2].toLowerCase(); + } + switch (opt_list[opt][2]) { + case 'string': case 1: case true: + parsed[opt] = cli.getValue(default_val); + break; + case 'int': case 'number': case 'num': + case 'time': case 'seconds': case 'secs': case 'minutes': case 'mins': + case 'x': case 'n': + parsed[opt] = cli.getInt(default_val); + break; + case 'float': case 'decimal': + parsed[opt] = cli.getFloat(default_val); + break; + case 'path': case 'file': case 'directory': case 'dir': + parsed[opt] = cli.getPath(default_val, opt_list[opt][2]); + break; + case 'email': + parsed[opt] = cli.getEmail(default_val); + break; + case 'url': case 'uri': case 'domain': case 'host': + parsed[opt] = cli.getUrl(default_val, opt_list[opt][2]); + break; + case 'ip': + parsed[opt] = cli.getIp(default_val); + break; + case 'bool': case 'boolean': case 'on': + parsed[opt] = true; + break; + case 'false': case 'off': case false: case 0: + parsed[opt] = false; + break; + default: + cli.fatal('Unknown opt type "' + opt_list[opt][2] + '"'); + } + break; + } + } + if (process.env.NODE_DISABLE_COLORS) { + no_color = true; + } + if (!seen) { + if (enable.help && (o === 'h' || o === 'help')) { + cli.getUsage(); + } else if (enable.version && (o === 'v' || o === 'version')) { + if (cli.version == null) { + cli.parsePackageJson(); + } + console.error(cli.app + ' v' + cli.version); + cli.exit(); + break; + } else if (enable.daemon && (o === 'd' || o === 'daemon')) { + daemon_arg = cli.getArrayValue(['start','stop','restart','pid','log'], is_long ? null : 'start'); + continue; + } else if (enable.catchall && (o === 'c' || o === 'catch')) { + continue; + } else if (enable.status && (o === 'k' || o === 'no-color' || o === 'debug')) { + no_color = (o === 'k' || o === 'no-color'); + show_debug = o === 'debug'; + continue; + } else if (enable.timeout && (o === 't' || o === 'timeout')) { + var secs = cli.getInt(); + setTimeout(function () { + cli.fatal('Process timed out after ' + secs + 's'); + }, secs * 1000); + continue; + } else if (catch_all) { + parsed[o] = curr_val || true; + continue; + } + cli.fatal('Unknown option ' + full_opt); + } + } + //Fill the remaining options with their default value or null + for (var opt in opt_list) { + default_val = opt_list[opt].length === 4 ? opt_list[opt][3] : null; + if (!(opt_list[opt] instanceof Array)) { + parsed[opt] = opt_list[opt]; + continue; + } else if (typeof parsed[opt] === 'undefined') { + parsed[opt] = default_val; + } + } + if (command_list.length) { + if (cli.args.length === 0) { + if (enable.help) { + cli.getUsage(); + } else { + cli.fatal('A command is required (' + command_list.join(', ') + ').'); + } + return cli.exit(1); + } else { + cli.command = cli.autocompleteCommand(cli.args.shift()); + } + } + cli.argc = cli.args.length; + return parsed; +}; + +/** + * Helper method for matching a command from the command list. + * + * @param {String} command + * @return {String} full_command + * @api public + */ +cli.autocompleteCommand = function (command) { + var list; + if (!(command_list instanceof Array)) { + list = Object.keys(command_list); + } else { + list = command_list; + } + var i, j = 0, c = command.length, tmp_list; + if (list.length === 0 || list.indexOf(command) !== -1) { + return command; + } + for (i = 0; i < c; i++) { + tmp_list = []; + l = list.length; + if (l <= 1) break; + for (j = 0; j < l; j++) + if (list[j].length >= i && list[j][i] === command[i]) + tmp_list.push(list[j]); + list = tmp_list; + } + l = list.length; + if (l === 1) { + return list[0]; + } else if (l === 0) { + cli.fatal('Unknown command "' + command + '"' + (enable.help ? '. Please see --help for more information' : '')); + } else { + list.sort(); + cli.fatal('The command "' + command + '" is ambiguous and could mean "' + list.join('", "') + '"'); + } +}; + +/** + * Adds methods to output styled status messages to stderr. + * + * Added methods are cli.info(msg), cli.error(msg), cli.ok(msg), and + * cli.debug(msg). + * + * To control status messages, use the 'status' plugin + * 1) debug() messages are hidden by default. Display them with + * the --debug opt. + * 2) to hide all status messages, use the -s or --silent opt. + * + * @api private + */ +cli.status = function (msg, type) { + var pre; + switch (type) { + case 'info': + pre = no_color ? 'INFO:' : '\x1B[33mINFO\x1B[0m:'; + break; + case 'debug': + pre = no_color ? 'DEBUG:' : '\x1B[36mDEBUG\x1B[0m:'; + break; + case 'error': + case 'fatal': + pre = no_color ? 'ERROR:' : '\x1B[31mERROR\x1B[0m:'; + break; + case 'ok': + pre = no_color ? 'OK:' : '\x1B[32mOK\x1B[0m:'; + break; + } + msg = pre + ' ' + msg; + if (type === 'fatal') { + console.error(msg); + return cli.exit(1); + } + if (enable.status && !show_debug && type === 'debug') { + return; + } + console.error(msg); +}; +['info','error','ok','debug','fatal'].forEach(function (type) { + cli[type] = function (msg) { + cli.status(msg, type); + }; +}); + +/** + * Sets the app name and version. + * + * Usage: + * setApp('myapp', '0.1.0'); + * setApp('./package.json'); //Pull name/version from package.json + * + * @param {String} name + * @return cli (for chaining) + * @api public + */ +cli.setApp = function (name, version) { + if (name.indexOf('package.json') !== -1) { + cli.parsePackageJson(name); + } else { + cli.app = name; + cli.version = version; + } + return cli; +}; + +/** + * Parses the version number from package.json. If no path is specified, cli + * will attempt to locate a package.json in ./, ../ or ../../ + * + * @param {String} path (optional) + * @api public + */ +cli.parsePackageJson = function (path) { + var parse_packagejson = function (path) { + var packagejson = JSON.parse(cli.native.fs.readFileSync(path, 'utf8')); + cli.version = packagejson.version; + cli.app = packagejson.name; + }; + var try_all = function (arr, func, err) { + for (var i = 0, l = arr.length; i < l; i++) { + try { + func(arr[i]); + return; + } catch (e) { + if (i === l-1) { + cli.fatal(err); + } + } + } + }; + try { + if (path) { + return parse_packagejson(path); + } + try_all([ + __dirname + '/package.json', + __dirname + '/../package.json', + __dirname + '/../../package.json' + ], parse_packagejson); + } catch (e) { + cli.fatal('Could not detect ' + cli.app + ' version'); + } +}; + +/** + * Sets the usage string - default is `app [OPTIONS] [ARGS]`. + * + * @param {String} u + * @return cli (for chaining) + * @api public + */ +cli.setUsage = function (u) { + usage = u; + return cli; +}; + +var pad = function (str, len) { + if (typeof len === 'undefined') { + len = str; + str = ''; + } + if (str.length < len) { + len -= str.length; + while (len--) str += ' '; + } + return str; +}; + +/** + * Automatically build usage information from the opts list. If the help + * plugin is enabled (default), this info is displayed with -h, --help. + * + * @api public + */ +cli.getUsage = function (code) { + var short, desc, optional, line, seen_opts = [], + switch_pad = cli.option_width; + + var trunc_desc = function (pref, desc, len) { + var pref_len = pref.length, + desc_len = cli.width - pref_len, + truncated = ''; + if (desc.length <= desc_len) { + return desc; + } + var desc_words = (desc+'').split(' '), chars = 0, word; + while (desc_words.length) { + truncated += (word = desc_words.shift()) + ' '; + chars += word.length; + if (desc_words.length && chars + desc_words[0].length > desc_len) { + truncated += '\n' + pad(pref_len); + chars = 0; + } + } + return truncated; + }; + + usage = usage || cli.app + ' [OPTIONS]' + (command_list.length ? ' ' : '') + ' [ARGS]'; + if (no_color) { + console.error('Usage:\n ' + usage); + console.error('Options: '); + } else { + console.error('\x1b[1mUsage\x1b[0m:\n ' + usage); + console.error('\n\x1b[1mOptions\x1b[0m: '); + } + for (var opt in opt_list) { + + if (opt.length === 1) { + long = opt_list[opt][0]; + short = opt; + } else { + long = opt; + short = opt_list[opt][0]; + } + + //Parse opt_list + desc = opt_list[opt][1].trim(); + type = opt_list[opt].length >= 3 ? opt_list[opt][2] : null; + optional = opt_list[opt].length === 4 ? opt_list[opt][3] : null; + + //Build usage line + if (short === long) { + if (short.length === 1) { + line = ' -' + short; + } else { + line = ' --' + long; + } + } else if (short) { + line = ' -' + short + ', --' + long; + } else { + line = ' --' + long; + } + line += ' '; + + if (type) { + if (type instanceof Array) { + desc += '. VALUE must be either [' + type.join('|') + ']'; + type = 'VALUE'; + } + if (type === true || type === 1) { + type = long.toUpperCase(); + } + type = type.toUpperCase(); + if (type === 'FLOAT' || type === 'INT') { + type = 'NUMBER'; + } + line += optional ? '[' + type + ']' : type; + } + line = pad(line, switch_pad); + line += trunc_desc(line, desc); + line += optional ? ' (Default is ' + optional + ')' : ''; + console.error(line.replace('%s', '%\0s')); + + seen_opts.push(short); + seen_opts.push(long); + } + if (enable.timeout && seen_opts.indexOf('t') === -1 && seen_opts.indexOf('timeout') === -1) { + console.error(pad(' -t, --timeout N', switch_pad) + 'Exit if the process takes longer than N seconds'); + } + if (enable.status) { + if (seen_opts.indexOf('k') === -1 && seen_opts.indexOf('no-color') === -1) { + console.error(pad(' -k, --no-color', switch_pad) + 'Omit color from output'); + } + if (seen_opts.indexOf('debug') === -1) { + console.error(pad(' --debug', switch_pad) + 'Show debug information'); + } + } + if (enable.catchall && seen_opts.indexOf('c') === -1 && seen_opts.indexOf('catch') === -1) { + console.error(pad(' -c, --catch', switch_pad) + 'Catch unanticipated errors'); + } + if (enable.daemon && seen_opts.indexOf('d') === -1 && seen_opts.indexOf('daemon') === -1) { + console.error(pad(' -d, --daemon [ARG]', switch_pad) + 'Daemonize the process. Control the daemon using [start, stop, restart, log, pid]'); + } + if (enable.version && seen_opts.indexOf('v') === -1 && seen_opts.indexOf('version') === -1) { + console.error(pad(' -v, --version', switch_pad) + 'Display the current version'); + } + if (enable.help && seen_opts.indexOf('h') === -1 && seen_opts.indexOf('help') === -1) { + console.error(pad(' -h, --help', switch_pad) + 'Display help and usage details'); + } + if (command_list.length) { + console.error('\n\x1b[1mCommands\x1b[0m: '); + if (!Array.isArray(commands)) { + for (var c in commands) { + line = ' ' + pad(c, switch_pad - 2); + line += trunc_desc(line, commands[c]); + console.error(line); + } + } else { + command_list.sort(); + console.error(' ' + trunc_desc(' ', command_list.join(', '))); + } + } + return cli.exit(code); +}; + +/** + * Generates an error message when an opt is incorrectly used. + * + * @param {String} expects (e.g. 'a value') + * @param {String} type (e.g. 'VALUE') + * @api public + */ +cli.getOptError = function (expects, type) { + var err = full_opt + ' expects ' + expects + + '. Use `' + cli.app + ' ' + full_opt + (is_long ? '=' : ' ') + type + '`'; + return err; +}; + +/** + * Gets the next opt value and validates it with an optional validation + * function. If validation fails or no value can be obtained, this method + * will return the default value (if specified) or exit with err_msg. + * + * @param {String} default_val + * @param {Function} validate_func + * @param {String} err_msg + * @api public + */ +cli.getValue = function (default_val, validate_func, err_msg) { + err_msg = err_msg || cli.getOptError('a value', 'VALUE'); + + var value; + + try { + if (curr_val) { + if (validate_func) { + curr_val = validate_func(curr_val); + } + return curr_val; + } + + //Grouped short opts aren't allowed to have values + if (short_tags.length) { + throw 'Short tags'; + } + + //If there's no args left or the next arg is an opt, return the + //default value (if specified) - otherwise fail + if (!argv.length || (argv[0].length === 1 && argv[0][0] === '-')) { + throw 'No value'; + } + + value = argv.shift(); + + if (value.match(/^[0-9]+$/)) { + value = parseInt(value, 10); + } + + //Run the value through a validation/transformation function if specified + if (validate_func) { + value = validate_func(value); + } + } catch (e) { + + //The value didn't pass the validation/transformation. Unshift the value and + //return the default value (if specified) + if (value) { + argv.unshift(value); + } + return default_val != null ? default_val : cli.fatal(err_msg); + } + return value; +}; + +cli.getInt = function (default_val) { + return cli.getValue(default_val, function (value) { + if (typeof value === 'number') return value; + if (!value.match(/^(?:-?(?:0|[1-9][0-9]*))$/)) { + throw 'Invalid int'; + } + return parseInt(value); + }, cli.getOptError('a number', 'NUMBER')); +} + +cli.getFloat = function (default_val) { + return cli.getValue(default_val, function (value) { + if (!value.match(/^(?:-?(?:0|[1-9][0-9]*))?(?:\.[0-9]*)?$/)) { + throw 'Invalid float'; + } + return parseFloat(value, 10); + }, cli.getOptError('a number', 'NUMBER')); +} + +cli.getUrl = function (default_val, identifier) { + identifier = identifier || 'url'; + return cli.getValue(default_val, function (value) { + if (!value.match(/^(?:(?:ht|f)tp(?:s?)\:\/\/|~\/|\/)?(?:\w+:\w+@)?((?:(?:[-\w\d{1-3}]+\.)+(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|edu|co\.uk|ac\.uk|it|fr|tv|museum|asia|local|travel|[a-z]{2})?)|((\b25[0-5]\b|\b[2][0-4][0-9]\b|\b[0-1]?[0-9]?[0-9]\b)(\.(\b25[0-5]\b|\b[2][0-4][0-9]\b|\b[0-1]?[0-9]?[0-9]\b)){3}))(?::[\d]{1,5})?(?:(?:(?:\/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|\/)+|\?|#)?(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?:#(?:[-\w~!$ |\/.,*:;=]|%[a-f\d]{2})*)?$/i)) { + throw 'Invalid URL'; + } + return value; + }, cli.getOptError('a ' + identifier, identifier.toUpperCase())); +} + +cli.getEmail = function (default_val) { + return cli.getValue(default_val, function (value) { + if (!value.match(/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/)) { + throw 'Invalid email'; + } + return value; + }, cli.getOptError('an email', 'EMAIL')); +} + +cli.getIp = function (default_val) { + return cli.getValue(default_val, function (value) { + if (!value.match(/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/)) { + throw 'Invalid IP'; + } + return value; + }, cli.getOptError('an IP', 'IP')); +} + +cli.getPath = function (default_val, identifier) { + identifier = identifier || 'path'; + return cli.getValue(default_val, function (value) { + if (value.match(/[?*;{}]/)) { + throw 'Invalid path'; + } + return value; + }, cli.getOptError('a ' + identifier, identifier.toUpperCase())); +} + +cli.getArrayValue = function (arr, default_val) { + return cli.getValue(default_val, function (value) { + if (arr.indexOf(value) === -1) { + throw 'Unexpected value'; + } + return value; + }, cli.getOptError('either [' + arr.join('|') + ']', 'VALUE')); +} + +/** + * Gets all data from STDIN (with optional encoding) and sends it to callback. + * + * @param {String} encoding (optional - default is 'utf8') + * @param {Function} callback + * @api public + */ +cli.withStdin = function (encoding, callback) { + if (typeof encoding === 'function') { + callback = encoding; + encoding = 'utf8'; + } + var stream = process.openStdin(), data = ''; + stream.setEncoding(encoding); + stream.on('data', function (chunk) { + data += chunk; + }); + stream.on('end', function () { + callback.apply(cli, [data]); + }); +}; + +/** + * Gets all data from STDIN, splits the data into lines and sends it + * to callback (callback isn't called until all of STDIN is read. To + * process each line as it's received, see the method below + * + * @param {Function} callback + * @api public + */ +cli.withStdinLines = function (callback) { + cli.withStdin(function (data) { + var sep = data.indexOf('\r\n') !== -1 ? '\r\n' : '\n'; + callback.apply(cli, [data.split(sep), sep]); + }); +}; + +/** + * Asynchronously reads a file line by line. When a line is received, + * callback is called with (line, sep) - when EOF is reached, callback + * receives (null, null, true) + * + * @param {String} file (optional - default is 'stdin') + * @param {String} encoding (optional - default is 'utf8') + * @param {Function} callback (line, sep, eof) + * @api public + */ +cli.withInput = function (file, encoding, callback) { + if (typeof encoding === 'function') { + callback = encoding; + encoding = 'utf8'; + } else if (typeof file === 'function') { + callback = file; + encoding = 'utf8'; + file = 'stdin'; + } + if (file === 'stdin') { + file = process.openStdin(); + } else { + try { + file = cli.native.fs.createReadStream(file); + file.on('error', cli.fatal); + } catch (e) { + return cli.fatal(e); + } + } + file.setEncoding(encoding); + var lines = [], data = '', eof, sep; + file.on('data', function (chunk) { + if (eof) return; + data += chunk; + if (!sep) { + if (data.indexOf('\r\n') !== -1) { + sep = '\r\n'; + } else if (data.indexOf('\n') !== -1) { + sep = '\n'; + } else { + last_line = data; + return; + } + } + lines = data.split(sep); + data = eof ? null : lines.pop(); + while (lines.length) { + callback.apply(cli, [lines.shift(), sep, false]); + } + }); + file.on('end', function () { + eof = true; + if (data.length) { + callback.apply(cli, [data, sep || '', false]); + } + callback.apply(cli, [null, null, true]); + }); +}; + +/** + * A method for creating and controlling a daemon. + * + * `arg` can be: + * start = daemonizes the process + * stop = stops the daemon if it is running + * restart = alias for stop -> start + * pid = outputs the daemon's PID if it is running + * log = outputs the daemon's log file (stdout + stderr) + * + * @param {String} arg (Optional - default is 'start') + * @param {Function} callback + * @api public + */ +cli.daemon = function (arg, callback) { + if (typeof daemon === 'undefined') { + cli.fatal('Daemon is not initialized'); + } + + if (typeof arg === 'function') { + callback = arg; + arg = 'start'; + } + + var lock_file = '/tmp/' + cli.app + '.pid', + log_file = '/tmp/' + cli.app + '.log'; + + var start = function () { + daemon.daemonize(log_file, lock_file, function (err) { + if (err) return cli.error('Error starting daemon: ' + err); + callback(); + }); + }; + + var stop = function () { + try { + cli.native.fs.readFileSync(lock_file); + } catch (e) { + return cli.error('Daemon is not running'); + } + daemon.kill(lock_file, function (err, pid) { + if (err && err.errno === 3) { + return cli.error('Daemon is not running'); + } else if (err) { + return cli.error('Error stopping daemon: ' + err.errno); + } + cli.ok('Successfully stopped daemon with pid: ' + pid); + }); + }; + + switch(arg) { + case 'stop': + stop(); + break; + case 'restart': + daemon.stop(lock_file, function () { + start(); + }); + break; + case 'log': + try { + cli.native.fs.createReadStream(log_file, {encoding: 'utf8'}).pipe(process.stdout); + } catch (e) { + return cli.error('No daemon log file'); + } + break; + case 'pid': + try { + var pid = cli.native.fs.readFileSync(lock_file, 'utf8'); + cli.native.fs.statSync('/proc/' + pid); + cli.info(pid); + } catch (e) { + return cli.error('Daemon is not running'); + } + break; + default: + start(); + break; + } +} + +/** + * The main entry method. Calling cli.main() is only necessary in + * scripts that have daemon support enabled. `callback` receives (args, options) + * + * @param {Function} callback + * @api public + */ +cli.main = function (callback) { + var after = function () { + callback.apply(cli, [cli.args, cli.options]); + }; + if (enable.daemon && daemon_arg) { + cli.daemon(daemon_arg, after); + } else { + after(); + } +} + +/** + * Bind creationix's stack (https://github.com/creationix/stack). + * + * Create a simple middleware stack by calling: + * + * cli.createServer(middleware).listen(port); + * + * @return {Server} server + * @api public + */ +cli.createServer = function(/*layers*/) { + var defaultStackErrorHandler = function (req, res, err) { + if (err) { + console.error(err.stack); + res.writeHead(500, {"Content-Type": "text/plain"}); + return res.end(err.stack + "\n"); + } + res.writeHead(404, {"Content-Type": "text/plain"}); + res.end("Not Found\n"); + }; + var handle, error; + handle = error = defaultStackErrorHandler; + var layers = Array.prototype.slice.call(arguments); + + //Allow createServer(a,b,c) and createServer([a,b,c]) + if (layers.length && layers[0] instanceof Array) { + layers = layers[0]; + } + layers.reverse().forEach(function (layer) { + var child = handle; + handle = function (req, res) { + try { + layer(req, res, function (err) { + if (err) return error(req, res, err); + child(req, res); + }); + } catch (err) { + error(req, res, err); + } + }; + }); + return cli.native.http.createServer(handle); +}; + +/** + * A wrapper for child_process.exec(). + * + * If the child_process exits successfully, `callback` receives an array of + * stdout lines. The current process exits if the child process has an error + * and `errback` isn't defined. + * + * @param {String} cmd + * @param {Function} callback (optional) + * @param {Function} errback (optional) + * @api public + */ +cli.exec = function (cmd, callback, errback) { + cli.native.child_process.exec(cmd, function (err, stdout, stderr) { + err = err || stderr; + if (err) { + if (errback) { + return errback(err, stdout); + } + return cli.fatal('exec() failed\n' + err); + } + if (callback) { + callback(stdout.split('\n')); + } + }); +}; + +/** + * Helper method for outputting a progress bar to the console. + * + * @param {Number} progress (0 <= progress <= 1) + * @api public + */ +var last_progress_call, progress_len = 74; +cli.progress = function (progress, decimals, stream) { + stream = stream || process.stdout; + if (progress < 0 || progress > 1 || isNaN(progress)) return; + if (!decimals) decimals = 0; + var now = (new Date()).getTime(); + if (last_progress_call && (now - last_progress_call) < 100 && progress !== 1) { + return; //Throttle progress calls + } + last_progress_call = now; + + + var barLength = Math.floor(progress_len * progress), + str = ''; + if (barLength == 0 && progress > 0) { + barLength = 1; + } + for (var i = 1; i <= progress_len; i++) { + str += i <= barLength ? '#' : ' '; + } + var pwr = Math.pow(10, decimals); + var percentage = Math.floor(progress * 100 * pwr) / pwr + '%'; + for (i = 0; i < decimals; i++) { + percentage += ' '; + } + stream.clearLine(); + stream.write('[' + str + '] ' + percentage); + if (progress === 1) { + stream.write('\n'); + } else { + stream.cursorTo(0); + } +}; + +/** + * Helper method for outputting a spinner to the console. + * + * @param {String|Boolean} prefix (optional) + * @api public + */ +var spinnerInterval; +cli.spinner = function (prefix, end, stream) { + stream = stream || process.stdout; + if (end) { + stream.clearLine(); + stream.cursorTo(0); + stream.write(prefix + '\n'); + return clearInterval(spinnerInterval); + } + prefix = prefix + ' ' || ''; + var spinner = ['-','\\','|','/'], i = 0, l = spinner.length; + spinnerInterval = setInterval(function () { + stream.clearLine(); + stream.cursorTo(0); + stream.write(prefix + spinner[i++]); + if (i == l) i = 0; + }, 200); +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/cat.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/cat.js new file mode 100644 index 00000000..14c4e79c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/cat.js @@ -0,0 +1,17 @@ +#!/usr/bin/env node + +var cli = require('cli'); + +var output_file = function (file) { + cli.withInput(file, function (line, sep, eof) { + if (!eof) { + cli.output(line + sep); + } else if (cli.args.length) { + output_file(cli.args.shift()); + } + }); +}; + +if (cli.args.length) { + output_file(cli.args.shift()); +} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/command.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/command.js new file mode 100644 index 00000000..2f04491e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/command.js @@ -0,0 +1,16 @@ +#!/usr/bin/env node + +var cli = require('cli'); + +//The second (optional) argument of cli.parse() is a command list +//Type `./command.js --help` for usage info + +//cli enables auto-completion of commands (similiar to npm), e.g. all of +//the following are equivalent and result in "Command is: install": +// $ ./command.js install +// $ ./command.js inst +// $ ./command.js i + +cli.parse(null, ['install', 'test', 'edit', 'remove', 'uninstall', 'ls']); + +console.log('Command is: ' + cli.command); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/echo.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/echo.js new file mode 100644 index 00000000..9cf27d09 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/echo.js @@ -0,0 +1,54 @@ +#!/usr/bin/env node + +/* All of the following commands are equivalent and write `foo\tbar foo` to out.txt + $ ./echo.js -n -e --output=out.txt "foo\tbar" "foo" + $ ./echo.js --newline --escape --output "out.txt" "foo\tbar" "foo" + $ ./echo.js -ne --output=out.txt "foo\tbar" "foo" + $ ./echo.js -en --output="out.txt" "foo\tbar" "foo" +*/ + +var cli = require('cli'); + +cli.parse({ + newline: ['n', 'Do not output the trailing newline'], + escape: ['e', 'Enable interpretation of backslash escapes'], + separator: ['s', 'Separate arguments using this value', 'string', ' '], + output: [false, 'Write to FILE rather than the console', 'file'] +}); + +cli.main(function (args, options) { + var output = '', i, j, l, output_stream; + + if (this.argc) { + if (options.escape) { + var replace = {'\\n':'\n','\\r':'\r','\\t':'\t','\\e':'\e','\\v':'\v','\\f':'\f','\\c':'\c','\\b':'\b','\\a':'\a','\\\\':'\\'}; + var escape = function (str) { + str += ''; + for (j in replace) { + str = str.replace(i, replace[i]); + } + return str; + } + for (i = 0, l = this.argc; i < l; i++) { + args[i] = escape(args[i]); + } + options.separator = escape(options.separator); + } + output += args.join(options.separator); + } + + if (!options.newline) { + output += '\n'; + } + + try { + if (options.output) { + output_stream = this.native.fs.createWriteStream(options.output) + } else { + output_stream = process.stdout; + } + output_stream.write(output); + } catch (e) { + this.fatal('Could not write to output stream'); + } +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/glob.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/glob.js new file mode 100644 index 00000000..12585c01 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/glob.js @@ -0,0 +1,6 @@ +#!/usr/bin/env node + +var cli = require('cli').enable('glob'); + +//Running `./glob.js *.js` will output a list of .js files in this directory +console.log(cli.args); \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/long_desc.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/long_desc.js new file mode 100644 index 00000000..63632f4b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/long_desc.js @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +var cli = require('../'); + +//You can (optionally) boost the width of output with: +//cli.width = 120; + +//You can also adjust the width of the options/command definitions +//cli.option_width = 25; + +var long_desc = 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\'s ' + + 'standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make' + + ' a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, ' + + 'remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing ' + + 'Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions' + + ' of Lorem Ipsum.'; + +cli.parse({ + foo: ['f', long_desc] +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/progress.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/progress.js new file mode 100644 index 00000000..300c6740 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/progress.js @@ -0,0 +1,11 @@ +#!/usr/bin/env node + +var cli = require('cli'); + +var i = 0, interval = setInterval(function () { + cli.progress(++i / 100); + if (i === 100) { + clearInterval(interval); + cli.ok('Finished!'); + } +}, 50); \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/sort.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/sort.js new file mode 100644 index 00000000..5d223133 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/sort.js @@ -0,0 +1,18 @@ +#!/usr/bin/env node + +var cli = require('cli'); + +var options = cli.parse({ + numeric: ['n', 'Compare using a numeric sort'], + reverse: ['r', 'Reverse the results'] +}); + +cli.withStdinLines(function (lines, newline) { + lines.sort(!options.numeric ? null : function (a, b) { + return parseInt(a) > parseInt(b); + }); + if (options.reverse) { + lines.reverse(); + } + this.output(lines.join(newline)); +}); \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/spinner.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/spinner.js new file mode 100644 index 00000000..61000013 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/spinner.js @@ -0,0 +1,9 @@ +#!/usr/bin/env node + +var cli = require('cli'); + +cli.spinner('Working..'); + +setTimeout(function () { + cli.spinner('Working.. done!', true); //End the spinner +}, 3000); \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/static.coffee b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/static.coffee new file mode 100644 index 00000000..cbf3b16e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/static.coffee @@ -0,0 +1,27 @@ +#!/usr/bin/env coffee + +cli = require 'cli' + +cli.enable('daemon','status') + .setUsage('static.coffee [OPTIONS]') + +cli.parse { + log: ['l', 'Enable logging'] + port: ['p', 'Listen on this port', 'number', 8080] + serve: [false, 'Serve static files from PATH', 'path', './public'] +} + +middleware = [] + +cli.main (args, options) -> + + if options.log + @debug 'Enabling logging' + middleware.push require('creationix/log')() + + @debug 'Serving files from ' + options.serve + middleware.push require('creationix/static')('/', options.serve, 'index.html') + + server = @createServer(middleware).listen options.port + + @ok 'Listening on port ' + options.port \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/static.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/static.js new file mode 100644 index 00000000..eb6fd248 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/examples/static.js @@ -0,0 +1,25 @@ +#!/usr/bin/env node + +var cli = require('cli').enable('status', 'daemon'); + +cli.parse({ + log: ['l', 'Enable logging'], + port: ['p', 'Listen on this port', 'number', 8080], + serve: [false, 'Serve static files from PATH', 'path', './public'] +}); + +cli.main(function (args, options) { + var server, middleware = []; + + if (options.log) { + this.debug('Enabling logging'); + middleware.push(require('creationix/log')()); + } + + this.debug('Serving files from ' + options.serve); + middleware.push(require('creationix/static')('/', options.serve, 'index.html')); + + server = this.createServer(middleware).listen(options.port); + + this.ok('Listening on port ' + options.port); +}); \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/index.js new file mode 100644 index 00000000..3966bd73 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/index.js @@ -0,0 +1 @@ +module.exports = require('./cli'); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/package.json new file mode 100644 index 00000000..b3eb4344 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/package.json @@ -0,0 +1,100 @@ +{ + "_args": [ + [ + "cli@0.6.x", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint" + ] + ], + "_from": "cli@>=0.6.0 <0.7.0", + "_id": "cli@0.6.6", + "_inCache": true, + "_installable": true, + "_location": "/cli", + "_nodeVersion": "0.12.1", + "_npmUser": { + "email": "cohara87@gmail.com", + "name": "cohara87" + }, + "_npmVersion": "2.7.3", + "_phantomChildren": {}, + "_requested": { + "name": "cli", + "raw": "cli@0.6.x", + "rawSpec": "0.6.x", + "scope": null, + "spec": ">=0.6.0 <0.7.0", + "type": "range" + }, + "_requiredBy": [ + "/jshint" + ], + "_resolved": "https://registry.npmjs.org/cli/-/cli-0.6.6.tgz", + "_shasum": "02ad44a380abf27adac5e6f0cdd7b043d74c53e3", + "_shrinkwrap": null, + "_spec": "cli@0.6.x", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint", + "author": { + "email": "cohara87@gmail.com", + "name": "Chris O'Hara" + }, + "bugs": { + "url": "http://github.com/chriso/cli/issues" + }, + "contributors": [ + { + "name": "Douglas Meyer" + } + ], + "dependencies": { + "exit": "0.1.2", + "glob": "~ 3.2.1" + }, + "description": "A tool for rapidly building command line apps", + "devDependencies": {}, + "directories": {}, + "dist": { + "shasum": "02ad44a380abf27adac5e6f0cdd7b043d74c53e3", + "tarball": "https://registry.npmjs.org/cli/-/cli-0.6.6.tgz" + }, + "engines": { + "node": ">=0.2.5" + }, + "gitHead": "088e01c2df81b0850ae4ae2daa7827fb6dcf0502", + "homepage": "http://github.com/chriso/cli", + "keywords": [ + "cli", + "command line", + "opts", + "parseopt", + "opt", + "args", + "console", + "argsparse", + "optparse", + "daemon", + "autocomplete", + "command", + "autocompletion" + ], + "licenses": [ + { + "type": "MIT" + } + ], + "main": "cli.js", + "maintainers": [ + { + "email": "cohara87@gmail.com", + "name": "cohara87" + } + ], + "name": "cli", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/chriso/cli.git" + }, + "scripts": {}, + "version": "0.6.6" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/progress.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/progress.js new file mode 100644 index 00000000..2e524b37 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/progress.js @@ -0,0 +1,11 @@ +#!/usr/bin/env node + +var cli = require('./'); + +var i = 0, interval = setInterval(function () { + cli.progress(++i / 100); + if (i === 100) { + clearInterval(interval); + cli.ok('Finished!'); + } +}, 50); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/spinner.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/spinner.js new file mode 100644 index 00000000..a7e339b8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cli/spinner.js @@ -0,0 +1,9 @@ +#!/usr/bin/env node + +var cli = require('./'); + +cli.spinner('Working..'); + +setTimeout(function () { + cli.spinner('Working.. done!', true); //End the spinner +}, 3000); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/commander/History.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/commander/History.md new file mode 100644 index 00000000..ce046f6f --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/commander/History.md @@ -0,0 +1,174 @@ + +1.3.2 / 2013-07-18 +================== + + * add support for sub-commands to co-exist with the original command + +1.3.1 / 2013-07-18 +================== + + * add quick .runningCommand hack so you can opt-out of other logic when running a sub command + +1.3.0 / 2013-07-09 +================== + + * add EACCES error handling + * fix sub-command --help + +1.2.0 / 2013-06-13 +================== + + * allow "-" hyphen as an option argument + * support for RegExp coercion + +1.1.1 / 2012-11-20 +================== + + * add more sub-command padding + * fix .usage() when args are present. Closes #106 + +1.1.0 / 2012-11-16 +================== + + * add git-style executable subcommand support. Closes #94 + +1.0.5 / 2012-10-09 +================== + + * fix `--name` clobbering. Closes #92 + * fix examples/help. Closes #89 + +1.0.4 / 2012-09-03 +================== + + * add `outputHelp()` method. + +1.0.3 / 2012-08-30 +================== + + * remove invalid .version() defaulting + +1.0.2 / 2012-08-24 +================== + + * add `--foo=bar` support [arv] + * fix password on node 0.8.8. Make backward compatible with 0.6 [focusaurus] + +1.0.1 / 2012-08-03 +================== + + * fix issue #56 + * fix tty.setRawMode(mode) was moved to tty.ReadStream#setRawMode() (i.e. process.stdin.setRawMode()) + +1.0.0 / 2012-07-05 +================== + + * add support for optional option descriptions + * add defaulting of `.version()` to package.json's version + +0.6.1 / 2012-06-01 +================== + + * Added: append (yes or no) on confirmation + * Added: allow node.js v0.7.x + +0.6.0 / 2012-04-10 +================== + + * Added `.prompt(obj, callback)` support. Closes #49 + * Added default support to .choose(). Closes #41 + * Fixed the choice example + +0.5.1 / 2011-12-20 +================== + + * Fixed `password()` for recent nodes. Closes #36 + +0.5.0 / 2011-12-04 +================== + + * Added sub-command option support [itay] + +0.4.3 / 2011-12-04 +================== + + * Fixed custom help ordering. Closes #32 + +0.4.2 / 2011-11-24 +================== + + * Added travis support + * Fixed: line-buffered input automatically trimmed. Closes #31 + +0.4.1 / 2011-11-18 +================== + + * Removed listening for "close" on --help + +0.4.0 / 2011-11-15 +================== + + * Added support for `--`. Closes #24 + +0.3.3 / 2011-11-14 +================== + + * Fixed: wait for close event when writing help info [Jerry Hamlet] + +0.3.2 / 2011-11-01 +================== + + * Fixed long flag definitions with values [felixge] + +0.3.1 / 2011-10-31 +================== + + * Changed `--version` short flag to `-V` from `-v` + * Changed `.version()` so it's configurable [felixge] + +0.3.0 / 2011-10-31 +================== + + * Added support for long flags only. Closes #18 + +0.2.1 / 2011-10-24 +================== + + * "node": ">= 0.4.x < 0.7.0". Closes #20 + +0.2.0 / 2011-09-26 +================== + + * Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs] + +0.1.0 / 2011-08-24 +================== + + * Added support for custom `--help` output + +0.0.5 / 2011-08-18 +================== + + * Changed: when the user enters nothing prompt for password again + * Fixed issue with passwords beginning with numbers [NuckChorris] + +0.0.4 / 2011-08-15 +================== + + * Fixed `Commander#args` + +0.0.3 / 2011-08-15 +================== + + * Added default option value support + +0.0.2 / 2011-08-15 +================== + + * Added mask support to `Command#password(str[, mask], fn)` + * Added `Command#password(str, fn)` + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/commander/Readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/commander/Readme.md new file mode 100644 index 00000000..ed0aeb2c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/commander/Readme.md @@ -0,0 +1,276 @@ +# Commander.js + + The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander). + + [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js) + +## Installation + + $ npm install commander + +## Option parsing + + Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('commander'); + +program + .version('0.0.1') + .option('-p, --peppers', 'Add peppers') + .option('-P, --pineapple', 'Add pineapple') + .option('-b, --bbq', 'Add bbq sauce') + .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') + .parse(process.argv); + +console.log('you ordered a pizza with:'); +if (program.peppers) console.log(' - peppers'); +if (program.pineapple) console.log(' - pineapple'); +if (program.bbq) console.log(' - bbq'); +console.log(' - %s cheese', program.cheese); +``` + + Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. + +## Automated --help + + The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free: + +``` + $ ./examples/pizza --help + + Usage: pizza [options] + + Options: + + -V, --version output the version number + -p, --peppers Add peppers + -P, --pineapple Add pineapple + -b, --bbq Add bbq sauce + -c, --cheese Add the specified type of cheese [marble] + -h, --help output usage information + +``` + +## Coercion + +```js +function range(val) { + return val.split('..').map(Number); +} + +function list(val) { + return val.split(','); +} + +program + .version('0.0.1') + .usage('[options] ') + .option('-i, --integer ', 'An integer argument', parseInt) + .option('-f, --float ', 'A float argument', parseFloat) + .option('-r, --range ..', 'A range', range) + .option('-l, --list ', 'A list', list) + .option('-o, --optional [value]', 'An optional value') + .parse(process.argv); + +console.log(' int: %j', program.integer); +console.log(' float: %j', program.float); +console.log(' optional: %j', program.optional); +program.range = program.range || []; +console.log(' range: %j..%j', program.range[0], program.range[1]); +console.log(' list: %j', program.list); +console.log(' args: %j', program.args); +``` + +## Custom help + + You can display arbitrary `-h, --help` information + by listening for "--help". Commander will automatically + exit once you are done so that the remainder of your program + does not execute causing undesired behaviours, for example + in the following executable "stuff" will not output when + `--help` is used. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('../'); + +function list(val) { + return val.split(',').map(Number); +} + +program + .version('0.0.1') + .option('-f, --foo', 'enable some foo') + .option('-b, --bar', 'enable some bar') + .option('-B, --baz', 'enable some baz'); + +// must be before .parse() since +// node's emit() is immediate + +program.on('--help', function(){ + console.log(' Examples:'); + console.log(''); + console.log(' $ custom-help --help'); + console.log(' $ custom-help -h'); + console.log(''); +}); + +program.parse(process.argv); + +console.log('stuff'); +``` + +yielding the following help output: + +``` + +Usage: custom-help [options] + +Options: + + -h, --help output usage information + -V, --version output the version number + -f, --foo enable some foo + -b, --bar enable some bar + -B, --baz enable some baz + +Examples: + + $ custom-help --help + $ custom-help -h + +``` + +## .prompt(msg, fn) + + Single-line prompt: + +```js +program.prompt('name: ', function(name){ + console.log('hi %s', name); +}); +``` + + Multi-line prompt: + +```js +program.prompt('description:', function(name){ + console.log('hi %s', name); +}); +``` + + Coercion: + +```js +program.prompt('Age: ', Number, function(age){ + console.log('age: %j', age); +}); +``` + +```js +program.prompt('Birthdate: ', Date, function(date){ + console.log('date: %s', date); +}); +``` + +```js +program.prompt('Email: ', /^.+@.+\..+$/, function(email){ + console.log('email: %j', email); +}); +``` + +## .password(msg[, mask], fn) + +Prompt for password without echoing: + +```js +program.password('Password: ', function(pass){ + console.log('got "%s"', pass); + process.stdin.destroy(); +}); +``` + +Prompt for password with mask char "*": + +```js +program.password('Password: ', '*', function(pass){ + console.log('got "%s"', pass); + process.stdin.destroy(); +}); +``` + +## .confirm(msg, fn) + + Confirm with the given `msg`: + +```js +program.confirm('continue? ', function(ok){ + console.log(' got %j', ok); +}); +``` + +## .choose(list, fn) + + Let the user choose from a `list`: + +```js +var list = ['tobi', 'loki', 'jane', 'manny', 'luna']; + +console.log('Choose the coolest pet:'); +program.choose(list, function(i){ + console.log('you chose %d "%s"', i, list[i]); +}); +``` + +## .outputHelp() + + Output help information without exiting. + +## .help() + + Output help information and exit immediately. + +## Links + + - [API documentation](http://visionmedia.github.com/commander.js/) + - [ascii tables](https://github.com/LearnBoost/cli-table) + - [progress bars](https://github.com/visionmedia/node-progress) + - [more progress bars](https://github.com/substack/node-multimeter) + - [examples](https://github.com/visionmedia/commander.js/tree/master/examples) + +## License + +(The MIT License) + +Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/commander/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/commander/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/commander/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/commander/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/commander/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/commander/package.json new file mode 100644 index 00000000..df063459 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/commander/package.json @@ -0,0 +1,83 @@ +{ + "_args": [ + [ + "commander@1.3.2", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express" + ] + ], + "_from": "commander@1.3.2", + "_id": "commander@1.3.2", + "_inCache": true, + "_installable": true, + "_location": "/commander", + "_npmUser": { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + }, + "_npmVersion": "1.2.30", + "_phantomChildren": {}, + "_requested": { + "name": "commander", + "raw": "commander@1.3.2", + "rawSpec": "1.3.2", + "scope": null, + "spec": "1.3.2", + "type": "version" + }, + "_requiredBy": [ + "/express" + ], + "_resolved": "https://registry.npmjs.org/commander/-/commander-1.3.2.tgz", + "_shasum": "8a8f30ec670a6fdd64af52f1914b907d79ead5b5", + "_shrinkwrap": null, + "_spec": "commander@1.3.2", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express", + "author": { + "email": "tj@vision-media.ca", + "name": "TJ Holowaychuk" + }, + "bugs": { + "url": "https://github.com/visionmedia/commander.js/issues" + }, + "dependencies": { + "keypress": "0.1.x" + }, + "description": "the complete solution for node.js command-line programs", + "devDependencies": { + "should": ">= 0.0.1" + }, + "directories": {}, + "dist": { + "shasum": "8a8f30ec670a6fdd64af52f1914b907d79ead5b5", + "tarball": "https://registry.npmjs.org/commander/-/commander-1.3.2.tgz" + }, + "engines": { + "node": ">= 0.6.x" + }, + "homepage": "https://github.com/visionmedia/commander.js#readme", + "keywords": [ + "command", + "option", + "parser", + "prompt", + "stdin" + ], + "main": "index", + "maintainers": [ + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + } + ], + "name": "commander", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/visionmedia/commander.js.git" + }, + "scripts": { + "test": "make test" + }, + "version": "1.3.2" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/.npmignore new file mode 100644 index 00000000..497c2ecf --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/.npmignore @@ -0,0 +1,63 @@ +# Compiled source # +################### +*.com +*.class +*.dll +*.exe +*.o +*.so + +# Packages # +############ +# it's better to unpack these files and commit the raw source +# git has its own built in compression methods +*.7z +*.dmg +*.gz +*.iso +*.jar +*.rar +*.tar +*.zip + +# Logs and databases # +###################### +*.log +*.sql +*.sqlite + +# OS generated files # +###################### +.DS_Store* +# Icon? +ehthumbs.db +Thumbs.db + +# Node.js # +########### +lib-cov +*.seed +*.log +*.csv +*.dat +*.out +*.pid +*.gz + +pids +logs +results + +node_modules +npm-debug.log + +# Components # +############## + +/build +/components + +# Sublime Text # +############## +*.sublime-project +*.sublime-workspace \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/compressible/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/.travis.yml similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/compressible/.travis.yml rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/README.md new file mode 100644 index 00000000..9d102aea --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/README.md @@ -0,0 +1,51 @@ +# Compressible [![Build Status](https://travis-ci.org/expressjs/compressible.png)](https://travis-ci.org/expressjs/compressible) + +Compressible `Content-Type` / `mime` checking. + +## API + +### compressible(type) + +```js +var compressible = require('compressible') +compressible('text/html') // -> true +compressible('image/png') // -> false +``` + +### compressible.get(type) + +Returns the specifications object associated with the given `Content-Type`. +Generates an object using the regex if none is found. + +### compressible.specs + +Exports `specifications.json`. + +### compressible.regex + +The regular expression that checks the `Content-Type`. +However, you should use `compressible(type)` instead of this regular expression due to additional non-regex checks. + +## License + +The MIT License (MIT) + +Copyright (c) 2013 Jonathan Ong me@jongleberry.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/compressible/bench.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/bench.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/compressible/bench.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/bench.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/compressible/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/compressible/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/package.json new file mode 100644 index 00000000..dff54742 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/package.json @@ -0,0 +1,88 @@ +{ + "_args": [ + [ + "compressible@1.0.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression" + ] + ], + "_from": "compressible@1.0.0", + "_id": "compressible@1.0.0", + "_inCache": true, + "_installable": true, + "_location": "/compressible", + "_npmUser": { + "email": "fishrock123@rocketmail.com", + "name": "fishrock123" + }, + "_npmVersion": "1.3.22", + "_phantomChildren": {}, + "_requested": { + "name": "compressible", + "raw": "compressible@1.0.0", + "rawSpec": "1.0.0", + "scope": null, + "spec": "1.0.0", + "type": "version" + }, + "_requiredBy": [ + "/compression" + ], + "_resolved": "https://registry.npmjs.org/compressible/-/compressible-1.0.0.tgz", + "_shasum": "f83e49c1cb61421753545125a8011d68b492427d", + "_shrinkwrap": null, + "_spec": "compressible@1.0.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression", + "author": { + "email": "me@jongleberry.com", + "name": "Jonathan Ong", + "url": "http://jongleberry.com" + }, + "bugs": { + "url": "https://github.com/expressjs/compressible/issues" + }, + "contributors": { + "email": "fishrock123@rocketmail.com", + "name": "Jeremiah Senkpiel", + "twitter": "https://twitter.com/fishrock123", + "url": "https://searchbeam.jit.su" + }, + "dependencies": {}, + "description": "Compressible Content-Type / mime checking", + "devDependencies": { + "beautify-benchmark": "~0.2.4", + "benchmark": "*", + "mime": "*", + "mocha": "*" + }, + "directories": {}, + "dist": { + "shasum": "f83e49c1cb61421753545125a8011d68b492427d", + "tarball": "https://registry.npmjs.org/compressible/-/compressible-1.0.0.tgz" + }, + "homepage": "https://github.com/expressjs/compressible", + "keywords": [ + "compress", + "gzip", + "mime", + "content-type" + ], + "license": "MIT", + "maintainers": [ + { + "email": "fishrock123@rocketmail.com", + "name": "fishrock123" + } + ], + "name": "compressible", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/expressjs/compressible.git" + }, + "scripts": { + "posttest": "mocha --reporter spec bench.js", + "test": "mocha --reporter spec" + }, + "version": "1.0.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/compressible/specifications.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/specifications.json similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/compressible/specifications.json rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/specifications.json diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/compressible/test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/test.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/compressible/test.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compressible/test.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/.npmignore new file mode 100644 index 00000000..602eb8e1 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/.npmignore @@ -0,0 +1 @@ +test.js \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/.travis.yml similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/.travis.yml rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/Makefile new file mode 100644 index 00000000..7fbd904c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/Makefile @@ -0,0 +1,6 @@ +test: + @./node_modules/.bin/mocha \ + --require should \ + --reporter spec + +.PHONY: test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/README.md new file mode 100644 index 00000000..1680f322 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/README.md @@ -0,0 +1,51 @@ +# compression [![Build Status](https://travis-ci.org/expressjs/compression.png)](https://travis-ci.org/expressjs/compression) + +Connect's compress middleware as its own module. Works with and without Connect. + +```js +var compress = require('compression')() + +http.createServer(function (req, res) { + compress(req, res, function (err) { + if (err) throw err + + res.end('hello world') + }) +}) + +var app = require('connect')() +app.use(compress) +``` + +## API + +### var middleware = compress([options]) + +In addition to `zlib` options, additional options are: + +- `threshold` <1kb> - only compress the response if the byte size is at or above a threshold +- `filter` - a filter callback function + +## License + +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong me@jongleberry.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/.npmignore new file mode 100644 index 00000000..9daeafb9 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/.npmignore @@ -0,0 +1 @@ +test diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/History.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/History.md new file mode 100644 index 00000000..f233ed16 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/History.md @@ -0,0 +1,15 @@ + +0.2.1 / 2013-04-01 +================== + + * add .component + +0.2.0 / 2012-10-28 +================== + + * bytes(200).should.eql('200b') + +0.1.0 / 2012-07-04 +================== + + * add bytes to string conversion [yields] diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/Makefile new file mode 100644 index 00000000..8e8640f2 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --reporter spec \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/Readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/Readme.md new file mode 100644 index 00000000..9325d5bf --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/Readme.md @@ -0,0 +1,51 @@ +# node-bytes + + Byte string parser / formatter. + +## Example: + +```js +bytes('1kb') +// => 1024 + +bytes('2mb') +// => 2097152 + +bytes('1gb') +// => 1073741824 + +bytes(1073741824) +// => 1gb +``` + +## Installation + +``` +$ npm install bytes +$ component install visionmedia/bytes.js +``` + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/bytes/component.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/component.json similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/bytes/component.json rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/component.json diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/bytes/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/bytes/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/package.json new file mode 100644 index 00000000..55825a53 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/node_modules/bytes/package.json @@ -0,0 +1,67 @@ +{ + "_args": [ + [ + "bytes@0.2.1", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression" + ] + ], + "_from": "bytes@0.2.1", + "_id": "bytes@0.2.1", + "_inCache": true, + "_installable": true, + "_location": "/compression/bytes", + "_npmUser": { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + }, + "_npmVersion": "1.2.14", + "_phantomChildren": {}, + "_requested": { + "name": "bytes", + "raw": "bytes@0.2.1", + "rawSpec": "0.2.1", + "scope": null, + "spec": "0.2.1", + "type": "version" + }, + "_requiredBy": [ + "/compression" + ], + "_resolved": "https://registry.npmjs.org/bytes/-/bytes-0.2.1.tgz", + "_shasum": "555b08abcb063f8975905302523e4cd4ffdfdf31", + "_shrinkwrap": null, + "_spec": "bytes@0.2.1", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression", + "author": { + "email": "tj@vision-media.ca", + "name": "TJ Holowaychuk", + "url": "http://tjholowaychuk.com" + }, + "component": { + "scripts": { + "bytes/index.js": "index.js" + } + }, + "dependencies": {}, + "description": "byte size string parser / serializer", + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "directories": {}, + "dist": { + "shasum": "555b08abcb063f8975905302523e4cd4ffdfdf31", + "tarball": "https://registry.npmjs.org/bytes/-/bytes-0.2.1.tgz" + }, + "main": "index.js", + "maintainers": [ + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + } + ], + "name": "bytes", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "version": "0.2.1" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/package.json new file mode 100644 index 00000000..15a9bd1b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/compression/package.json @@ -0,0 +1,79 @@ +{ + "_args": [ + [ + "compression@1.0.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect" + ] + ], + "_from": "compression@1.0.0", + "_id": "compression@1.0.0", + "_inCache": true, + "_installable": true, + "_location": "/compression", + "_npmUser": { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + }, + "_npmVersion": "1.3.22", + "_phantomChildren": {}, + "_requested": { + "name": "compression", + "raw": "compression@1.0.0", + "rawSpec": "1.0.0", + "scope": null, + "spec": "1.0.0", + "type": "version" + }, + "_requiredBy": [ + "/connect" + ], + "_resolved": "https://registry.npmjs.org/compression/-/compression-1.0.0.tgz", + "_shasum": "8aeb85d48db5145d38bc8b181b6352d8eab26020", + "_shrinkwrap": null, + "_spec": "compression@1.0.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect", + "author": { + "email": "me@jongleberry.com", + "name": "Jonathan Ong", + "url": "http://jongleberry.com" + }, + "bugs": { + "url": "https://github.com/expressjs/compression/issues" + }, + "dependencies": { + "bytes": "0.2.1", + "compressible": "1.0.0", + "negotiator": "0.3.0" + }, + "description": "Compression middleware for connect and node.js", + "devDependencies": { + "connect": "*", + "mocha": "*", + "should": "*", + "supertest": "*" + }, + "directories": {}, + "dist": { + "shasum": "8aeb85d48db5145d38bc8b181b6352d8eab26020", + "tarball": "https://registry.npmjs.org/compression/-/compression-1.0.0.tgz" + }, + "homepage": "https://github.com/expressjs/compression", + "license": "MIT", + "maintainers": [ + { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + } + ], + "name": "compression", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/expressjs/compression.git" + }, + "scripts": { + "test": "make test" + }, + "version": "1.0.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/commander/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/.travis.yml similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/commander/.travis.yml rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/minimist/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/LICENSE similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/minimist/LICENSE rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/LICENSE diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/README.markdown b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/README.markdown new file mode 100644 index 00000000..408f70a1 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/README.markdown @@ -0,0 +1,62 @@ +concat-map +========== + +Concatenative mapdashery. + +[![browser support](http://ci.testling.com/substack/node-concat-map.png)](http://ci.testling.com/substack/node-concat-map) + +[![build status](https://secure.travis-ci.org/substack/node-concat-map.png)](http://travis-ci.org/substack/node-concat-map) + +example +======= + +``` js +var concatMap = require('concat-map'); +var xs = [ 1, 2, 3, 4, 5, 6 ]; +var ys = concatMap(xs, function (x) { + return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; +}); +console.dir(ys); +``` + +*** + +``` +[ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ] +``` + +methods +======= + +``` js +var concatMap = require('concat-map') +``` + +concatMap(xs, fn) +----------------- + +Return an array of concatenated elements by calling `fn(x, i)` for each element +`x` and each index `i` in the array `xs`. + +When `fn(x, i)` returns an array, its result will be concatenated with the +result array. If `fn(x, i)` returns anything else, that value will be pushed +onto the end of the result array. + +install +======= + +With [npm](http://npmjs.org) do: + +``` +npm install concat-map +``` + +license +======= + +MIT + +notes +===== + +This module was written while sitting high above the ground in a tree. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/example/map.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/example/map.js new file mode 100644 index 00000000..33656217 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/example/map.js @@ -0,0 +1,6 @@ +var concatMap = require('../'); +var xs = [ 1, 2, 3, 4, 5, 6 ]; +var ys = concatMap(xs, function (x) { + return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; +}); +console.dir(ys); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/index.js new file mode 100644 index 00000000..b29a7812 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/index.js @@ -0,0 +1,13 @@ +module.exports = function (xs, fn) { + var res = []; + for (var i = 0; i < xs.length; i++) { + var x = fn(xs[i], i); + if (isArray(x)) res.push.apply(res, x); + else res.push(x); + } + return res; +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/package.json new file mode 100644 index 00000000..84f2780d --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/package.json @@ -0,0 +1,109 @@ +{ + "_args": [ + [ + "concat-map@0.0.1", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\brace-expansion" + ] + ], + "_from": "concat-map@0.0.1", + "_id": "concat-map@0.0.1", + "_inCache": true, + "_installable": true, + "_location": "/concat-map", + "_npmUser": { + "email": "mail@substack.net", + "name": "substack" + }, + "_npmVersion": "1.3.21", + "_phantomChildren": {}, + "_requested": { + "name": "concat-map", + "raw": "concat-map@0.0.1", + "rawSpec": "0.0.1", + "scope": null, + "spec": "0.0.1", + "type": "version" + }, + "_requiredBy": [ + "/brace-expansion" + ], + "_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "_shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b", + "_shrinkwrap": null, + "_spec": "concat-map@0.0.1", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\brace-expansion", + "author": { + "email": "mail@substack.net", + "name": "James Halliday", + "url": "http://substack.net" + }, + "bugs": { + "url": "https://github.com/substack/node-concat-map/issues" + }, + "dependencies": {}, + "description": "concatenative mapdashery", + "devDependencies": { + "tape": "~2.4.0" + }, + "directories": { + "example": "example", + "test": "test" + }, + "dist": { + "shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b", + "tarball": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + }, + "homepage": "https://github.com/substack/node-concat-map", + "keywords": [ + "concat", + "concatMap", + "map", + "functional", + "higher-order" + ], + "license": "MIT", + "main": "index.js", + "maintainers": [ + { + "email": "mail@substack.net", + "name": "substack" + } + ], + "name": "concat-map", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/substack/node-concat-map.git" + }, + "scripts": { + "test": "tape test/*.js" + }, + "testling": { + "browsers": { + "chrome": [ + 10, + 22 + ], + "ff": [ + 3.5, + 10, + 15 + ], + "ie": [ + 6, + 7, + 8, + 9 + ], + "opera": [ + 12 + ], + "safari": [ + 5.1 + ] + }, + "files": "test/*.js" + }, + "version": "0.0.1" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/test/map.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/test/map.js new file mode 100644 index 00000000..fdbd7022 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/concat-map/test/map.js @@ -0,0 +1,39 @@ +var concatMap = require('../'); +var test = require('tape'); + +test('empty or not', function (t) { + var xs = [ 1, 2, 3, 4, 5, 6 ]; + var ixes = []; + var ys = concatMap(xs, function (x, ix) { + ixes.push(ix); + return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; + }); + t.same(ys, [ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]); + t.same(ixes, [ 0, 1, 2, 3, 4, 5 ]); + t.end(); +}); + +test('always something', function (t) { + var xs = [ 'a', 'b', 'c', 'd' ]; + var ys = concatMap(xs, function (x) { + return x === 'b' ? [ 'B', 'B', 'B' ] : [ x ]; + }); + t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]); + t.end(); +}); + +test('scalars', function (t) { + var xs = [ 'a', 'b', 'c', 'd' ]; + var ys = concatMap(xs, function (x) { + return x === 'b' ? [ 'B', 'B', 'B' ] : x; + }); + t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]); + t.end(); +}); + +test('undefs', function (t) { + var xs = [ 'a', 'b', 'c', 'd' ]; + var ys = concatMap(xs, function () {}); + t.same(ys, [ undefined, undefined, undefined, undefined ]); + t.end(); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect-timeout/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect-timeout/.npmignore new file mode 100644 index 00000000..30d74d25 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect-timeout/.npmignore @@ -0,0 +1 @@ +test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/connect-timeout/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect-timeout/.travis.yml similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/connect-timeout/.travis.yml rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect-timeout/.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect-timeout/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect-timeout/Makefile new file mode 100644 index 00000000..083aa531 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect-timeout/Makefile @@ -0,0 +1,6 @@ +test: + @NODE_ENV=test ./node_modules/.bin/mocha \ + --reporter spec \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect-timeout/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect-timeout/README.md new file mode 100644 index 00000000..13436351 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect-timeout/README.md @@ -0,0 +1,40 @@ +# Timeout + +Previously `connect.timeout()`. + +Usage: + +```js +var app = require('connect'); +app.use(require('timeout')(300)) +``` + +## API + +### fn = timeout(ms) + +Returns middleware that times out in `ms` milliseconds. + +## License + +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong me@jongleberry.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/connect-timeout/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect-timeout/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/connect-timeout/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect-timeout/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect-timeout/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect-timeout/package.json new file mode 100644 index 00000000..fb5e4966 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect-timeout/package.json @@ -0,0 +1,85 @@ +{ + "_args": [ + [ + "connect-timeout@1.0.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect" + ] + ], + "_from": "connect-timeout@1.0.0", + "_id": "connect-timeout@1.0.0", + "_inCache": true, + "_installable": true, + "_location": "/connect-timeout", + "_npmUser": { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + }, + "_npmVersion": "1.4.4", + "_phantomChildren": {}, + "_requested": { + "name": "connect-timeout", + "raw": "connect-timeout@1.0.0", + "rawSpec": "1.0.0", + "scope": null, + "spec": "1.0.0", + "type": "version" + }, + "_requiredBy": [ + "/connect" + ], + "_resolved": "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.0.0.tgz", + "_shasum": "12054799f90bb9566f8b274efe7842d6465d10bb", + "_shrinkwrap": null, + "_spec": "connect-timeout@1.0.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect", + "author": { + "email": "me@jongleberry.com", + "name": "Jonathan Ong", + "url": "http://jongleberry.com" + }, + "bugs": { + "url": "https://github.com/expressjs/timeout/issues" + }, + "dependencies": { + "debug": "*" + }, + "description": "timeout middleware", + "devDependencies": { + "connect": "*", + "mocha": "^1.17.0", + "should": "^3.0.0", + "supertest": "*" + }, + "directories": {}, + "dist": { + "shasum": "12054799f90bb9566f8b274efe7842d6465d10bb", + "tarball": "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.0.0.tgz" + }, + "homepage": "https://github.com/expressjs/timeout", + "license": "MIT", + "maintainers": [ + { + "email": "aaron.heckmann+github@gmail.com", + "name": "aaron" + }, + { + "email": "rauchg@gmail.com", + "name": "rauchg" + }, + { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + } + ], + "name": "connect-timeout", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/expressjs/timeout.git" + }, + "scripts": { + "test": "make test" + }, + "version": "1.0.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/.npmignore new file mode 100644 index 00000000..9046dde5 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/.npmignore @@ -0,0 +1,12 @@ +*.markdown +*.md +.git* +Makefile +benchmarks/ +docs/ +examples/ +install.sh +support/ +test/ +.DS_Store +coverage.html diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/.travis.yml similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/.travis.yml rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/LICENSE similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/LICENSE rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/LICENSE diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/Readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/Readme.md new file mode 100644 index 00000000..3fa40864 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/Readme.md @@ -0,0 +1,84 @@ +# Connect [![Build Status](https://travis-ci.org/senchalabs/connect.svg?branch=master)](https://travis-ci.org/senchalabs/connect) + + Connect is an extensible HTTP server framework for [node](http://nodejs.org), providing high performance "plugins" known as _middleware_. + + Connect is bundled with over _20_ commonly used middleware, including + a logger, session support, cookie parser, and [more](http://senchalabs.github.com/connect). Be sure to view the 2.x [documentation](http://www.senchalabs.org/connect/). + +```js +var connect = require('connect') + , http = require('http'); + +var app = connect() + .use(connect.favicon()) + .use(connect.logger('dev')) + .use(connect.static('public')) + .use(connect.directory('public')) + .use(connect.cookieParser()) + .use(connect.session({ secret: 'my secret here' })) + .use(function(req, res){ + res.end('Hello from Connect!\n'); + }); + +http.createServer(app).listen(3000); +``` + +## Middleware + + - [basicAuth](http://www.senchalabs.org/connect/basicAuth.html) + - [bodyParser](http://www.senchalabs.org/connect/bodyParser.html) + - [compress](http://www.senchalabs.org/connect/compress.html) + - [cookieParser](http://www.senchalabs.org/connect/cookieParser.html) + - [cookieSession](http://www.senchalabs.org/connect/cookieSession.html) + - [csrf](http://www.senchalabs.org/connect/csrf.html) + - [directory](http://www.senchalabs.org/connect/directory.html) + - [errorHandler](http://www.senchalabs.org/connect/errorHandler.html) + - [favicon](http://www.senchalabs.org/connect/favicon.html) + - [json](http://www.senchalabs.org/connect/json.html) + - [limit](http://www.senchalabs.org/connect/limit.html) + - [logger](http://www.senchalabs.org/connect/logger.html) + - [methodOverride](http://www.senchalabs.org/connect/methodOverride.html) + - [multipart](http://www.senchalabs.org/connect/multipart.html) + - [urlencoded](http://www.senchalabs.org/connect/urlencoded.html) + - [query](http://www.senchalabs.org/connect/query.html) + - [responseTime](http://www.senchalabs.org/connect/responseTime.html) + - [session](http://www.senchalabs.org/connect/session.html) + - [static](http://www.senchalabs.org/connect/static.html) + - [staticCache](http://www.senchalabs.org/connect/staticCache.html) + - [subdomains](http://www.senchalabs.org/connect/subdomains.html) + - [vhost](http://www.senchalabs.org/connect/vhost.html) + +## Running Tests + +first: + + $ npm install -d + +then: + + $ make test + +## Contributors + + https://github.com/senchalabs/connect/graphs/contributors + +## Node Compatibility + + Connect `< 1.x` is compatible with node 0.2.x + + + Connect `1.x` is compatible with node 0.4.x + + + Connect `2.x` is compatible with node 0.6.x + + + Connect (_master_) is compatible with node 0.8.x + +## CLA + + [http://sencha.com/cla](http://sencha.com/cla) + +## License + +View the [LICENSE](https://github.com/senchalabs/connect/blob/master/LICENSE) file. The [Silk](http://www.famfamfam.com/lab/icons/silk/) icons used by the `directory` middleware created by/copyright of [FAMFAMFAM](http://www.famfamfam.com/). diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/cache.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/cache.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/cache.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/cache.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/connect.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/connect.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/connect.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/connect.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/basicAuth.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/basicAuth.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/bodyParser.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/bodyParser.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/compress.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/compress.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/compress.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/compress.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/cookieParser.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/cookieParser.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/cookieSession.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/cookieSession.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/csrf.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/csrf.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/csrf.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/csrf.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/directory.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/directory.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/directory.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/directory.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/errorHandler.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/errorHandler.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/favicon.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/favicon.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/favicon.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/favicon.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/json.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/json.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/json.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/json.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/limit.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/limit.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/limit.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/limit.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/logger.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/logger.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/logger.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/logger.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/methodOverride.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/methodOverride.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/multipart.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/multipart.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/multipart.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/multipart.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/query.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/query.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/query.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/query.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/responseTime.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/responseTime.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/responseTime.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/responseTime.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/session.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/session.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/session.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/session.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/static.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/static.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/static.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/static.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/staticCache.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/staticCache.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/staticCache.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/staticCache.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/timeout.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/timeout.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/timeout.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/timeout.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/urlencoded.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/urlencoded.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/vhost.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/vhost.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/middleware/vhost.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/middleware/vhost.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/patch.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/patch.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/patch.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/patch.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/proto.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/proto.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/proto.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/proto.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/utils.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/utils.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/lib/utils.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/lib/utils.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/package.json new file mode 100644 index 00000000..ab390498 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/connect/package.json @@ -0,0 +1,127 @@ +{ + "_args": [ + [ + "connect@2.14.5", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express" + ] + ], + "_from": "connect@2.14.5", + "_id": "connect@2.14.5", + "_inCache": true, + "_installable": true, + "_location": "/connect", + "_npmUser": { + "email": "doug@somethingdoug.com", + "name": "dougwilson" + }, + "_npmVersion": "1.4.3", + "_phantomChildren": {}, + "_requested": { + "name": "connect", + "raw": "connect@2.14.5", + "rawSpec": "2.14.5", + "scope": null, + "spec": "2.14.5", + "type": "version" + }, + "_requiredBy": [ + "/express" + ], + "_resolved": "https://registry.npmjs.org/connect/-/connect-2.14.5.tgz", + "_shasum": "73217513152c152ebe049c499fa09211b8c476f4", + "_shrinkwrap": null, + "_spec": "connect@2.14.5", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express", + "author": { + "email": "tj@vision-media.ca", + "name": "TJ Holowaychuk", + "url": "http://tjholowaychuk.com" + }, + "bugs": { + "url": "https://github.com/senchalabs/connect/issues" + }, + "dependencies": { + "basic-auth-connect": "1.0.0", + "bytes": "0.3.0", + "compression": "1.0.0", + "connect-timeout": "1.0.0", + "cookie-parser": "1.0.1", + "cookie-signature": "1.0.3", + "csurf": "1.1.0", + "debug": ">= 0.7.3 < 1", + "errorhandler": "1.0.0", + "express-session": "1.0.2", + "fresh": "0.2.2", + "method-override": "1.0.0", + "morgan": "1.0.0", + "multiparty": "2.2.0", + "pause": "0.0.1", + "qs": "0.6.6", + "raw-body": "1.1.4", + "response-time": "1.0.0", + "serve-index": "1.0.1", + "serve-static": "1.1.0", + "setimmediate": "1.0.1", + "static-favicon": "1.0.2", + "vhost": "1.0.0" + }, + "description": "High performance middleware framework", + "devDependencies": { + "dox": ">= 0.4.4 < 1", + "jade": ">= 0.35.0 < 1", + "mocha": ">= 1.13.0 < 2", + "should": "~3.1.3" + }, + "directories": {}, + "dist": { + "shasum": "73217513152c152ebe049c499fa09211b8c476f4", + "tarball": "https://registry.npmjs.org/connect/-/connect-2.14.5.tgz" + }, + "engines": { + "node": ">= 0.8.0" + }, + "homepage": "https://github.com/senchalabs/connect", + "keywords": [ + "framework", + "web", + "middleware", + "connect", + "rack" + ], + "licenses": [ + { + "type": "MIT", + "url": "https://raw.github.com/senchalabs/connect/master/LICENSE" + } + ], + "main": "index", + "maintainers": [ + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + }, + { + "email": "tim@creationix.com", + "name": "creationix" + }, + { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + }, + { + "email": "doug@somethingdoug.com", + "name": "dougwilson" + } + ], + "name": "connect", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/senchalabs/connect.git" + }, + "scripts": { + "test": "make" + }, + "version": "2.14.5" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/.npmignore new file mode 100644 index 00000000..aa3fd4b8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/.npmignore @@ -0,0 +1,14 @@ +.DS_Store +.monitor +.*.swp +.nodemonignore +releases +*.log +*.err +fleet.json +public/browserify +bin/*.json +.bin +build +compile +.lock-wscript diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/.testem.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/.testem.json new file mode 100644 index 00000000..633c2ba8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/.testem.json @@ -0,0 +1,14 @@ +{ + "launchers": { + "node": { + "command": "npm test" + } + }, + "src_files": [ + "./**/*.js" + ], + "before_tests": "npm run build", + "on_exit": "rm test/static/bundle.js", + "test_page": "test/static/index.html", + "launch_in_dev": ["node", "phantomjs"] +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/.travis.yml new file mode 100644 index 00000000..ed178f63 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.8 + - 0.9 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/LICENCE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/LICENCE new file mode 100644 index 00000000..a23e08a8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/LICENCE @@ -0,0 +1,19 @@ +Copyright (c) 2012 Raynos. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/README.md new file mode 100644 index 00000000..572615eb --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/README.md @@ -0,0 +1,33 @@ +# console-browserify + +[![build status][1]][2] + +[![browser support][3]][4] + + +Emulate console for all the browsers + +## Example + +```js +var console = require("console-browserify") + +console.log("hello world!") +``` + +## Installation + +`npm install console-browserify` + +## Contributors + + - Raynos + +## MIT Licenced + + + + [1]: https://secure.travis-ci.org/Raynos/console-browserify.png + [2]: http://travis-ci.org/Raynos/console-browserify + [3]: http://ci.testling.com/Raynos/console-browserify.png + [4]: http://ci.testling.com/Raynos/console-browserify diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/index.js new file mode 100644 index 00000000..af433ce8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/index.js @@ -0,0 +1,86 @@ +/*global window, global*/ +var util = require("util") +var assert = require("assert") +var now = require("date-now") + +var slice = Array.prototype.slice +var console +var times = {} + +if (typeof global !== "undefined" && global.console) { + console = global.console +} else if (typeof window !== "undefined" && window.console) { + console = window.console +} else { + console = {} +} + +var functions = [ + [log, "log"], + [info, "info"], + [warn, "warn"], + [error, "error"], + [time, "time"], + [timeEnd, "timeEnd"], + [trace, "trace"], + [dir, "dir"], + [consoleAssert, "assert"] +] + +for (var i = 0; i < functions.length; i++) { + var tuple = functions[i] + var f = tuple[0] + var name = tuple[1] + + if (!console[name]) { + console[name] = f + } +} + +module.exports = console + +function log() {} + +function info() { + console.log.apply(console, arguments) +} + +function warn() { + console.log.apply(console, arguments) +} + +function error() { + console.warn.apply(console, arguments) +} + +function time(label) { + times[label] = now() +} + +function timeEnd(label) { + var time = times[label] + if (!time) { + throw new Error("No such label: " + label) + } + + var duration = now() - time + console.log(label + ": " + duration + "ms") +} + +function trace() { + var err = new Error() + err.name = "Trace" + err.message = util.format.apply(null, arguments) + console.error(err.stack) +} + +function dir(object) { + console.log(util.inspect(object) + "\n") +} + +function consoleAssert(expression) { + if (!expression) { + var arr = slice.call(arguments, 1) + assert.ok(false, util.format.apply(null, arr)) + } +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/package.json new file mode 100644 index 00000000..87a346f7 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/package.json @@ -0,0 +1,114 @@ +{ + "_args": [ + [ + "console-browserify@1.1.x", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint" + ] + ], + "_from": "console-browserify@>=1.1.0 <1.2.0", + "_id": "console-browserify@1.1.0", + "_inCache": true, + "_installable": true, + "_location": "/console-browserify", + "_npmUser": { + "email": "raynos2@gmail.com", + "name": "raynos" + }, + "_npmVersion": "1.4.6", + "_phantomChildren": {}, + "_requested": { + "name": "console-browserify", + "raw": "console-browserify@1.1.x", + "rawSpec": "1.1.x", + "scope": null, + "spec": ">=1.1.0 <1.2.0", + "type": "range" + }, + "_requiredBy": [ + "/jshint" + ], + "_resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "_shasum": "f0241c45730a9fc6323b206dbf38edc741d0bb10", + "_shrinkwrap": null, + "_spec": "console-browserify@1.1.x", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint", + "author": { + "email": "raynos2@gmail.com", + "name": "Raynos" + }, + "bugs": { + "email": "raynos2@gmail.com", + "url": "https://github.com/Raynos/console-browserify/issues" + }, + "contributors": [ + { + "name": "Raynos" + } + ], + "dependencies": { + "date-now": "^0.1.4" + }, + "description": "Emulate console for all the browsers", + "devDependencies": { + "jsonify": "0.0.0", + "run-browser": "^1.3.0", + "tap-dot": "^0.2.1", + "tap-spec": "^0.1.8", + "tape": "^2.12.3" + }, + "directories": {}, + "dist": { + "shasum": "f0241c45730a9fc6323b206dbf38edc741d0bb10", + "tarball": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz" + }, + "homepage": "https://github.com/Raynos/console-browserify", + "keywords": [], + "licenses": [ + { + "type": "MIT", + "url": "http://github.com/Raynos/console-browserify/raw/master/LICENSE" + } + ], + "main": "index", + "maintainers": [ + { + "email": "raynos2@gmail.com", + "name": "raynos" + } + ], + "name": "console-browserify", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/Raynos/console-browserify.git" + }, + "scripts": { + "browser": "run-browser test/index.js", + "build": "browserify test/index.js -o test/static/bundle.js", + "cover": "istanbul cover --report none --print detail ./test/index.js", + "dot": "node ./test/index.js | tap-dot", + "phantom": "run-browser test/index.js -b | tap-spec", + "start": "node ./index.js", + "test": "node ./test/index.js | tap-spec", + "testem": "testem", + "view-cover": "istanbul report html && google-chrome ./coverage/index.html" + }, + "testling": { + "browsers": [ + "ie/8..latest", + "firefox/16..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ], + "files": "test/index.js" + }, + "version": "1.1.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/test/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/test/index.js new file mode 100644 index 00000000..26dfaad6 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/test/index.js @@ -0,0 +1,67 @@ +var console = require("../index") +var test = require("tape") + +if (typeof window !== "undefined" && !window.JSON) { + window.JSON = require("jsonify") +} + +test("console has expected methods", function (assert) { + assert.ok(console.log) + assert.ok(console.info) + assert.ok(console.warn) + assert.ok(console.dir) + assert.ok(console.time, "time") + assert.ok(console.timeEnd, "timeEnd") + assert.ok(console.trace, "trace") + assert.ok(console.assert) + + assert.end() +}) + +test("invoke console.log", function (assert) { + console.log("test-log") + + assert.end() +}) + +test("invoke console.info", function (assert) { + console.info("test-info") + + assert.end() +}) + +test("invoke console.warn", function (assert) { + console.warn("test-warn") + + assert.end() +}) + +test("invoke console.time", function (assert) { + console.time("label") + + assert.end() +}) + +test("invoke console.trace", function (assert) { + console.trace("test-trace") + + assert.end() +}) + +test("invoke console.assert", function (assert) { + console.assert(true) + + assert.end() +}) + +test("invoke console.dir", function (assert) { + console.dir("test-dir") + + assert.end() +}) + +test("invoke console.timeEnd", function (assert) { + console.timeEnd("label") + + assert.end() +}) diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/test/static/index.html b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/test/static/index.html new file mode 100644 index 00000000..dd55012f --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/test/static/index.html @@ -0,0 +1,12 @@ + + + + + TAPE Example + + + + + + + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/test/static/test-adapter.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/test/static/test-adapter.js new file mode 100644 index 00000000..8b4c12dc --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/console-browserify/test/static/test-adapter.js @@ -0,0 +1,53 @@ +(function () { + var Testem = window.Testem + var regex = /^((?:not )?ok) (\d+) (.+)$/ + + Testem.useCustomAdapter(tapAdapter) + + function tapAdapter(socket){ + var results = { + failed: 0 + , passed: 0 + , total: 0 + , tests: [] + } + + socket.emit('tests-start') + + Testem.handleConsoleMessage = function(msg){ + var m = msg.match(regex) + if (m) { + var passed = m[1] === 'ok' + var test = { + passed: passed ? 1 : 0, + failed: passed ? 0 : 1, + total: 1, + id: m[2], + name: m[3], + items: [] + } + + if (passed) { + results.passed++ + } else { + console.error("failure", m) + + results.failed++ + } + + results.total++ + + // console.log("emitted test", test) + socket.emit('test-result', test) + results.tests.push(test) + } else if (msg === '# ok' || msg.match(/^# tests \d+/)){ + // console.log("emitted all test") + socket.emit('all-test-results', results) + } + + // return false if you want to prevent the console message from + // going to the console + // return false + } + } +}()) diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/.npmignore new file mode 100644 index 00000000..3c3629e6 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/README.md new file mode 100644 index 00000000..ffca3fd7 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/README.md @@ -0,0 +1,25 @@ +# cookie-parser + +Parse _Cookie_ header and populate `req.cookies` with an object keyed by the cookie +names. Optionally you may enabled signed cookie support by passing a `secret` string, +which assigns `req.secret` so it may be used by other middleware. + +```js +var cookieParser = require('cookie-parser'); + +connect() + .use(cookieParser('optional secret string')) + .use(function(req, res, next){ + res.end(JSON.stringify(req.cookies)); + }) +``` + +## install + +```shell +npm install cookie-parser +``` + +## License + +MIT diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/lib/parse.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/lib/parse.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/lib/parse.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/lib/parse.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/.npmignore new file mode 100644 index 00000000..3c3629e6 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/node_modules/cookie/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/.travis.yml similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/node_modules/cookie/.travis.yml rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/node_modules/cookie/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/LICENSE similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/node_modules/cookie/LICENSE rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/LICENSE diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/README.md new file mode 100644 index 00000000..5187ed1c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/README.md @@ -0,0 +1,44 @@ +# cookie [![Build Status](https://secure.travis-ci.org/shtylman/node-cookie.png?branch=master)](http://travis-ci.org/shtylman/node-cookie) # + +cookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers. + +See [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies. + +## how? + +``` +npm install cookie +``` + +```javascript +var cookie = require('cookie'); + +var hdr = cookie.serialize('foo', 'bar'); +// hdr = 'foo=bar'; + +var cookies = cookie.parse('foo=bar; cat=meow; dog=ruff'); +// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' }; +``` + +## more + +The serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values. + +### path +> cookie path + +### expires +> absolute expiration date for the cookie (Date object) + +### maxAge +> relative max age of the cookie from when the client receives it (seconds) + +### domain +> domain for the cookie + +### secure +> true or false + +### httpOnly +> true or false + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/node_modules/cookie/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/node_modules/cookie/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/package.json new file mode 100644 index 00000000..fc6af8ac --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/package.json @@ -0,0 +1,78 @@ +{ + "_args": [ + [ + "cookie@0.1.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-parser" + ] + ], + "_from": "cookie@0.1.0", + "_id": "cookie@0.1.0", + "_inCache": true, + "_installable": true, + "_location": "/cookie-parser/cookie", + "_npmUser": { + "email": "shtylman@gmail.com", + "name": "shtylman" + }, + "_npmVersion": "1.2.18", + "_phantomChildren": {}, + "_requested": { + "name": "cookie", + "raw": "cookie@0.1.0", + "rawSpec": "0.1.0", + "scope": null, + "spec": "0.1.0", + "type": "version" + }, + "_requiredBy": [ + "/cookie-parser" + ], + "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz", + "_shasum": "90eb469ddce905c866de687efc43131d8801f9d0", + "_shrinkwrap": null, + "_spec": "cookie@0.1.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\cookie-parser", + "author": { + "email": "shtylman@gmail.com", + "name": "Roman Shtylman" + }, + "bugs": { + "url": "https://github.com/shtylman/node-cookie/issues" + }, + "dependencies": {}, + "description": "cookie parsing and serialization", + "devDependencies": { + "mocha": "1.x.x" + }, + "directories": {}, + "dist": { + "shasum": "90eb469ddce905c866de687efc43131d8801f9d0", + "tarball": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz" + }, + "engines": { + "node": "*" + }, + "homepage": "https://github.com/shtylman/node-cookie#readme", + "keywords": [ + "cookie", + "cookies" + ], + "main": "index.js", + "maintainers": [ + { + "email": "shtylman@gmail.com", + "name": "shtylman" + } + ], + "name": "cookie", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/shtylman/node-cookie.git" + }, + "scripts": { + "test": "mocha" + }, + "version": "0.1.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/node_modules/cookie/test/mocha.opts b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/test/mocha.opts similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/node_modules/cookie/test/mocha.opts rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/test/mocha.opts diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/node_modules/cookie/test/parse.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/test/parse.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/node_modules/cookie/test/parse.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/test/parse.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/node_modules/cookie/test/serialize.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/test/serialize.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/node_modules/cookie/test/serialize.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/node_modules/cookie/test/serialize.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/package.json new file mode 100644 index 00000000..c5b0af66 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/package.json @@ -0,0 +1,85 @@ +{ + "_args": [ + [ + "cookie-parser@1.0.1", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect" + ] + ], + "_from": "cookie-parser@1.0.1", + "_id": "cookie-parser@1.0.1", + "_inCache": true, + "_installable": true, + "_location": "/cookie-parser", + "_npmUser": { + "email": "shtylman@gmail.com", + "name": "shtylman" + }, + "_npmVersion": "1.3.24", + "_phantomChildren": {}, + "_requested": { + "name": "cookie-parser", + "raw": "cookie-parser@1.0.1", + "rawSpec": "1.0.1", + "scope": null, + "spec": "1.0.1", + "type": "version" + }, + "_requiredBy": [ + "/connect" + ], + "_resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.0.1.tgz", + "_shasum": "17bd622c9717cd0858a912a9fef4c0362360a7b0", + "_shrinkwrap": null, + "_spec": "cookie-parser@1.0.1", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect", + "author": { + "email": "tj@vision-media.ca", + "name": "TJ Holowaychuk", + "url": "http://tjholowaychuk.com" + }, + "bugs": { + "url": "https://github.com/expressjs/cookie-parser/issues" + }, + "dependencies": { + "cookie": "0.1.0", + "cookie-signature": "1.0.3" + }, + "description": "cookie parsing with signatures", + "devDependencies": { + "connect": "2.13.0", + "mocha": "~1.17.0", + "supertest": "0.9.0" + }, + "directories": {}, + "dist": { + "shasum": "17bd622c9717cd0858a912a9fef4c0362360a7b0", + "tarball": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.0.1.tgz" + }, + "engines": { + "node": ">= 0.10.0" + }, + "homepage": "https://github.com/expressjs/cookie-parser", + "keywords": [ + "cookie", + "middleware" + ], + "licenses": "MIT", + "main": "./index.js", + "maintainers": [ + { + "email": "shtylman@gmail.com", + "name": "shtylman" + } + ], + "name": "cookie-parser", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/expressjs/cookie-parser.git" + }, + "scripts": { + "test": "mocha --ui bdd --reporter list -- test/*.js" + }, + "version": "1.0.1" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/test/cookieParser.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/test/cookieParser.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/test/cookieParser.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-parser/test/cookieParser.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-signature/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-signature/.npmignore new file mode 100644 index 00000000..f1250e58 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-signature/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-signature/History.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-signature/History.md new file mode 100644 index 00000000..7aacdf0c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-signature/History.md @@ -0,0 +1,21 @@ +1.0.3 / 2014-01-28 +================== + + * fix for timing attacks + +1.0.2 / 2014-01-28 +================== + + * fix missing repository warning + * fix typo in test + +1.0.1 / 2013-04-15 +================== + + * Revert "Changed underlying HMAC algo. to sha512." + * Revert "Fix for timing attacks on MAC verification." + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-signature/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-signature/Makefile new file mode 100644 index 00000000..4e9c8d36 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-signature/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --require should \ + --reporter spec + +.PHONY: test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-signature/Readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-signature/Readme.md new file mode 100644 index 00000000..2559e841 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-signature/Readme.md @@ -0,0 +1,42 @@ + +# cookie-signature + + Sign and unsign cookies. + +## Example + +```js +var cookie = require('cookie-signature'); + +var val = cookie.sign('hello', 'tobiiscool'); +val.should.equal('hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI'); + +var val = cookie.sign('hello', 'tobiiscool'); +cookie.unsign(val, 'tobiiscool').should.equal('hello'); +cookie.unsign(val, 'luna').should.be.false; +``` + +## License + +(The MIT License) + +Copyright (c) 2012 LearnBoost <tj@learnboost.com> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/cookie-signature/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-signature/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/cookie-signature/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-signature/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-signature/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-signature/package.json new file mode 100644 index 00000000..e8453f59 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie-signature/package.json @@ -0,0 +1,77 @@ +{ + "_args": [ + [ + "cookie-signature@1.0.3", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express" + ] + ], + "_from": "cookie-signature@1.0.3", + "_id": "cookie-signature@1.0.3", + "_inCache": true, + "_installable": true, + "_location": "/cookie-signature", + "_npmUser": { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + }, + "_npmVersion": "1.3.15", + "_phantomChildren": {}, + "_requested": { + "name": "cookie-signature", + "raw": "cookie-signature@1.0.3", + "rawSpec": "1.0.3", + "scope": null, + "spec": "1.0.3", + "type": "version" + }, + "_requiredBy": [ + "/connect", + "/cookie-parser", + "/express", + "/express-session" + ], + "_resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.3.tgz", + "_shasum": "91cd997cc51fb641595738c69cda020328f50ff9", + "_shrinkwrap": null, + "_spec": "cookie-signature@1.0.3", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express", + "author": { + "email": "tj@learnboost.com", + "name": "TJ Holowaychuk" + }, + "bugs": { + "url": "https://github.com/visionmedia/node-cookie-signature/issues" + }, + "dependencies": {}, + "description": "Sign and unsign cookies", + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "directories": {}, + "dist": { + "shasum": "91cd997cc51fb641595738c69cda020328f50ff9", + "tarball": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.3.tgz" + }, + "homepage": "https://github.com/visionmedia/node-cookie-signature", + "keywords": [ + "cookie", + "sign", + "unsign" + ], + "main": "index", + "maintainers": [ + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + } + ], + "name": "cookie-signature", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/visionmedia/node-cookie-signature.git" + }, + "version": "1.0.3" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie/.npmignore new file mode 100644 index 00000000..efab07fb --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie/.npmignore @@ -0,0 +1,2 @@ +test +.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/cookie/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie/LICENSE similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/cookie/LICENSE rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie/LICENSE diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie/README.md new file mode 100644 index 00000000..3170b4b8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie/README.md @@ -0,0 +1,44 @@ +# cookie [![Build Status](https://secure.travis-ci.org/defunctzombie/node-cookie.png?branch=master)](http://travis-ci.org/defunctzombie/node-cookie) # + +cookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers. + +See [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies. + +## how? + +``` +npm install cookie +``` + +```javascript +var cookie = require('cookie'); + +var hdr = cookie.serialize('foo', 'bar'); +// hdr = 'foo=bar'; + +var cookies = cookie.parse('foo=bar; cat=meow; dog=ruff'); +// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' }; +``` + +## more + +The serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values. + +### path +> cookie path + +### expires +> absolute expiration date for the cookie (Date object) + +### maxAge +> relative max age of the cookie from when the client receives it (seconds) + +### domain +> domain for the cookie + +### secure +> true or false + +### httpOnly +> true or false + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/cookie/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/cookie/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie/package.json new file mode 100644 index 00000000..f9ca2ace --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/cookie/package.json @@ -0,0 +1,78 @@ +{ + "_args": [ + [ + "cookie@0.1.2", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express" + ] + ], + "_from": "cookie@0.1.2", + "_id": "cookie@0.1.2", + "_inCache": true, + "_installable": true, + "_location": "/cookie", + "_npmUser": { + "email": "shtylman@gmail.com", + "name": "shtylman" + }, + "_npmVersion": "1.4.6", + "_phantomChildren": {}, + "_requested": { + "name": "cookie", + "raw": "cookie@0.1.2", + "rawSpec": "0.1.2", + "scope": null, + "spec": "0.1.2", + "type": "version" + }, + "_requiredBy": [ + "/express" + ], + "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz", + "_shasum": "72fec3d24e48a3432073d90c12642005061004b1", + "_shrinkwrap": null, + "_spec": "cookie@0.1.2", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express", + "author": { + "email": "shtylman@gmail.com", + "name": "Roman Shtylman" + }, + "bugs": { + "url": "https://github.com/shtylman/node-cookie/issues" + }, + "dependencies": {}, + "description": "cookie parsing and serialization", + "devDependencies": { + "mocha": "1.x.x" + }, + "directories": {}, + "dist": { + "shasum": "72fec3d24e48a3432073d90c12642005061004b1", + "tarball": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz" + }, + "engines": { + "node": "*" + }, + "homepage": "https://github.com/shtylman/node-cookie", + "keywords": [ + "cookie", + "cookies" + ], + "main": "index.js", + "maintainers": [ + { + "email": "shtylman@gmail.com", + "name": "shtylman" + } + ], + "name": "cookie", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/shtylman/node-cookie.git" + }, + "scripts": { + "test": "mocha" + }, + "version": "0.1.2" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/core-util-is/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/core-util-is/LICENSE new file mode 100644 index 00000000..d8d7f943 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/core-util-is/LICENSE @@ -0,0 +1,19 @@ +Copyright Node.js contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/core-util-is/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/core-util-is/README.md new file mode 100644 index 00000000..5a76b414 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/core-util-is/README.md @@ -0,0 +1,3 @@ +# core-util-is + +The `util.is*` functions introduced in Node v0.12. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/float.patch b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/core-util-is/float.patch similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/float.patch rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/core-util-is/float.patch diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/core-util-is/lib/util.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/core-util-is/lib/util.js new file mode 100644 index 00000000..ff4c851c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/core-util-is/lib/util.js @@ -0,0 +1,107 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. + +function isArray(arg) { + if (Array.isArray) { + return Array.isArray(arg); + } + return objectToString(arg) === '[object Array]'; +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = Buffer.isBuffer; + +function objectToString(o) { + return Object.prototype.toString.call(o); +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/core-util-is/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/core-util-is/package.json new file mode 100644 index 00000000..aa00b76d --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/core-util-is/package.json @@ -0,0 +1,86 @@ +{ + "_args": [ + [ + "core-util-is@~1.0.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream" + ] + ], + "_from": "core-util-is@>=1.0.0 <1.1.0", + "_id": "core-util-is@1.0.2", + "_inCache": true, + "_installable": true, + "_location": "/core-util-is", + "_nodeVersion": "4.0.0", + "_npmUser": { + "email": "i@izs.me", + "name": "isaacs" + }, + "_npmVersion": "3.3.2", + "_phantomChildren": {}, + "_requested": { + "name": "core-util-is", + "raw": "core-util-is@~1.0.0", + "rawSpec": "~1.0.0", + "scope": null, + "spec": ">=1.0.0 <1.1.0", + "type": "range" + }, + "_requiredBy": [ + "/readable-stream" + ], + "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "_shasum": "b5fd54220aa2bc5ab57aab7140c940754503c1a7", + "_shrinkwrap": null, + "_spec": "core-util-is@~1.0.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream", + "author": { + "email": "i@izs.me", + "name": "Isaac Z. Schlueter", + "url": "http://blog.izs.me/" + }, + "bugs": { + "url": "https://github.com/isaacs/core-util-is/issues" + }, + "dependencies": {}, + "description": "The `util.is*` functions introduced in Node v0.12.", + "devDependencies": { + "tap": "^2.3.0" + }, + "directories": {}, + "dist": { + "shasum": "b5fd54220aa2bc5ab57aab7140c940754503c1a7", + "tarball": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "gitHead": "a177da234df5638b363ddc15fa324619a38577c8", + "homepage": "https://github.com/isaacs/core-util-is#readme", + "keywords": [ + "util", + "isBuffer", + "isArray", + "isNumber", + "isString", + "isRegExp", + "isThis", + "isThat", + "polyfill" + ], + "license": "MIT", + "main": "lib/util.js", + "maintainers": [ + { + "email": "i@izs.me", + "name": "isaacs" + } + ], + "name": "core-util-is", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/core-util-is.git" + }, + "scripts": { + "test": "tap test.js" + }, + "version": "1.0.2" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/core-util-is/test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/core-util-is/test.js new file mode 100644 index 00000000..1a490c65 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/core-util-is/test.js @@ -0,0 +1,68 @@ +var assert = require('tap'); + +var t = require('./lib/util'); + +assert.equal(t.isArray([]), true); +assert.equal(t.isArray({}), false); + +assert.equal(t.isBoolean(null), false); +assert.equal(t.isBoolean(true), true); +assert.equal(t.isBoolean(false), true); + +assert.equal(t.isNull(null), true); +assert.equal(t.isNull(undefined), false); +assert.equal(t.isNull(false), false); +assert.equal(t.isNull(), false); + +assert.equal(t.isNullOrUndefined(null), true); +assert.equal(t.isNullOrUndefined(undefined), true); +assert.equal(t.isNullOrUndefined(false), false); +assert.equal(t.isNullOrUndefined(), true); + +assert.equal(t.isNumber(null), false); +assert.equal(t.isNumber('1'), false); +assert.equal(t.isNumber(1), true); + +assert.equal(t.isString(null), false); +assert.equal(t.isString('1'), true); +assert.equal(t.isString(1), false); + +assert.equal(t.isSymbol(null), false); +assert.equal(t.isSymbol('1'), false); +assert.equal(t.isSymbol(1), false); +assert.equal(t.isSymbol(Symbol()), true); + +assert.equal(t.isUndefined(null), false); +assert.equal(t.isUndefined(undefined), true); +assert.equal(t.isUndefined(false), false); +assert.equal(t.isUndefined(), true); + +assert.equal(t.isRegExp(null), false); +assert.equal(t.isRegExp('1'), false); +assert.equal(t.isRegExp(new RegExp()), true); + +assert.equal(t.isObject({}), true); +assert.equal(t.isObject([]), true); +assert.equal(t.isObject(new RegExp()), true); +assert.equal(t.isObject(new Date()), true); + +assert.equal(t.isDate(null), false); +assert.equal(t.isDate('1'), false); +assert.equal(t.isDate(new Date()), true); + +assert.equal(t.isError(null), false); +assert.equal(t.isError({ err: true }), false); +assert.equal(t.isError(new Error()), true); + +assert.equal(t.isFunction(null), false); +assert.equal(t.isFunction({ }), false); +assert.equal(t.isFunction(function() {}), true); + +assert.equal(t.isPrimitive(null), true); +assert.equal(t.isPrimitive(''), true); +assert.equal(t.isPrimitive(0), true); +assert.equal(t.isPrimitive(new Date()), false); + +assert.equal(t.isBuffer(null), false); +assert.equal(t.isBuffer({}), false); +assert.equal(t.isBuffer(new Buffer(0)), true); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/.npmignore new file mode 100644 index 00000000..30d74d25 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/.npmignore @@ -0,0 +1 @@ +test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/.travis.yml similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/.travis.yml rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/HISTORY.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/HISTORY.md new file mode 100644 index 00000000..853a5922 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/HISTORY.md @@ -0,0 +1,6 @@ + +1.1.0 / 2014-04-06 +================== + + * add constant-time string compare + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/LICENSE similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/LICENSE rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/LICENSE diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/Makefile new file mode 100644 index 00000000..083aa531 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/Makefile @@ -0,0 +1,6 @@ +test: + @NODE_ENV=test ./node_modules/.bin/mocha \ + --reporter spec \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/README.md new file mode 100644 index 00000000..eccc26d9 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/README.md @@ -0,0 +1,6 @@ + +# CSURF + +CSRF middleware for connect/express/node. + +It currently has the same API as [connect-csrf](http://www.senchalabs.org/connect/csrf.html), except it is now in its own repository. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/package.json new file mode 100644 index 00000000..6d569347 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/csurf/package.json @@ -0,0 +1,92 @@ +{ + "_args": [ + [ + "csurf@1.1.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect" + ] + ], + "_from": "csurf@1.1.0", + "_id": "csurf@1.1.0", + "_inCache": true, + "_installable": true, + "_location": "/csurf", + "_npmUser": { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + }, + "_npmVersion": "1.4.6", + "_phantomChildren": {}, + "_requested": { + "name": "csurf", + "raw": "csurf@1.1.0", + "rawSpec": "1.1.0", + "scope": null, + "spec": "1.1.0", + "type": "version" + }, + "_requiredBy": [ + "/connect" + ], + "_resolved": "https://registry.npmjs.org/csurf/-/csurf-1.1.0.tgz", + "_shasum": "5dd459df40df43b9eb828284d6d03132f42cb8b2", + "_shrinkwrap": null, + "_spec": "csurf@1.1.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect", + "author": { + "email": "me@jongleberry.com", + "name": "Jonathan Ong", + "url": "http://jongleberry.com" + }, + "bugs": { + "url": "https://github.com/expressjs/csurf/issues" + }, + "dependencies": { + "scmp": "~0.0.3", + "uid2": "~0.0.2" + }, + "description": "CSRF token middleware", + "devDependencies": { + "body-parser": "*", + "connect": "*", + "cookie-session": "*", + "mocha": "^1.17.0", + "should": "^3.0.0", + "supertest": "*" + }, + "directories": {}, + "dist": { + "shasum": "5dd459df40df43b9eb828284d6d03132f42cb8b2", + "tarball": "https://registry.npmjs.org/csurf/-/csurf-1.1.0.tgz" + }, + "homepage": "https://github.com/expressjs/csurf", + "license": "MIT", + "maintainers": [ + { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + }, + { + "email": "doug@somethingdoug.com", + "name": "dougwilson" + }, + { + "email": "shtylman@gmail.com", + "name": "shtylman" + }, + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + } + ], + "name": "csurf", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/expressjs/csurf.git" + }, + "scripts": { + "test": "make test" + }, + "version": "1.1.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/.npmignore new file mode 100644 index 00000000..aa3fd4b8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/.npmignore @@ -0,0 +1,14 @@ +.DS_Store +.monitor +.*.swp +.nodemonignore +releases +*.log +*.err +fleet.json +public/browserify +bin/*.json +.bin +build +compile +.lock-wscript diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/.testem.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/.testem.json new file mode 100644 index 00000000..633c2ba8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/.testem.json @@ -0,0 +1,14 @@ +{ + "launchers": { + "node": { + "command": "npm test" + } + }, + "src_files": [ + "./**/*.js" + ], + "before_tests": "npm run build", + "on_exit": "rm test/static/bundle.js", + "test_page": "test/static/index.html", + "launch_in_dev": ["node", "phantomjs"] +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/.travis.yml new file mode 100644 index 00000000..ed178f63 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.8 + - 0.9 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/LICENCE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/LICENCE new file mode 100644 index 00000000..822d880b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/LICENCE @@ -0,0 +1,19 @@ +Copyright (c) 2012 Colingo. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/README.md new file mode 100644 index 00000000..22d26753 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/README.md @@ -0,0 +1,45 @@ +# date-now + +[![build status][1]][2] + +[![browser support][3]][4] + +A requirable version of Date.now() + +Use-case is to be able to mock out Date.now() using require interception. + +## Example + +```js +var now = require("date-now") + +var ts = now() +var ts2 = Date.now() +assert.equal(ts, ts2) +``` + +## example of seed + +``` +var now = require("date-now/seed")(timeStampFromServer) + +// ts is in "sync" with the seed value from the server +// useful if your users have their local time being a few minutes +// out of your server time. +var ts = now() +``` + +## Installation + +`npm install date-now` + +## Contributors + + - Raynos + +## MIT Licenced + + [1]: https://secure.travis-ci.org/Colingo/date-now.png + [2]: http://travis-ci.org/Colingo/date-now + [3]: http://ci.testling.com/Colingo/date-now.png + [4]: http://ci.testling.com/Colingo/date-now diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/index.js new file mode 100644 index 00000000..d5f143a8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/index.js @@ -0,0 +1,5 @@ +module.exports = now + +function now() { + return new Date().getTime() +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/package.json new file mode 100644 index 00000000..38b5940c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/package.json @@ -0,0 +1,115 @@ +{ + "_args": [ + [ + "date-now@^0.1.4", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\console-browserify" + ] + ], + "_from": "date-now@>=0.1.4 <0.2.0", + "_id": "date-now@0.1.4", + "_inCache": true, + "_installable": true, + "_location": "/date-now", + "_npmUser": { + "email": "raynos2@gmail.com", + "name": "raynos" + }, + "_npmVersion": "1.2.3", + "_phantomChildren": {}, + "_requested": { + "name": "date-now", + "raw": "date-now@^0.1.4", + "rawSpec": "^0.1.4", + "scope": null, + "spec": ">=0.1.4 <0.2.0", + "type": "range" + }, + "_requiredBy": [ + "/console-browserify" + ], + "_resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "_shasum": "eaf439fd4d4848ad74e5cc7dbef200672b9e345b", + "_shrinkwrap": null, + "_spec": "date-now@^0.1.4", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\console-browserify", + "author": { + "email": "raynos2@gmail.com", + "name": "Raynos" + }, + "bugs": { + "email": "raynos2@gmail.com", + "url": "https://github.com/Colingo/date-now/issues" + }, + "contributors": [ + { + "name": "Artem Shoobovych" + } + ], + "dependencies": {}, + "description": "A requirable version of Date.now()", + "devDependencies": { + "browserify": "https://github.com/raynos/node-browserify/tarball/master", + "tape": "~0.2.2", + "testem": "~0.2.52" + }, + "directories": {}, + "dist": { + "shasum": "eaf439fd4d4848ad74e5cc7dbef200672b9e345b", + "tarball": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" + }, + "homepage": "https://github.com/Colingo/date-now", + "keywords": [], + "licenses": [ + { + "type": "MIT", + "url": "http://github.com/Colingo/date-now/raw/master/LICENSE" + } + ], + "main": "index", + "maintainers": [ + { + "email": "raynos2@gmail.com", + "name": "raynos" + } + ], + "name": "date-now", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/Colingo/date-now.git" + }, + "scripts": { + "build": "browserify test/index.js -o test/static/bundle.js", + "test": "node ./test", + "testem": "testem" + }, + "testling": { + "browsers": { + "chrome": [ + "22", + "23", + "canary" + ], + "firefox": [ + "16", + "17", + "nightly" + ], + "ie": [ + "8", + "9", + "10" + ], + "opera": [ + "12", + "next" + ], + "safari": [ + "5.1" + ] + }, + "files": "test/*.js" + }, + "version": "0.1.4" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/seed.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/seed.js new file mode 100644 index 00000000..b9727c5a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/seed.js @@ -0,0 +1,16 @@ +var now = require("./index") + +module.exports = seeded + +/* Returns a Date.now() like function that's in sync with + the seed value +*/ +function seeded(seed) { + var current = now() + + return time + + function time() { + return seed + (now() - current) + } +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/test/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/test/index.js new file mode 100644 index 00000000..270584ca --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/test/index.js @@ -0,0 +1,28 @@ +var test = require("tape") +var setTimeout = require("timers").setTimeout + +var now = require("../index") +var seeded = require("../seed") + +test("date", function (assert) { + var ts = now() + var ts2 = Date.now() + assert.equal(ts, ts2) + assert.end() +}) + +test("seeded", function (assert) { + var time = seeded(40) + var ts = time() + + within(assert, time(), 40, 5) + setTimeout(function () { + within(assert, time(), 90, 10) + assert.end() + }, 50) +}) + +function within(assert, a, b, offset) { + assert.ok(a + offset > b) + assert.ok(a - offset < b) +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/test/static/index.html b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/test/static/index.html new file mode 100644 index 00000000..3d5384da --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/date-now/test/static/index.html @@ -0,0 +1,10 @@ + + + + TAPE Example + + + + + + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/.npmignore new file mode 100644 index 00000000..f1059538 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/.npmignore @@ -0,0 +1,11 @@ +docs/ +test/ +build/ +components/ +support/ +coverage.html +component.json +lib-cov +.travis.yml +Makefile +*.swp diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/History.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/History.md new file mode 100644 index 00000000..d5473cf3 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/History.md @@ -0,0 +1,28 @@ + +0.1.3 / 2013-10-10 +================== + + * pkg: update type-detect version + * index,test: conditional require in test bootstrap + +0.1.2 / 2013-09-18 +================== + + * bug: [fix] misnamed variable from code migration (reference error) + +0.1.1 / 2013-09-18 +================== + + * bug: [fix] last key of deep object ignored + +0.1.0 / 2013-09-18 +================== + + * tests: add iterable + * docs: readme + * makefile: [ci] update cov handling + * testing: [env] use karma for phantom + * add tests (uncompleted) + * add library + * add dependencies + * "Initial commit" diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/README.md new file mode 100644 index 00000000..cf6d6f84 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/README.md @@ -0,0 +1,52 @@ +# deep-eql [![Build Status](https://travis-ci.org/chaijs/deep-eql.png?branch=master)](https://travis-ci.org/chaijs/deep-eql) [![Coverage Status](https://coveralls.io/repos/chaijs/deep-eql/badge.png?branch=master)](https://coveralls.io/r/chaijs/deep-eql?branch=master) + +> Improved deep equality testing for Node.js and the browser. + +## Installation + +### Node.js + +`deep-eql` is available on [npm](http://npmjs.org). + + $ npm install deep-eql + +### Component + +`deep-eql` is available as a [component](https://github.com/component/component). + + $ component install chaijs/deep-eql + +## Usage + +### Rules + +- Strict equality for non-traversable nodes according to [egal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + - `eql(NaN, NaN).should.be.true;` + - `eql(-0, +0).should.be.false;` +- Arguments are not Arrays: + - `eql([], arguments).should.be.false;` + - `eql([], Array.prototype.slice.call(arguments)).should.be.true;` + +## License + +(The MIT License) + +Copyright (c) 2013 Jake Luer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/index.js new file mode 100644 index 00000000..a24e320b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/eql'); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/karma.conf.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/karma.conf.js new file mode 100644 index 00000000..d67eeb00 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/karma.conf.js @@ -0,0 +1,20 @@ +module.exports = function(config) { + config.set({ + basePath: '' + , frameworks: [ 'mocha' ] + , files: [ + 'build/build.js' + , 'test/bootstrap/karma.js' + , 'test/*.js' + ] + , exclude: [] + , reporters: [ 'progress' ] + , port: 9876 + , colors: true + , logLevel: config.LOG_INFO + , autoWatch: true + , browsers: [ 'PhantomJS' ] + , captureTimeout: 60000 + , singleRun: false + }); +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/lib/eql.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/lib/eql.js new file mode 100644 index 00000000..6a1e2c01 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/lib/eql.js @@ -0,0 +1,257 @@ +/*! + * deep-eql + * Copyright(c) 2013 Jake Luer + * MIT Licensed + */ + +/*! + * Module dependencies + */ + +var type = require('type-detect'); + +/*! + * Buffer.isBuffer browser shim + */ + +var Buffer; +try { Buffer = require('buffer').Buffer; } +catch(ex) { + Buffer = {}; + Buffer.isBuffer = function() { return false; } +} + +/*! + * Primary Export + */ + +module.exports = deepEqual; + +/** + * Assert super-strict (egal) equality between + * two objects of any type. + * + * @param {Mixed} a + * @param {Mixed} b + * @param {Array} memoised (optional) + * @return {Boolean} equal match + */ + +function deepEqual(a, b, m) { + if (sameValue(a, b)) { + return true; + } else if ('date' === type(a)) { + return dateEqual(a, b); + } else if ('regexp' === type(a)) { + return regexpEqual(a, b); + } else if (Buffer.isBuffer(a)) { + return bufferEqual(a, b); + } else if ('arguments' === type(a)) { + return argumentsEqual(a, b, m); + } else if (!typeEqual(a, b)) { + return false; + } else if (('object' !== type(a) && 'object' !== type(b)) + && ('array' !== type(a) && 'array' !== type(b))) { + return sameValue(a, b); + } else { + return objectEqual(a, b, m); + } +} + +/*! + * Strict (egal) equality test. Ensures that NaN always + * equals NaN and `-0` does not equal `+0`. + * + * @param {Mixed} a + * @param {Mixed} b + * @return {Boolean} equal match + */ + +function sameValue(a, b) { + if (a === b) return a !== 0 || 1 / a === 1 / b; + return a !== a && b !== b; +} + +/*! + * Compare the types of two given objects and + * return if they are equal. Note that an Array + * has a type of `array` (not `object`) and arguments + * have a type of `arguments` (not `array`/`object`). + * + * @param {Mixed} a + * @param {Mixed} b + * @return {Boolean} result + */ + +function typeEqual(a, b) { + return type(a) === type(b); +} + +/*! + * Compare two Date objects by asserting that + * the time values are equal using `saveValue`. + * + * @param {Date} a + * @param {Date} b + * @return {Boolean} result + */ + +function dateEqual(a, b) { + if ('date' !== type(b)) return false; + return sameValue(a.getTime(), b.getTime()); +} + +/*! + * Compare two regular expressions by converting them + * to string and checking for `sameValue`. + * + * @param {RegExp} a + * @param {RegExp} b + * @return {Boolean} result + */ + +function regexpEqual(a, b) { + if ('regexp' !== type(b)) return false; + return sameValue(a.toString(), b.toString()); +} + +/*! + * Assert deep equality of two `arguments` objects. + * Unfortunately, these must be sliced to arrays + * prior to test to ensure no bad behavior. + * + * @param {Arguments} a + * @param {Arguments} b + * @param {Array} memoize (optional) + * @return {Boolean} result + */ + +function argumentsEqual(a, b, m) { + if ('arguments' !== type(b)) return false; + a = [].slice.call(a); + b = [].slice.call(b); + return deepEqual(a, b, m); +} + +/*! + * Get enumerable properties of a given object. + * + * @param {Object} a + * @return {Array} property names + */ + +function enumerable(a) { + var res = []; + for (var key in a) res.push(key); + return res; +} + +/*! + * Simple equality for flat iterable objects + * such as Arrays or Node.js buffers. + * + * @param {Iterable} a + * @param {Iterable} b + * @return {Boolean} result + */ + +function iterableEqual(a, b) { + if (a.length !== b.length) return false; + + var i = 0; + var match = true; + + for (; i < a.length; i++) { + if (a[i] !== b[i]) { + match = false; + break; + } + } + + return match; +} + +/*! + * Extension to `iterableEqual` specifically + * for Node.js Buffers. + * + * @param {Buffer} a + * @param {Mixed} b + * @return {Boolean} result + */ + +function bufferEqual(a, b) { + if (!Buffer.isBuffer(b)) return false; + return iterableEqual(a, b); +} + +/*! + * Block for `objectEqual` ensuring non-existing + * values don't get in. + * + * @param {Mixed} object + * @return {Boolean} result + */ + +function isValue(a) { + return a !== null && a !== undefined; +} + +/*! + * Recursively check the equality of two objects. + * Once basic sameness has been established it will + * defer to `deepEqual` for each enumerable key + * in the object. + * + * @param {Mixed} a + * @param {Mixed} b + * @return {Boolean} result + */ + +function objectEqual(a, b, m) { + if (!isValue(a) || !isValue(b)) { + return false; + } + + if (a.prototype !== b.prototype) { + return false; + } + + var i; + if (m) { + for (i = 0; i < m.length; i++) { + if ((m[i][0] === a && m[i][1] === b) + || (m[i][0] === b && m[i][1] === a)) { + return true; + } + } + } else { + m = []; + } + + try { + var ka = enumerable(a); + var kb = enumerable(b); + } catch (ex) { + return false; + } + + ka.sort(); + kb.sort(); + + if (!iterableEqual(ka, kb)) { + return false; + } + + m.push([ a, b ]); + + var key; + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!deepEqual(a[key], b[key], m)) { + return false; + } + } + + return true; +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/node_modules/type-detect/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/node_modules/type-detect/.npmignore new file mode 100644 index 00000000..f1059538 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/node_modules/type-detect/.npmignore @@ -0,0 +1,11 @@ +docs/ +test/ +build/ +components/ +support/ +coverage.html +component.json +lib-cov +.travis.yml +Makefile +*.swp diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/node_modules/type-detect/History.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/node_modules/type-detect/History.md new file mode 100644 index 00000000..0ec8fd67 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/node_modules/type-detect/History.md @@ -0,0 +1,18 @@ + +0.1.1 / 2013-10-10 +================== + + * Merge pull request #2 from strongloop/fix-browserify + * index,test: support browserify + +0.1.0 / 2013-08-14 +================== + + * readme: document all methods + * readme: add badges + * library: [test] ensure test runs + * travis: change script to run coveralls reportwq + * tests: add tests + * lib: add type detect lib + * pkg: prepare for coverage based tests + * "Initial commit" diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/node_modules/type-detect/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/node_modules/type-detect/README.md new file mode 100644 index 00000000..ec58828f --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/node_modules/type-detect/README.md @@ -0,0 +1,193 @@ +# type-detect [![Build Status](https://travis-ci.org/chaijs/type-detect.png?branch=master)](https://travis-ci.org/chaijs/type-detect) [![Coverage Status](https://coveralls.io/repos/chaijs/type-detect/badge.png?branch=master)](https://coveralls.io/r/chaijs/type-detect?branch=master) + +> Improved typeof detection for node.js and the browser. + +## Installation + +### Node.js + +`type-detect` is available on [npm](http://npmjs.org). + + $ npm install type-detect + +### Component + +`type-detect` is available as a [component](https://github.com/component/component). + + $ component install chaijs/type-detect + +## Usage + +### Primary + +The primary export of `type-detect` is function that can server as a replacement for +`typeof`. The results of this function will be more specific than that of native `typeof`. + +```js +var type = require('type-detect'); +``` + +#### array + +```js +assert('array' === type([])); +assert('array' === type(new Array())); +``` + +#### regexp + +```js +assert('regexp' === type(/a-z/gi)); +assert('regexp' === type(new RegExp('a-z'))); +``` + +#### function + +```js +assert('function' === type(function () {})); +``` + +#### arguments + +```js +(function () { + assert('arguments' === type(arguments)); +})(); +``` + +#### date + +```js +assert('date' === type(new Date)); +``` + +#### number + +```js +assert('number' === type(1)); +assert('number' === type(1.234)); +assert('number' === type(-1)); +assert('number' === type(-1.234)); +assert('number' === type(Infinity)); +assert('number' === type(NaN)); +``` + +#### string + +```js +assert('string' === type('hello world')); +``` + +#### null + +```js +assert('null' === type(null)); +assert('null' !== type(undefined)); +``` + +#### undefined + +```js +assert('undefined' === type(undefined)); +assert('undefined' !== type(null)); +``` + +#### object + +```js +var Noop = function () {}; +assert('object' === type({})); +assert('object' !== type(Noop)); +assert('object' === type(new Noop)); +assert('object' === type(new Object)); +assert('object' === type(new String('hello'))); +``` + +### Library + +A `Library` is a small constructed repository for custom type detections. + +```js +var lib = new type.Library; +``` + +#### .of (obj) + +* **@param** _{Mixed}_ object to test +* **@return** _{String}_ type + +Expose replacement `typeof` detection to the library. + +```js +if ('string' === lib.of('hello world')) { + // ... +} +``` + + +#### .define (type, test) + +* **@param** _{String}_ type +* **@param** _{RegExp|Function}_ test + +Add a test to for the `.test()` assertion. + +Can be defined as a regular expression: + +```js +lib.define('int', /^[0-9]+$/); +``` + +... or as a function: + +```js +lib.define('bln', function (obj) { + if ('boolean' === lib.of(obj)) return true; + var blns = [ 'yes', 'no', 'true', 'false', 1, 0 ]; + if ('string' === lib.of(obj)) obj = obj.toLowerCase(); + return !! ~blns.indexOf(obj); +}); +``` + + +#### .test (obj, test) + +* **@param** _{Mixed}_ object +* **@param** _{String}_ type +* **@return** _{Boolean}_ result + +Assert that an object is of type. Will first +check natives, and if that does not pass it will +use the user defined custom tests. + +```js +assert(lib.test('1', 'int')); +assert(lib.test('yes', 'bln')); +``` + + + + +## License + +(The MIT License) + +Copyright (c) 2013 Jake Luer (http://alogicalparadox.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/node_modules/type-detect/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/node_modules/type-detect/index.js new file mode 100644 index 00000000..33677564 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/node_modules/type-detect/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/type'); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/node_modules/type-detect/lib/type.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/node_modules/type-detect/lib/type.js new file mode 100644 index 00000000..70981403 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/node_modules/type-detect/lib/type.js @@ -0,0 +1,142 @@ +/*! + * type-detect + * Copyright(c) 2013 jake luer + * MIT Licensed + */ + +/*! + * Primary Exports + */ + +var exports = module.exports = getType; + +/*! + * Detectable javascript natives + */ + +var natives = { + '[object Array]': 'array' + , '[object RegExp]': 'regexp' + , '[object Function]': 'function' + , '[object Arguments]': 'arguments' + , '[object Date]': 'date' +}; + +/** + * ### typeOf (obj) + * + * Use several different techniques to determine + * the type of object being tested. + * + * + * @param {Mixed} object + * @return {String} object type + * @api public + */ + +function getType (obj) { + var str = Object.prototype.toString.call(obj); + if (natives[str]) return natives[str]; + if (obj === null) return 'null'; + if (obj === undefined) return 'undefined'; + if (obj === Object(obj)) return 'object'; + return typeof obj; +} + +exports.Library = Library; + +/** + * ### Library + * + * Create a repository for custom type detection. + * + * ```js + * var lib = new type.Library; + * ``` + * + */ + +function Library () { + this.tests = {}; +} + +/** + * #### .of (obj) + * + * Expose replacement `typeof` detection to the library. + * + * ```js + * if ('string' === lib.of('hello world')) { + * // ... + * } + * ``` + * + * @param {Mixed} object to test + * @return {String} type + */ + +Library.prototype.of = getType; + +/** + * #### .define (type, test) + * + * Add a test to for the `.test()` assertion. + * + * Can be defined as a regular expression: + * + * ```js + * lib.define('int', /^[0-9]+$/); + * ``` + * + * ... or as a function: + * + * ```js + * lib.define('bln', function (obj) { + * if ('boolean' === lib.of(obj)) return true; + * var blns = [ 'yes', 'no', 'true', 'false', 1, 0 ]; + * if ('string' === lib.of(obj)) obj = obj.toLowerCase(); + * return !! ~blns.indexOf(obj); + * }); + * ``` + * + * @param {String} type + * @param {RegExp|Function} test + * @api public + */ + +Library.prototype.define = function (type, test) { + if (arguments.length === 1) return this.tests[type]; + this.tests[type] = test; + return this; +}; + +/** + * #### .test (obj, test) + * + * Assert that an object is of type. Will first + * check natives, and if that does not pass it will + * use the user defined custom tests. + * + * ```js + * assert(lib.test('1', 'int')); + * assert(lib.test('yes', 'bln')); + * ``` + * + * @param {Mixed} object + * @param {String} type + * @return {Boolean} result + * @api public + */ + +Library.prototype.test = function (obj, type) { + if (type === getType(obj)) return true; + var test = this.tests[type]; + + if (test && 'regexp' === getType(test)) { + return test.test(obj); + } else if (test && 'function' === getType(test)) { + return test(obj); + } else { + throw new ReferenceError('Type test "' + type + '" not defined or invalid.'); + } +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/node_modules/type-detect/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/node_modules/type-detect/package.json new file mode 100644 index 00000000..acb44eec --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/node_modules/type-detect/package.json @@ -0,0 +1,83 @@ +{ + "_args": [ + [ + "type-detect@0.1.1", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-eql" + ] + ], + "_from": "type-detect@0.1.1", + "_id": "type-detect@0.1.1", + "_inCache": true, + "_installable": true, + "_location": "/deep-eql/type-detect", + "_npmUser": { + "email": "jake@alogicalparadox.com", + "name": "jakeluer" + }, + "_npmVersion": "1.3.11", + "_phantomChildren": {}, + "_requested": { + "name": "type-detect", + "raw": "type-detect@0.1.1", + "rawSpec": "0.1.1", + "scope": null, + "spec": "0.1.1", + "type": "version" + }, + "_requiredBy": [ + "/deep-eql" + ], + "_resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "_shasum": "0ba5ec2a885640e470ea4e8505971900dac58822", + "_shrinkwrap": null, + "_spec": "type-detect@0.1.1", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\deep-eql", + "author": { + "email": "jake@alogicalparadox.com", + "name": "Jake Luer", + "url": "http://alogicalparadox.com" + }, + "bugs": { + "url": "https://github.com/chaijs/type-detect/issues" + }, + "dependencies": {}, + "description": "Improved typeof detection for node.js and the browser.", + "devDependencies": { + "component": "*", + "coveralls": "2.0.16", + "jscoverage": "0.3.7", + "mocha": "*", + "mocha-lcov-reporter": "0.0.1", + "mocha-phantomjs": "*", + "simple-assert": "*" + }, + "directories": {}, + "dist": { + "shasum": "0ba5ec2a885640e470ea4e8505971900dac58822", + "tarball": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz" + }, + "engines": { + "node": "*" + }, + "homepage": "https://github.com/chaijs/type-detect#readme", + "keywords": [], + "license": "MIT", + "main": "./index", + "maintainers": [ + { + "email": "jake@alogicalparadox.com", + "name": "jakeluer" + } + ], + "name": "type-detect", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/chaijs/type-detect.git" + }, + "scripts": { + "test": "make test" + }, + "version": "0.1.1" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/package.json new file mode 100644 index 00000000..ff417ac5 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-eql/package.json @@ -0,0 +1,90 @@ +{ + "_args": [ + [ + "deep-eql@^0.1.3", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai" + ] + ], + "_from": "deep-eql@>=0.1.3 <0.2.0", + "_id": "deep-eql@0.1.3", + "_inCache": true, + "_installable": true, + "_location": "/deep-eql", + "_npmUser": { + "email": "jake@alogicalparadox.com", + "name": "jakeluer" + }, + "_npmVersion": "1.3.11", + "_phantomChildren": {}, + "_requested": { + "name": "deep-eql", + "raw": "deep-eql@^0.1.3", + "rawSpec": "^0.1.3", + "scope": null, + "spec": ">=0.1.3 <0.2.0", + "type": "range" + }, + "_requiredBy": [ + "/chai" + ], + "_resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "_shasum": "ef558acab8de25206cd713906d74e56930eb69f2", + "_shrinkwrap": null, + "_spec": "deep-eql@^0.1.3", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\chai", + "author": { + "email": "jake@alogicalparadox.com", + "name": "Jake Luer" + }, + "bugs": { + "url": "https://github.com/chaijs/deep-eql/issues" + }, + "dependencies": { + "type-detect": "0.1.1" + }, + "description": "Improved deep equality testing for Node.js and the browser.", + "devDependencies": { + "component": "*", + "coveralls": "2.0.16", + "jscoverage": "0.3.7", + "karma": "0.10.x", + "karma-mocha": "*", + "mocha": "*", + "mocha-lcov-reporter": "0.0.1", + "simple-assert": "*" + }, + "directories": {}, + "dist": { + "shasum": "ef558acab8de25206cd713906d74e56930eb69f2", + "tarball": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz" + }, + "engines": { + "node": "*" + }, + "homepage": "https://github.com/chaijs/deep-eql#readme", + "keywords": [ + "deep equal", + "object equal", + "testing", + "chai util" + ], + "license": "MIT", + "main": "./index", + "maintainers": [ + { + "email": "jake@alogicalparadox.com", + "name": "jakeluer" + } + ], + "name": "deep-eql", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/chaijs/deep-eql.git" + }, + "scripts": { + "test": "make test" + }, + "version": "0.1.3" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/.npmignore new file mode 100644 index 00000000..3c3629e6 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/deep-extend/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/LICENSE similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/deep-extend/LICENSE rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/LICENSE diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/README.md new file mode 100644 index 00000000..7f64ef95 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/README.md @@ -0,0 +1,52 @@ +Node.JS module “Deep Extend” +============================ + +Recursive object extending. + +Install +----- + + npm install deep-extend + +Usage +----- + + var deepExtend = require('deep-extend'); + var obj1 = { + a: 1, + b: 2, + d: { + a: 1, + b: [], + c: { test1: 123, test2: 321 } + }, + f: 5, + g: 123 + }; + var obj2 = { + b: 3, + c: 5, + d: { + b: { first: 'one', second: 'two' }, + c: { test2: 222 } + }, + e: { one: 1, two: 2 }, + f: [], + g: (void 0) + }; + + deepExtend(obj1, obj2); + + console.log(obj1); + /* + { a: 1, + b: 3, + d: + { a: 1, + b: { first: 'one', second: 'two' }, + c: { test1: 123, test2: 222 } }, + f: [], + c: 5, + e: { one: 1, two: 2 }, + g: undefined } + */ diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/index.js new file mode 100644 index 00000000..c1f8dae3 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/index.js @@ -0,0 +1,90 @@ +/*! + * Node.JS module "Deep Extend" + * @description Recursive object extending. + * @author Viacheslav Lotsmanov (unclechu) + * @license MIT + * + * The MIT License (MIT) + * + * Copyright (c) 2013 Viacheslav Lotsmanov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** + * Extening object that entered in first argument. + * Returns extended object or false if have no target object or incorrect type. + * If you wish to clone object, simply use that: + * deepExtend({}, yourObj_1, [yourObj_N]) - first arg is new empty object + */ +var deepExtend = module.exports = function (/*obj_1, [obj_2], [obj_N]*/) { + if (arguments.length < 1 || typeof arguments[0] !== 'object') { + return false; + } + + if (arguments.length < 2) return arguments[0]; + + var target = arguments[0]; + + // convert arguments to array and cut off target object + var args = Array.prototype.slice.call(arguments, 1); + + var key, val, src, clone, tmpBuf; + + args.forEach(function (obj) { + if (typeof obj !== 'object') return; + + for (key in obj) { + if ( ! (key in obj)) continue; + + src = target[key]; + val = obj[key]; + + if (val === target) continue; + + if (typeof val !== 'object' || val === null) { + target[key] = val; + continue; + } else if (val instanceof Buffer) { + tmpBuf = new Buffer(val.length); + val.copy(tmpBuf); + target[key] = tmpBuf; + continue; + } else if (val instanceof Date) { + target[key] = new Date(val.getTime()); + continue; + } + + if (typeof src !== 'object' || src === null) { + clone = (Array.isArray(val)) ? [] : {}; + target[key] = deepExtend(clone, val); + continue; + } + + if (Array.isArray(val)) { + clone = (Array.isArray(src)) ? src : []; + } else { + clone = (!Array.isArray(src)) ? src : {}; + } + + target[key] = deepExtend(clone, val); + } + }); + + return target; +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/package.json new file mode 100644 index 00000000..6d9d2a73 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/package.json @@ -0,0 +1,85 @@ +{ + "_args": [ + [ + "deep-extend@~0.2.5", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc" + ] + ], + "_from": "deep-extend@>=0.2.5 <0.3.0", + "_id": "deep-extend@0.2.11", + "_inCache": true, + "_installable": true, + "_location": "/deep-extend", + "_npmUser": { + "email": "lotsmanov89@gmail.com", + "name": "unclechu" + }, + "_npmVersion": "1.4.6", + "_phantomChildren": {}, + "_requested": { + "name": "deep-extend", + "raw": "deep-extend@~0.2.5", + "rawSpec": "~0.2.5", + "scope": null, + "spec": ">=0.2.5 <0.3.0", + "type": "range" + }, + "_requiredBy": [ + "/rc" + ], + "_resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.2.11.tgz", + "_shasum": "7a16ba69729132340506170494bc83f7076fe08f", + "_shrinkwrap": null, + "_spec": "deep-extend@~0.2.5", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc", + "author": { + "email": "lotsmanov89@gmail.com", + "name": "Viacheslav Lotsmanov", + "url": "unclechu" + }, + "bugs": { + "url": "https://github.com/unclechu/node-deep-extend/issues" + }, + "contributors": [ + { + "name": "Romain Prieto", + "url": "https://github.com/rprieto" + } + ], + "dependencies": {}, + "description": "Recursive object extending.", + "devDependencies": { + "mocha": "~1.19.0", + "should": "~3.3.2" + }, + "directories": { + "test": "./test" + }, + "dist": { + "shasum": "7a16ba69729132340506170494bc83f7076fe08f", + "tarball": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.2.11.tgz" + }, + "engines": { + "node": ">=0.4" + }, + "homepage": "https://github.com/unclechu/node-deep-extend", + "license": "MIT", + "main": "index", + "maintainers": [ + { + "email": "lotsmanov89@gmail.com", + "name": "unclechu" + } + ], + "name": "deep-extend", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/unclechu/node-deep-extend.git" + }, + "scripts": { + "test": "mocha" + }, + "version": "0.2.11" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/test/index.spec.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/test/index.spec.js new file mode 100644 index 00000000..38974a20 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/test/index.spec.js @@ -0,0 +1,57 @@ +var should = require('should'); +var extend = require('../index'); + +describe('deep-extend', function() { + + it('can extend on 1 level', function() { + var a = { hello: 1 }; + var b = { world: 2 }; + extend(a, b); + a.should.eql({ + hello: 1, + world: 2 + }); + }); + + it('can extend on 2 levels', function() { + var a = { person: { name: 'John' } }; + var b = { person: { age: 30 } }; + extend(a, b); + a.should.eql({ + person: { name: 'John', age: 30 } + }); + }); + + it('can extend with Buffer values', function() { + var a = { hello: 1 }; + var b = { value: new Buffer('world') }; + extend(a, b); + a.should.eql({ + hello: 1, + value: new Buffer('world') + }); + }); + + it('Buffer is cloned', function () { + var a = { }; + var b = { value: new Buffer('foo') }; + extend(a, b); + a.value.write('bar'); + a.value.toString().should.eql('bar'); + b.value.toString().should.eql('foo'); + }); + + it('Date objects', function () { + var a = { d: new Date() }; + var b = extend({}, a); + b.d.should.instanceOf(Date); + }); + + it('Date object is cloned', function () { + var a = { d: new Date() }; + var b = extend({}, a); + b.d.setTime( (new Date()).getTime() + 100000 ); + b.d.getTime().should.not.eql( a.d.getTime() ); + }); + +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/test/mocha.opts b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/test/mocha.opts new file mode 100644 index 00000000..5ada47be --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/deep-extend/test/mocha.opts @@ -0,0 +1 @@ +--reporter spec diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/diff/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/diff/README.md new file mode 100644 index 00000000..b867e19a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/diff/README.md @@ -0,0 +1,181 @@ +# jsdiff + +[![Build Status](https://secure.travis-ci.org/kpdecker/jsdiff.png)](http://travis-ci.org/kpdecker/jsdiff) + +A javascript text differencing implementation. + +Based on the algorithm proposed in +["An O(ND) Difference Algorithm and its Variations" (Myers, 1986)](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927). + +## Installation + + npm install diff + +or + + bower install jsdiff + +or + + git clone git://github.com/kpdecker/jsdiff.git + +## API + +* `JsDiff.diffChars(oldStr, newStr[, callback])` - diffs two blocks of text, comparing character by character. + + Returns a list of change objects (See below). + +* `JsDiff.diffWords(oldStr, newStr[, callback])` - diffs two blocks of text, comparing word by word, ignoring whitespace. + + Returns a list of change objects (See below). + +* `JsDiff.diffWordsWithSpace(oldStr, newStr[, callback])` - diffs two blocks of text, comparing word by word, treating whitespace as significant. + + Returns a list of change objects (See below). + +* `JsDiff.diffLines(oldStr, newStr[, callback])` - diffs two blocks of text, comparing line by line. + + Returns a list of change objects (See below). + +* `JsDiff.diffTrimmedLines(oldStr, newStr[, callback])` - diffs two blocks of text, comparing line by line, ignoring leading and trailing whitespace. + + Returns a list of change objects (See below). + +* `JsDiff.diffSentences(oldStr, newStr[, callback])` - diffs two blocks of text, comparing sentence by sentence. + + Returns a list of change objects (See below). + +* `JsDiff.diffCss(oldStr, newStr[, callback])` - diffs two blocks of text, comparing CSS tokens. + + Returns a list of change objects (See below). + +* `JsDiff.diffJson(oldObj, newObj[, callback])` - diffs two JSON objects, comparing the fields defined on each. The order of fields, etc does not matter in this comparison. + + Returns a list of change objects (See below). + +* `JsDiff.createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader)` - creates a unified diff patch. + + Parameters: + * `oldFileName` : String to be output in the filename section of the patch for the removals + * `newFileName` : String to be output in the filename section of the patch for the additions + * `oldStr` : Original string value + * `newStr` : New string value + * `oldHeader` : Additional information to include in the old file header + * `newHeader` : Additional information to include in thew new file header + +* `JsDiff.createPatch(fileName, oldStr, newStr, oldHeader, newHeader)` - creates a unified diff patch. + + Just like JsDiff.createTwoFilesPatch, but with oldFileName being equal to newFileName. + +* `JsDiff.applyPatch(oldStr, diffStr)` - applies a unified diff patch. + + Return a string containing new version of provided data. + +* `convertChangesToXML(changes)` - converts a list of changes to a serialized XML format + + +All methods above which accept the optional callback method will run in sync mode when that parameter is omitted and in async mode when supplied. This allows for larger diffs without blocking the event loop. + +### Change Objects +Many of the methods above return change objects. These objects are consist of the following fields: + +* `value`: Text content +* `added`: True if the value was inserted into the new string +* `removed`: True of the value was removed from the old string + +Note that some cases may omit a particular flag field. Comparison on the flag fields should always be done in a truthy or falsy manner. + +## Examples + +Basic example in Node + +```js +require('colors') +var jsdiff = require('diff'); + +var one = 'beep boop'; +var other = 'beep boob blah'; + +var diff = jsdiff.diffChars(one, other); + +diff.forEach(function(part){ + // green for additions, red for deletions + // grey for common parts + var color = part.added ? 'green' : + part.removed ? 'red' : 'grey'; + process.stderr.write(part.value[color]); +}); + +console.log() +``` +Running the above program should yield + +Node Example + +Basic example in a web page + +```html +

+
+
+```
+
+Open the above .html file in a browser and you should see
+
+Node Example
+
+**[Full online demo](http://kpdecker.github.com/jsdiff)**
+
+## License
+
+Software License Agreement (BSD License)
+
+Copyright (c) 2009-2011, Kevin Decker kpdecker@gmail.com
+
+All rights reserved.
+
+Redistribution and use of this software in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above
+  copyright notice, this list of conditions and the
+  following disclaimer.
+
+* Redistributions in binary form must reproduce the above
+  copyright notice, this list of conditions and the
+  following disclaimer in the documentation and/or other
+  materials provided with the distribution.
+
+* Neither the name of Kevin Decker nor the names of its
+  contributors may be used to endorse or promote products
+  derived from this software without specific prior
+  written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/kpdecker/jsdiff/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/diff/diff.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/diff/diff.js
new file mode 100644
index 00000000..421854a1
--- /dev/null
+++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/diff/diff.js
@@ -0,0 +1,619 @@
+/* See LICENSE file for terms of use */
+
+/*
+ * Text diff implementation.
+ *
+ * This library supports the following APIS:
+ * JsDiff.diffChars: Character by character diff
+ * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace
+ * JsDiff.diffLines: Line based diff
+ *
+ * JsDiff.diffCss: Diff targeted at CSS content
+ *
+ * These methods are based on the implementation proposed in
+ * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986).
+ * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927
+ */
+(function(global, undefined) {
+  var objectPrototypeToString = Object.prototype.toString;
+
+  /*istanbul ignore next*/
+  function map(arr, mapper, that) {
+    if (Array.prototype.map) {
+      return Array.prototype.map.call(arr, mapper, that);
+    }
+
+    var other = new Array(arr.length);
+
+    for (var i = 0, n = arr.length; i < n; i++) {
+      other[i] = mapper.call(that, arr[i], i, arr);
+    }
+    return other;
+  }
+  function clonePath(path) {
+    return { newPos: path.newPos, components: path.components.slice(0) };
+  }
+  function removeEmpty(array) {
+    var ret = [];
+    for (var i = 0; i < array.length; i++) {
+      if (array[i]) {
+        ret.push(array[i]);
+      }
+    }
+    return ret;
+  }
+  function escapeHTML(s) {
+    var n = s;
+    n = n.replace(/&/g, '&');
+    n = n.replace(//g, '>');
+    n = n.replace(/"/g, '"');
+
+    return n;
+  }
+
+  // This function handles the presence of circular references by bailing out when encountering an
+  // object that is already on the "stack" of items being processed.
+  function canonicalize(obj, stack, replacementStack) {
+    stack = stack || [];
+    replacementStack = replacementStack || [];
+
+    var i;
+
+    for (i = 0; i < stack.length; i += 1) {
+      if (stack[i] === obj) {
+        return replacementStack[i];
+      }
+    }
+
+    var canonicalizedObj;
+
+    if ('[object Array]' === objectPrototypeToString.call(obj)) {
+      stack.push(obj);
+      canonicalizedObj = new Array(obj.length);
+      replacementStack.push(canonicalizedObj);
+      for (i = 0; i < obj.length; i += 1) {
+        canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack);
+      }
+      stack.pop();
+      replacementStack.pop();
+    } else if (typeof obj === 'object' && obj !== null) {
+      stack.push(obj);
+      canonicalizedObj = {};
+      replacementStack.push(canonicalizedObj);
+      var sortedKeys = [],
+          key;
+      for (key in obj) {
+        sortedKeys.push(key);
+      }
+      sortedKeys.sort();
+      for (i = 0; i < sortedKeys.length; i += 1) {
+        key = sortedKeys[i];
+        canonicalizedObj[key] = canonicalize(obj[key], stack, replacementStack);
+      }
+      stack.pop();
+      replacementStack.pop();
+    } else {
+      canonicalizedObj = obj;
+    }
+    return canonicalizedObj;
+  }
+
+  function buildValues(components, newString, oldString, useLongestToken) {
+    var componentPos = 0,
+        componentLen = components.length,
+        newPos = 0,
+        oldPos = 0;
+
+    for (; componentPos < componentLen; componentPos++) {
+      var component = components[componentPos];
+      if (!component.removed) {
+        if (!component.added && useLongestToken) {
+          var value = newString.slice(newPos, newPos + component.count);
+          value = map(value, function(value, i) {
+            var oldValue = oldString[oldPos + i];
+            return oldValue.length > value.length ? oldValue : value;
+          });
+
+          component.value = value.join('');
+        } else {
+          component.value = newString.slice(newPos, newPos + component.count).join('');
+        }
+        newPos += component.count;
+
+        // Common case
+        if (!component.added) {
+          oldPos += component.count;
+        }
+      } else {
+        component.value = oldString.slice(oldPos, oldPos + component.count).join('');
+        oldPos += component.count;
+
+        // Reverse add and remove so removes are output first to match common convention
+        // The diffing algorithm is tied to add then remove output and this is the simplest
+        // route to get the desired output with minimal overhead.
+        if (componentPos && components[componentPos - 1].added) {
+          var tmp = components[componentPos - 1];
+          components[componentPos - 1] = components[componentPos];
+          components[componentPos] = tmp;
+        }
+      }
+    }
+
+    return components;
+  }
+
+  function Diff(ignoreWhitespace) {
+    this.ignoreWhitespace = ignoreWhitespace;
+  }
+  Diff.prototype = {
+    diff: function(oldString, newString, callback) {
+      var self = this;
+
+      function done(value) {
+        if (callback) {
+          setTimeout(function() { callback(undefined, value); }, 0);
+          return true;
+        } else {
+          return value;
+        }
+      }
+
+      // Handle the identity case (this is due to unrolling editLength == 0
+      if (newString === oldString) {
+        return done([{ value: newString }]);
+      }
+      if (!newString) {
+        return done([{ value: oldString, removed: true }]);
+      }
+      if (!oldString) {
+        return done([{ value: newString, added: true }]);
+      }
+
+      newString = this.tokenize(newString);
+      oldString = this.tokenize(oldString);
+
+      var newLen = newString.length, oldLen = oldString.length;
+      var editLength = 1;
+      var maxEditLength = newLen + oldLen;
+      var bestPath = [{ newPos: -1, components: [] }];
+
+      // Seed editLength = 0, i.e. the content starts with the same values
+      var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
+      if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
+        // Identity per the equality and tokenizer
+        return done([{value: newString.join('')}]);
+      }
+
+      // Main worker method. checks all permutations of a given edit length for acceptance.
+      function execEditLength() {
+        for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {
+          var basePath;
+          var addPath = bestPath[diagonalPath - 1],
+              removePath = bestPath[diagonalPath + 1],
+              oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
+          if (addPath) {
+            // No one else is going to attempt to use this value, clear it
+            bestPath[diagonalPath - 1] = undefined;
+          }
+
+          var canAdd = addPath && addPath.newPos + 1 < newLen,
+              canRemove = removePath && 0 <= oldPos && oldPos < oldLen;
+          if (!canAdd && !canRemove) {
+            // If this path is a terminal then prune
+            bestPath[diagonalPath] = undefined;
+            continue;
+          }
+
+          // Select the diagonal that we want to branch from. We select the prior
+          // path whose position in the new string is the farthest from the origin
+          // and does not pass the bounds of the diff graph
+          if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) {
+            basePath = clonePath(removePath);
+            self.pushComponent(basePath.components, undefined, true);
+          } else {
+            basePath = addPath;   // No need to clone, we've pulled it from the list
+            basePath.newPos++;
+            self.pushComponent(basePath.components, true, undefined);
+          }
+
+          oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath);
+
+          // If we have hit the end of both strings, then we are done
+          if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
+            return done(buildValues(basePath.components, newString, oldString, self.useLongestToken));
+          } else {
+            // Otherwise track this path as a potential candidate and continue.
+            bestPath[diagonalPath] = basePath;
+          }
+        }
+
+        editLength++;
+      }
+
+      // Performs the length of edit iteration. Is a bit fugly as this has to support the
+      // sync and async mode which is never fun. Loops over execEditLength until a value
+      // is produced.
+      if (callback) {
+        (function exec() {
+          setTimeout(function() {
+            // This should not happen, but we want to be safe.
+            /*istanbul ignore next */
+            if (editLength > maxEditLength) {
+              return callback();
+            }
+
+            if (!execEditLength()) {
+              exec();
+            }
+          }, 0);
+        }());
+      } else {
+        while (editLength <= maxEditLength) {
+          var ret = execEditLength();
+          if (ret) {
+            return ret;
+          }
+        }
+      }
+    },
+
+    pushComponent: function(components, added, removed) {
+      var last = components[components.length - 1];
+      if (last && last.added === added && last.removed === removed) {
+        // We need to clone here as the component clone operation is just
+        // as shallow array clone
+        components[components.length - 1] = {count: last.count + 1, added: added, removed: removed };
+      } else {
+        components.push({count: 1, added: added, removed: removed });
+      }
+    },
+    extractCommon: function(basePath, newString, oldString, diagonalPath) {
+      var newLen = newString.length,
+          oldLen = oldString.length,
+          newPos = basePath.newPos,
+          oldPos = newPos - diagonalPath,
+
+          commonCount = 0;
+      while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {
+        newPos++;
+        oldPos++;
+        commonCount++;
+      }
+
+      if (commonCount) {
+        basePath.components.push({count: commonCount});
+      }
+
+      basePath.newPos = newPos;
+      return oldPos;
+    },
+
+    equals: function(left, right) {
+      var reWhitespace = /\S/;
+      return left === right || (this.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right));
+    },
+    tokenize: function(value) {
+      return value.split('');
+    }
+  };
+
+  var CharDiff = new Diff();
+
+  var WordDiff = new Diff(true);
+  var WordWithSpaceDiff = new Diff();
+  WordDiff.tokenize = WordWithSpaceDiff.tokenize = function(value) {
+    return removeEmpty(value.split(/(\s+|\b)/));
+  };
+
+  var CssDiff = new Diff(true);
+  CssDiff.tokenize = function(value) {
+    return removeEmpty(value.split(/([{}:;,]|\s+)/));
+  };
+
+  var LineDiff = new Diff();
+
+  var TrimmedLineDiff = new Diff();
+  TrimmedLineDiff.ignoreTrim = true;
+
+  LineDiff.tokenize = TrimmedLineDiff.tokenize = function(value) {
+    var retLines = [],
+        lines = value.split(/^/m);
+    for (var i = 0; i < lines.length; i++) {
+      var line = lines[i],
+          lastLine = lines[i - 1],
+          lastLineLastChar = lastLine && lastLine[lastLine.length - 1];
+
+      // Merge lines that may contain windows new lines
+      if (line === '\n' && lastLineLastChar === '\r') {
+          retLines[retLines.length - 1] = retLines[retLines.length - 1].slice(0, -1) + '\r\n';
+      } else {
+        if (this.ignoreTrim) {
+          line = line.trim();
+          // add a newline unless this is the last line.
+          if (i < lines.length - 1) {
+            line += '\n';
+          }
+        }
+        retLines.push(line);
+      }
+    }
+
+    return retLines;
+  };
+
+  var PatchDiff = new Diff();
+  PatchDiff.tokenize = function(value) {
+    var ret = [],
+        linesAndNewlines = value.split(/(\n|\r\n)/);
+
+    // Ignore the final empty token that occurs if the string ends with a new line
+    if (!linesAndNewlines[linesAndNewlines.length - 1]) {
+      linesAndNewlines.pop();
+    }
+
+    // Merge the content and line separators into single tokens
+    for (var i = 0; i < linesAndNewlines.length; i++) {
+      var line = linesAndNewlines[i];
+
+      if (i % 2) {
+        ret[ret.length - 1] += line;
+      } else {
+        ret.push(line);
+      }
+    }
+    return ret;
+  };
+
+  var SentenceDiff = new Diff();
+  SentenceDiff.tokenize = function(value) {
+    return removeEmpty(value.split(/(\S.+?[.!?])(?=\s+|$)/));
+  };
+
+  var JsonDiff = new Diff();
+  // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a
+  // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:
+  JsonDiff.useLongestToken = true;
+  JsonDiff.tokenize = LineDiff.tokenize;
+  JsonDiff.equals = function(left, right) {
+    return LineDiff.equals(left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1'));
+  };
+
+  var JsDiff = {
+    Diff: Diff,
+
+    diffChars: function(oldStr, newStr, callback) { return CharDiff.diff(oldStr, newStr, callback); },
+    diffWords: function(oldStr, newStr, callback) { return WordDiff.diff(oldStr, newStr, callback); },
+    diffWordsWithSpace: function(oldStr, newStr, callback) { return WordWithSpaceDiff.diff(oldStr, newStr, callback); },
+    diffLines: function(oldStr, newStr, callback) { return LineDiff.diff(oldStr, newStr, callback); },
+    diffTrimmedLines: function(oldStr, newStr, callback) { return TrimmedLineDiff.diff(oldStr, newStr, callback); },
+
+    diffSentences: function(oldStr, newStr, callback) { return SentenceDiff.diff(oldStr, newStr, callback); },
+
+    diffCss: function(oldStr, newStr, callback) { return CssDiff.diff(oldStr, newStr, callback); },
+    diffJson: function(oldObj, newObj, callback) {
+      return JsonDiff.diff(
+        typeof oldObj === 'string' ? oldObj : JSON.stringify(canonicalize(oldObj), undefined, '  '),
+        typeof newObj === 'string' ? newObj : JSON.stringify(canonicalize(newObj), undefined, '  '),
+        callback
+      );
+    },
+
+    createTwoFilesPatch: function(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader) {
+      var ret = [];
+
+      if (oldFileName == newFileName) {
+        ret.push('Index: ' + oldFileName);
+      }
+      ret.push('===================================================================');
+      ret.push('--- ' + oldFileName + (typeof oldHeader === 'undefined' ? '' : '\t' + oldHeader));
+      ret.push('+++ ' + newFileName + (typeof newHeader === 'undefined' ? '' : '\t' + newHeader));
+
+      var diff = PatchDiff.diff(oldStr, newStr);
+      diff.push({value: '', lines: []});   // Append an empty value to make cleanup easier
+
+      // Formats a given set of lines for printing as context lines in a patch
+      function contextLines(lines) {
+        return map(lines, function(entry) { return ' ' + entry; });
+      }
+
+      // Outputs the no newline at end of file warning if needed
+      function eofNL(curRange, i, current) {
+        var last = diff[diff.length - 2],
+            isLast = i === diff.length - 2,
+            isLastOfType = i === diff.length - 3 && current.added !== last.added;
+
+        // Figure out if this is the last line for the given file and missing NL
+        if (!(/\n$/.test(current.value)) && (isLast || isLastOfType)) {
+          curRange.push('\\ No newline at end of file');
+        }
+      }
+
+      var oldRangeStart = 0, newRangeStart = 0, curRange = [],
+          oldLine = 1, newLine = 1;
+      for (var i = 0; i < diff.length; i++) {
+        var current = diff[i],
+            lines = current.lines || current.value.replace(/\n$/, '').split('\n');
+        current.lines = lines;
+
+        if (current.added || current.removed) {
+          // If we have previous context, start with that
+          if (!oldRangeStart) {
+            var prev = diff[i - 1];
+            oldRangeStart = oldLine;
+            newRangeStart = newLine;
+
+            if (prev) {
+              curRange = contextLines(prev.lines.slice(-4));
+              oldRangeStart -= curRange.length;
+              newRangeStart -= curRange.length;
+            }
+          }
+
+          // Output our changes
+          curRange.push.apply(curRange, map(lines, function(entry) {
+            return (current.added ? '+' : '-') + entry;
+          }));
+          eofNL(curRange, i, current);
+
+          // Track the updated file position
+          if (current.added) {
+            newLine += lines.length;
+          } else {
+            oldLine += lines.length;
+          }
+        } else {
+          // Identical context lines. Track line changes
+          if (oldRangeStart) {
+            // Close out any changes that have been output (or join overlapping)
+            if (lines.length <= 8 && i < diff.length - 2) {
+              // Overlapping
+              curRange.push.apply(curRange, contextLines(lines));
+            } else {
+              // end the range and output
+              var contextSize = Math.min(lines.length, 4);
+              ret.push(
+                  '@@ -' + oldRangeStart + ',' + (oldLine - oldRangeStart + contextSize)
+                  + ' +' + newRangeStart + ',' + (newLine - newRangeStart + contextSize)
+                  + ' @@');
+              ret.push.apply(ret, curRange);
+              ret.push.apply(ret, contextLines(lines.slice(0, contextSize)));
+              if (lines.length <= 4) {
+                eofNL(ret, i, current);
+              }
+
+              oldRangeStart = 0;
+              newRangeStart = 0;
+              curRange = [];
+            }
+          }
+          oldLine += lines.length;
+          newLine += lines.length;
+        }
+      }
+
+      return ret.join('\n') + '\n';
+    },
+
+    createPatch: function(fileName, oldStr, newStr, oldHeader, newHeader) {
+      return JsDiff.createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader);
+    },
+
+    applyPatch: function(oldStr, uniDiff) {
+      var diffstr = uniDiff.split('\n'),
+          hunks = [],
+          i = 0,
+          remEOFNL = false,
+          addEOFNL = false;
+
+      // Skip to the first change hunk
+      while (i < diffstr.length && !(/^@@/.test(diffstr[i]))) {
+        i++;
+      }
+
+      // Parse the unified diff
+      for (; i < diffstr.length; i++) {
+        if (diffstr[i][0] === '@') {
+          var chnukHeader = diffstr[i].split(/@@ -(\d+),(\d+) \+(\d+),(\d+) @@/);
+          hunks.unshift({
+            start: chnukHeader[3],
+            oldlength: +chnukHeader[2],
+            removed: [],
+            newlength: chnukHeader[4],
+            added: []
+          });
+        } else if (diffstr[i][0] === '+') {
+          hunks[0].added.push(diffstr[i].substr(1));
+        } else if (diffstr[i][0] === '-') {
+          hunks[0].removed.push(diffstr[i].substr(1));
+        } else if (diffstr[i][0] === ' ') {
+          hunks[0].added.push(diffstr[i].substr(1));
+          hunks[0].removed.push(diffstr[i].substr(1));
+        } else if (diffstr[i][0] === '\\') {
+          if (diffstr[i - 1][0] === '+') {
+            remEOFNL = true;
+          } else if (diffstr[i - 1][0] === '-') {
+            addEOFNL = true;
+          }
+        }
+      }
+
+      // Apply the diff to the input
+      var lines = oldStr.split('\n');
+      for (i = hunks.length - 1; i >= 0; i--) {
+        var hunk = hunks[i];
+        // Sanity check the input string. Bail if we don't match.
+        for (var j = 0; j < hunk.oldlength; j++) {
+          if (lines[hunk.start - 1 + j] !== hunk.removed[j]) {
+            return false;
+          }
+        }
+        Array.prototype.splice.apply(lines, [hunk.start - 1, hunk.oldlength].concat(hunk.added));
+      }
+
+      // Handle EOFNL insertion/removal
+      if (remEOFNL) {
+        while (!lines[lines.length - 1]) {
+          lines.pop();
+        }
+      } else if (addEOFNL) {
+        lines.push('');
+      }
+      return lines.join('\n');
+    },
+
+    convertChangesToXML: function(changes) {
+      var ret = [];
+      for (var i = 0; i < changes.length; i++) {
+        var change = changes[i];
+        if (change.added) {
+          ret.push('');
+        } else if (change.removed) {
+          ret.push('');
+        }
+
+        ret.push(escapeHTML(change.value));
+
+        if (change.added) {
+          ret.push('');
+        } else if (change.removed) {
+          ret.push('');
+        }
+      }
+      return ret.join('');
+    },
+
+    // See: http://code.google.com/p/google-diff-match-patch/wiki/API
+    convertChangesToDMP: function(changes) {
+      var ret = [],
+          change,
+          operation;
+      for (var i = 0; i < changes.length; i++) {
+        change = changes[i];
+        if (change.added) {
+          operation = 1;
+        } else if (change.removed) {
+          operation = -1;
+        } else {
+          operation = 0;
+        }
+
+        ret.push([operation, change.value]);
+      }
+      return ret;
+    },
+
+    canonicalize: canonicalize
+  };
+
+  /*istanbul ignore next */
+  /*global module */
+  if (typeof module !== 'undefined' && module.exports) {
+    module.exports = JsDiff;
+  } else if (typeof define === 'function' && define.amd) {
+    /*global define */
+    define([], function() { return JsDiff; });
+  } else if (typeof global.JsDiff === 'undefined') {
+    global.JsDiff = JsDiff;
+  }
+}(this));
diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/diff/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/diff/package.json
new file mode 100644
index 00000000..efde0461
--- /dev/null
+++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/diff/package.json
@@ -0,0 +1,88 @@
+{
+  "_args": [
+    [
+      "diff@1.4.0",
+      "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha"
+    ]
+  ],
+  "_from": "diff@1.4.0",
+  "_id": "diff@1.4.0",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/diff",
+  "_npmUser": {
+    "email": "kpdecker@gmail.com",
+    "name": "kpdecker"
+  },
+  "_npmVersion": "1.4.28",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "diff",
+    "raw": "diff@1.4.0",
+    "rawSpec": "1.4.0",
+    "scope": null,
+    "spec": "1.4.0",
+    "type": "version"
+  },
+  "_requiredBy": [
+    "/mocha"
+  ],
+  "_resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz",
+  "_shasum": "7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf",
+  "_shrinkwrap": null,
+  "_spec": "diff@1.4.0",
+  "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha",
+  "bugs": {
+    "email": "kpdecker@gmail.com",
+    "url": "http://github.com/kpdecker/jsdiff/issues"
+  },
+  "dependencies": {},
+  "description": "A javascript text diff implementation.",
+  "devDependencies": {
+    "colors": "^1.1.0",
+    "istanbul": "^0.3.2",
+    "mocha": "^2.2.4",
+    "should": "^6.0.1"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf",
+    "tarball": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz"
+  },
+  "engines": {
+    "node": ">=0.3.1"
+  },
+  "files": [
+    "diff.js"
+  ],
+  "gitHead": "27a750e9116e6ade6303bc24a9be72f6845e00ed",
+  "homepage": "https://github.com/kpdecker/jsdiff",
+  "keywords": [
+    "diff",
+    "javascript"
+  ],
+  "licenses": [
+    {
+      "type": "BSD",
+      "url": "http://github.com/kpdecker/jsdiff/blob/master/LICENSE"
+    }
+  ],
+  "main": "./diff",
+  "maintainers": [
+    {
+      "email": "kpdecker@gmail.com",
+      "name": "kpdecker"
+    }
+  ],
+  "name": "diff",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/kpdecker/jsdiff.git"
+  },
+  "scripts": {
+    "test": "istanbul cover node_modules/.bin/_mocha test/*.js && istanbul check-coverage --statements 100 --functions 100 --branches 100 --lines 100 coverage/coverage.json"
+  },
+  "version": "1.4.0"
+}
diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/dom-serializer/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/dom-serializer/LICENSE
new file mode 100644
index 00000000..3d241a8d
--- /dev/null
+++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/dom-serializer/LICENSE
@@ -0,0 +1,11 @@
+License
+
+(The MIT License)
+
+Copyright (c) 2014 The cheeriojs contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/dom-serializer/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/dom-serializer/index.js
new file mode 100644
index 00000000..3316dfeb
--- /dev/null
+++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/dom-serializer/index.js
@@ -0,0 +1,178 @@
+/*
+  Module dependencies
+*/
+var ElementType = require('domelementtype');
+var entities = require('entities');
+
+/*
+  Boolean Attributes
+*/
+var booleanAttributes = {
+  __proto__: null,
+  allowfullscreen: true,
+  async: true,
+  autofocus: true,
+  autoplay: true,
+  checked: true,
+  controls: true,
+  default: true,
+  defer: true,
+  disabled: true,
+  hidden: true,
+  ismap: true,
+  loop: true,
+  multiple: true,
+  muted: true,
+  open: true,
+  readonly: true,
+  required: true,
+  reversed: true,
+  scoped: true,
+  seamless: true,
+  selected: true,
+  typemustmatch: true
+};
+
+var unencodedElements = {
+  __proto__: null,
+  style: true,
+  script: true,
+  xmp: true,
+  iframe: true,
+  noembed: true,
+  noframes: true,
+  plaintext: true,
+  noscript: true
+};
+
+/*
+  Format attributes
+*/
+function formatAttrs(attributes, opts) {
+  if (!attributes) return;
+
+  var output = '',
+      value;
+
+  // Loop through the attributes
+  for (var key in attributes) {
+    value = attributes[key];
+    if (output) {
+      output += ' ';
+    }
+
+    if (!value && booleanAttributes[key]) {
+      output += key;
+    } else {
+      output += key + '="' + (opts.decodeEntities ? entities.encodeXML(value) : value) + '"';
+    }
+  }
+
+  return output;
+}
+
+/*
+  Self-enclosing tags (stolen from node-htmlparser)
+*/
+var singleTag = {
+  __proto__: null,
+  area: true,
+  base: true,
+  basefont: true,
+  br: true,
+  col: true,
+  command: true,
+  embed: true,
+  frame: true,
+  hr: true,
+  img: true,
+  input: true,
+  isindex: true,
+  keygen: true,
+  link: true,
+  meta: true,
+  param: true,
+  source: true,
+  track: true,
+  wbr: true,
+};
+
+
+var render = module.exports = function(dom, opts) {
+  if (!Array.isArray(dom) && !dom.cheerio) dom = [dom];
+  opts = opts || {};
+
+  var output = '';
+
+  for(var i = 0; i < dom.length; i++){
+    var elem = dom[i];
+
+    if (elem.type === 'root')
+      output += render(elem.children, opts);
+    else if (ElementType.isTag(elem))
+      output += renderTag(elem, opts);
+    else if (elem.type === ElementType.Directive)
+      output += renderDirective(elem);
+    else if (elem.type === ElementType.Comment)
+      output += renderComment(elem);
+    else if (elem.type === ElementType.CDATA)
+      output += renderCdata(elem);
+    else
+      output += renderText(elem, opts);
+  }
+
+  return output;
+};
+
+function renderTag(elem, opts) {
+  // Handle SVG
+  if (elem.name === "svg") opts = {decodeEntities: opts.decodeEntities, xmlMode: true};
+
+  var tag = '<' + elem.name,
+      attribs = formatAttrs(elem.attribs, opts);
+
+  if (attribs) {
+    tag += ' ' + attribs;
+  }
+
+  if (
+    opts.xmlMode
+    && (!elem.children || elem.children.length === 0)
+  ) {
+    tag += '/>';
+  } else {
+    tag += '>';
+    if (elem.children) {
+      tag += render(elem.children, opts);
+    }
+
+    if (!singleTag[elem.name] || opts.xmlMode) {
+      tag += '';
+    }
+  }
+
+  return tag;
+}
+
+function renderDirective(elem) {
+  return '<' + elem.data + '>';
+}
+
+function renderText(elem, opts) {
+  var data = elem.data || '';
+
+  // if entities weren't decoded, no need to encode them back
+  if (opts.decodeEntities && !(elem.parent && elem.parent.name in unencodedElements)) {
+    data = entities.encodeXML(data);
+  }
+
+  return data;
+}
+
+function renderCdata(elem) {
+  return '';
+}
+
+function renderComment(elem) {
+  return '';
+}
diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/dom-serializer/node_modules/domelementtype/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/dom-serializer/node_modules/domelementtype/LICENSE
new file mode 100644
index 00000000..c464f863
--- /dev/null
+++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/dom-serializer/node_modules/domelementtype/LICENSE
@@ -0,0 +1,11 @@
+Copyright (c) Felix Böhm
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/dom-serializer/node_modules/domelementtype/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/dom-serializer/node_modules/domelementtype/index.js
new file mode 100644
index 00000000..89e0b175
--- /dev/null
+++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/dom-serializer/node_modules/domelementtype/index.js
@@ -0,0 +1,14 @@
+//Types of elements found in the DOM
+module.exports = {
+	Text: "text", //Text
+	Directive: "directive", //
+	Comment: "comment", //
+	Script: "script", //",
+  "expected": [
+    {
+      "type": "script",
+      "name": "script",
+      "attribs": {},
+      "children": [
+        {
+          "data": "",
+          "type": "text"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domhandler/test/cases/07-unescaped_in_style.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domhandler/test/cases/07-unescaped_in_style.json
new file mode 100644
index 00000000..77438fdc
--- /dev/null
+++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domhandler/test/cases/07-unescaped_in_style.json
@@ -0,0 +1,20 @@
+{
+  "name": "Unescaped chars in style",
+  "options": {},
+  "html": "",
+  "expected": [
+    {
+      "type": "style",
+      "name": "style",
+      "attribs": {
+        "type": "text/css"
+      },
+      "children": [
+        {
+          "data": "\n body > p\n\t{ font-weight: bold; }",
+          "type": "text"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json
new file mode 100644
index 00000000..5c2492e2
--- /dev/null
+++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json
@@ -0,0 +1,20 @@
+{
+  "name": "Extra spaces in tag",
+  "options": {},
+  "html": "the text",
+  "expected": [
+    {
+      "type": "tag",
+      "name": "font",
+      "attribs": {
+        "size": "14"
+      },
+      "children": [
+        {
+          "data": "the text",
+          "type": "text"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domhandler/test/cases/09-unquoted_attrib.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domhandler/test/cases/09-unquoted_attrib.json
new file mode 100644
index 00000000..543cceee
--- /dev/null
+++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domhandler/test/cases/09-unquoted_attrib.json
@@ -0,0 +1,20 @@
+{
+  "name": "Unquoted attributes",
+  "options": {},
+  "html": "the text",
+  "expected": [
+    {
+      "type": "tag",
+      "name": "font",
+      "attribs": {
+        "size": "14"
+      },
+      "children": [
+        {
+          "data": "the text",
+          "type": "text"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domhandler/test/cases/10-singular_attribute.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domhandler/test/cases/10-singular_attribute.json
new file mode 100644
index 00000000..544636e4
--- /dev/null
+++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domhandler/test/cases/10-singular_attribute.json
@@ -0,0 +1,15 @@
+{
+  "name": "Singular attribute",
+  "options": {},
+  "html": "
"; + var dom = makeDom(markup)[0]; + var p = dom.children[0]; + var span = p.children[0]; + var a = dom.children[1]; + + it("reports when the first node occurs before the second indirectly", function() { + assert.equal(compareDocumentPosition(span, a), 2); + }); + + it("reports when the first node contains the second", function() { + assert.equal(compareDocumentPosition(p, span), 10); + }); + + it("reports when the first node occurs after the second indirectly", function() { + assert.equal(compareDocumentPosition(a, span), 4); + }); + + it("reports when the first node is contained by the second", function() { + assert.equal(compareDocumentPosition(span, p), 20); + }); + + it("reports when the nodes belong to separate documents", function() { + var other = makeDom(markup)[0].children[0].children[0]; + + assert.equal(compareDocumentPosition(span, other), 1); + }); + + it("reports when the nodes are identical", function() { + assert.equal(compareDocumentPosition(span, span), 0); + }); + }); + + describe("uniqueSort", function() { + var uniqueSort = helpers.uniqueSort; + var dom, p, span, a; + + beforeEach(function() { + dom = makeDom("

")[0]; + p = dom.children[0]; + span = p.children[0]; + a = dom.children[1]; + }); + + it("leaves unique elements untouched", function() { + assert.deepEqual(uniqueSort([p, a]), [p, a]); + }); + + it("removes duplicate elements", function() { + assert.deepEqual(uniqueSort([p, a, p]), [p, a]); + }); + + it("sorts nodes in document order", function() { + assert.deepEqual(uniqueSort([a, dom, span, p]), [dom, p, span, a]); + }); + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domutils/test/tests/legacy.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domutils/test/tests/legacy.js new file mode 100644 index 00000000..87fabfab --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domutils/test/tests/legacy.js @@ -0,0 +1,119 @@ +var DomUtils = require("../.."); +var fixture = require("../fixture"); +var assert = require("assert"); + +// Set up expected structures +var expected = { + idAsdf: fixture[1], + tag2: [], + typeScript: [] +}; +for (var idx = 0; idx < 20; ++idx) { + expected.tag2.push(fixture[idx*2 + 1].children[5]); + expected.typeScript.push(fixture[idx*2 + 1].children[1]); +} + +describe("legacy", function() { + describe("getElements", function() { + var getElements = DomUtils.getElements; + it("returns the node with the specified ID", function() { + assert.deepEqual( + getElements({ id: "asdf" }, fixture, true, 1), + [expected.idAsdf] + ); + }); + it("returns empty array for unknown IDs", function() { + assert.deepEqual(getElements({ id: "asdfs" }, fixture, true), []); + }); + it("returns the nodes with the specified tag name", function() { + assert.deepEqual( + getElements({ tag_name:"tag2" }, fixture, true), + expected.tag2 + ); + }); + it("returns empty array for unknown tag names", function() { + assert.deepEqual( + getElements({ tag_name : "asdfs" }, fixture, true), + [] + ); + }); + it("returns the nodes with the specified tag type", function() { + assert.deepEqual( + getElements({ tag_type: "script" }, fixture, true), + expected.typeScript + ); + }); + it("returns empty array for unknown tag types", function() { + assert.deepEqual( + getElements({ tag_type: "video" }, fixture, true), + [] + ); + }); + }); + + describe("getElementById", function() { + var getElementById = DomUtils.getElementById; + it("returns the specified node", function() { + assert.equal( + expected.idAsdf, + getElementById("asdf", fixture, true) + ); + }); + it("returns `null` for unknown IDs", function() { + assert.equal(null, getElementById("asdfs", fixture, true)); + }); + }); + + describe("getElementsByTagName", function() { + var getElementsByTagName = DomUtils.getElementsByTagName; + it("returns the specified nodes", function() { + assert.deepEqual( + getElementsByTagName("tag2", fixture, true), + expected.tag2 + ); + }); + it("returns empty array for unknown tag names", function() { + assert.deepEqual( + getElementsByTagName("tag23", fixture, true), + [] + ); + }); + }); + + describe("getElementsByTagType", function() { + var getElementsByTagType = DomUtils.getElementsByTagType; + it("returns the specified nodes", function() { + assert.deepEqual( + getElementsByTagType("script", fixture, true), + expected.typeScript + ); + }); + it("returns empty array for unknown tag types", function() { + assert.deepEqual( + getElementsByTagType("video", fixture, true), + [] + ); + }); + }); + + describe("getOuterHTML", function() { + var getOuterHTML = DomUtils.getOuterHTML; + it("Correctly renders the outer HTML", function() { + assert.equal( + getOuterHTML(fixture[1]), + " text " + ); + }); + }); + + describe("getInnerHTML", function() { + var getInnerHTML = DomUtils.getInnerHTML; + it("Correctly renders the inner HTML", function() { + assert.equal( + getInnerHTML(fixture[1]), + " text " + ); + }); + }); + +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domutils/test/tests/traversal.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domutils/test/tests/traversal.js new file mode 100644 index 00000000..f500e089 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domutils/test/tests/traversal.js @@ -0,0 +1,17 @@ +var makeDom = require("../utils").makeDom; +var traversal = require("../.."); +var assert = require("assert"); + +describe("traversal", function() { + describe("hasAttrib", function() { + var hasAttrib = traversal.hasAttrib; + + it("doesn't throw on text nodes", function() { + var dom = makeDom("textnode"); + assert.doesNotThrow(function() { + hasAttrib(dom[0], "some-attrib"); + }); + }); + + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domutils/test/utils.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domutils/test/utils.js new file mode 100644 index 00000000..676e8f68 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/domutils/test/utils.js @@ -0,0 +1,9 @@ +var htmlparser = require("htmlparser2"); + +exports.makeDom = function(markup) { + var handler = new htmlparser.DomHandler(), + parser = new htmlparser.Parser(handler); + parser.write(markup); + parser.done(); + return handler.dom; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/.travis.yml new file mode 100644 index 00000000..8724b6c6 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/.travis.yml @@ -0,0 +1,7 @@ +language: node_js +node_js: + - 0.8 + - "0.10" + - 0.11 + +script: npm run coveralls diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/LICENSE new file mode 100644 index 00000000..c464f863 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/LICENSE @@ -0,0 +1,11 @@ +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/index.js new file mode 100644 index 00000000..fc55809f --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/index.js @@ -0,0 +1,31 @@ +var encode = require("./lib/encode.js"), + decode = require("./lib/decode.js"); + +exports.decode = function(data, level){ + return (!level || level <= 0 ? decode.XML : decode.HTML)(data); +}; + +exports.decodeStrict = function(data, level){ + return (!level || level <= 0 ? decode.XML : decode.HTMLStrict)(data); +}; + +exports.encode = function(data, level){ + return (!level || level <= 0 ? encode.XML : encode.HTML)(data); +}; + +exports.encodeXML = encode.XML; + +exports.encodeHTML4 = +exports.encodeHTML5 = +exports.encodeHTML = encode.HTML; + +exports.decodeXML = +exports.decodeXMLStrict = decode.XML; + +exports.decodeHTML4 = +exports.decodeHTML5 = +exports.decodeHTML = decode.HTML; + +exports.decodeHTML4Strict = +exports.decodeHTML5Strict = +exports.decodeHTMLStrict = decode.HTMLStrict; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/lib/decode.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/lib/decode.js new file mode 100644 index 00000000..5e48bdb6 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/lib/decode.js @@ -0,0 +1,72 @@ +var entityMap = require("../maps/entities.json"), + legacyMap = require("../maps/legacy.json"), + xmlMap = require("../maps/xml.json"), + decodeCodePoint = require("./decode_codepoint.js"); + +var decodeXMLStrict = getStrictDecoder(xmlMap), + decodeHTMLStrict = getStrictDecoder(entityMap); + +function getStrictDecoder(map){ + var keys = Object.keys(map).join("|"), + replace = getReplacer(map); + + keys += "|#[xX][\\da-fA-F]+|#\\d+"; + + var re = new RegExp("&(?:" + keys + ");", "g"); + + return function(str){ + return String(str).replace(re, replace); + }; +} + +var decodeHTML = (function(){ + var legacy = Object.keys(legacyMap) + .sort(sorter); + + var keys = Object.keys(entityMap) + .sort(sorter); + + for(var i = 0, j = 0; i < keys.length; i++){ + if(legacy[j] === keys[i]){ + keys[i] += ";?"; + j++; + } else { + keys[i] += ";"; + } + } + + var re = new RegExp("&(?:" + keys.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", "g"), + replace = getReplacer(entityMap); + + function replacer(str){ + if(str.substr(-1) !== ";") str += ";"; + return replace(str); + } + + //TODO consider creating a merged map + return function(str){ + return String(str).replace(re, replacer); + }; +}()); + +function sorter(a, b){ + return a < b ? 1 : -1; +} + +function getReplacer(map){ + return function replace(str){ + if(str.charAt(1) === "#"){ + if(str.charAt(2) === "X" || str.charAt(2) === "x"){ + return decodeCodePoint(parseInt(str.substr(3), 16)); + } + return decodeCodePoint(parseInt(str.substr(2), 10)); + } + return map[str.slice(1, -1)]; + }; +} + +module.exports = { + XML: decodeXMLStrict, + HTML: decodeHTML, + HTMLStrict: decodeHTMLStrict +}; \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/lib/decode_codepoint.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/lib/decode_codepoint.js new file mode 100644 index 00000000..730d5bfa --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/lib/decode_codepoint.js @@ -0,0 +1,26 @@ +var decodeMap = require("../maps/decode.json"); + +module.exports = decodeCodePoint; + +// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119 +function decodeCodePoint(codePoint){ + + if((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF){ + return "\uFFFD"; + } + + if(codePoint in decodeMap){ + codePoint = decodeMap[codePoint]; + } + + var output = ""; + + if(codePoint > 0xFFFF){ + codePoint -= 0x10000; + output += String.fromCharCode(codePoint >>> 10 & 0x3FF | 0xD800); + codePoint = 0xDC00 | codePoint & 0x3FF; + } + + output += String.fromCharCode(codePoint); + return output; +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/lib/encode.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/lib/encode.js new file mode 100644 index 00000000..04f1d2a8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/lib/encode.js @@ -0,0 +1,48 @@ +var inverseXML = getInverseObj(require("../maps/xml.json")), + xmlReplacer = getInverseReplacer(inverseXML); + +exports.XML = getInverse(inverseXML, xmlReplacer); + +var inverseHTML = getInverseObj(require("../maps/entities.json")), + htmlReplacer = getInverseReplacer(inverseHTML); + +exports.HTML = getInverse(inverseHTML, htmlReplacer); + +function getInverseObj(obj){ + return Object.keys(obj).sort().reduce(function(inverse, name){ + inverse[obj[name]] = "&" + name + ";"; + return inverse; + }, {}); +} + +function getInverseReplacer(inverse){ + return new RegExp("\\" + Object.keys(inverse).sort().join("|\\"), "g"); +} + +var re_nonASCII = /[^\0-\x7F]/g, + re_astralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + +function nonUTF8Replacer(c){ + return "&#x" + c.charCodeAt(0).toString(16).toUpperCase() + ";"; +} + +function astralReplacer(c){ + // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + var high = c.charCodeAt(0); + var low = c.charCodeAt(1); + var codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000; + return "&#x" + codePoint.toString(16).toUpperCase() + ";"; +} + +function getInverse(inverse, re){ + function func(name){ + return inverse[name]; + } + + return function(data){ + return data + .replace(re, func) + .replace(re_astralSymbols, astralReplacer) + .replace(re_nonASCII, nonUTF8Replacer); + }; +} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/maps/decode.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/maps/decode.json new file mode 100644 index 00000000..44e5d0bb --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/maps/decode.json @@ -0,0 +1 @@ +{"0":65533,"128":8364,"130":8218,"131":402,"132":8222,"133":8230,"134":8224,"135":8225,"136":710,"137":8240,"138":352,"139":8249,"140":338,"142":381,"145":8216,"146":8217,"147":8220,"148":8221,"149":8226,"150":8211,"151":8212,"152":732,"153":8482,"154":353,"155":8250,"156":339,"158":382,"159":376} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/maps/entities.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/maps/entities.json new file mode 100644 index 00000000..7ccfcd8b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/maps/entities.json @@ -0,0 +1 @@ +{"Aacute":"\u00C1","aacute":"\u00E1","Abreve":"\u0102","abreve":"\u0103","ac":"\u223E","acd":"\u223F","acE":"\u223E\u0333","Acirc":"\u00C2","acirc":"\u00E2","acute":"\u00B4","Acy":"\u0410","acy":"\u0430","AElig":"\u00C6","aelig":"\u00E6","af":"\u2061","Afr":"\uD835\uDD04","afr":"\uD835\uDD1E","Agrave":"\u00C0","agrave":"\u00E0","alefsym":"\u2135","aleph":"\u2135","Alpha":"\u0391","alpha":"\u03B1","Amacr":"\u0100","amacr":"\u0101","amalg":"\u2A3F","amp":"&","AMP":"&","andand":"\u2A55","And":"\u2A53","and":"\u2227","andd":"\u2A5C","andslope":"\u2A58","andv":"\u2A5A","ang":"\u2220","ange":"\u29A4","angle":"\u2220","angmsdaa":"\u29A8","angmsdab":"\u29A9","angmsdac":"\u29AA","angmsdad":"\u29AB","angmsdae":"\u29AC","angmsdaf":"\u29AD","angmsdag":"\u29AE","angmsdah":"\u29AF","angmsd":"\u2221","angrt":"\u221F","angrtvb":"\u22BE","angrtvbd":"\u299D","angsph":"\u2222","angst":"\u00C5","angzarr":"\u237C","Aogon":"\u0104","aogon":"\u0105","Aopf":"\uD835\uDD38","aopf":"\uD835\uDD52","apacir":"\u2A6F","ap":"\u2248","apE":"\u2A70","ape":"\u224A","apid":"\u224B","apos":"'","ApplyFunction":"\u2061","approx":"\u2248","approxeq":"\u224A","Aring":"\u00C5","aring":"\u00E5","Ascr":"\uD835\uDC9C","ascr":"\uD835\uDCB6","Assign":"\u2254","ast":"*","asymp":"\u2248","asympeq":"\u224D","Atilde":"\u00C3","atilde":"\u00E3","Auml":"\u00C4","auml":"\u00E4","awconint":"\u2233","awint":"\u2A11","backcong":"\u224C","backepsilon":"\u03F6","backprime":"\u2035","backsim":"\u223D","backsimeq":"\u22CD","Backslash":"\u2216","Barv":"\u2AE7","barvee":"\u22BD","barwed":"\u2305","Barwed":"\u2306","barwedge":"\u2305","bbrk":"\u23B5","bbrktbrk":"\u23B6","bcong":"\u224C","Bcy":"\u0411","bcy":"\u0431","bdquo":"\u201E","becaus":"\u2235","because":"\u2235","Because":"\u2235","bemptyv":"\u29B0","bepsi":"\u03F6","bernou":"\u212C","Bernoullis":"\u212C","Beta":"\u0392","beta":"\u03B2","beth":"\u2136","between":"\u226C","Bfr":"\uD835\uDD05","bfr":"\uD835\uDD1F","bigcap":"\u22C2","bigcirc":"\u25EF","bigcup":"\u22C3","bigodot":"\u2A00","bigoplus":"\u2A01","bigotimes":"\u2A02","bigsqcup":"\u2A06","bigstar":"\u2605","bigtriangledown":"\u25BD","bigtriangleup":"\u25B3","biguplus":"\u2A04","bigvee":"\u22C1","bigwedge":"\u22C0","bkarow":"\u290D","blacklozenge":"\u29EB","blacksquare":"\u25AA","blacktriangle":"\u25B4","blacktriangledown":"\u25BE","blacktriangleleft":"\u25C2","blacktriangleright":"\u25B8","blank":"\u2423","blk12":"\u2592","blk14":"\u2591","blk34":"\u2593","block":"\u2588","bne":"=\u20E5","bnequiv":"\u2261\u20E5","bNot":"\u2AED","bnot":"\u2310","Bopf":"\uD835\uDD39","bopf":"\uD835\uDD53","bot":"\u22A5","bottom":"\u22A5","bowtie":"\u22C8","boxbox":"\u29C9","boxdl":"\u2510","boxdL":"\u2555","boxDl":"\u2556","boxDL":"\u2557","boxdr":"\u250C","boxdR":"\u2552","boxDr":"\u2553","boxDR":"\u2554","boxh":"\u2500","boxH":"\u2550","boxhd":"\u252C","boxHd":"\u2564","boxhD":"\u2565","boxHD":"\u2566","boxhu":"\u2534","boxHu":"\u2567","boxhU":"\u2568","boxHU":"\u2569","boxminus":"\u229F","boxplus":"\u229E","boxtimes":"\u22A0","boxul":"\u2518","boxuL":"\u255B","boxUl":"\u255C","boxUL":"\u255D","boxur":"\u2514","boxuR":"\u2558","boxUr":"\u2559","boxUR":"\u255A","boxv":"\u2502","boxV":"\u2551","boxvh":"\u253C","boxvH":"\u256A","boxVh":"\u256B","boxVH":"\u256C","boxvl":"\u2524","boxvL":"\u2561","boxVl":"\u2562","boxVL":"\u2563","boxvr":"\u251C","boxvR":"\u255E","boxVr":"\u255F","boxVR":"\u2560","bprime":"\u2035","breve":"\u02D8","Breve":"\u02D8","brvbar":"\u00A6","bscr":"\uD835\uDCB7","Bscr":"\u212C","bsemi":"\u204F","bsim":"\u223D","bsime":"\u22CD","bsolb":"\u29C5","bsol":"\\","bsolhsub":"\u27C8","bull":"\u2022","bullet":"\u2022","bump":"\u224E","bumpE":"\u2AAE","bumpe":"\u224F","Bumpeq":"\u224E","bumpeq":"\u224F","Cacute":"\u0106","cacute":"\u0107","capand":"\u2A44","capbrcup":"\u2A49","capcap":"\u2A4B","cap":"\u2229","Cap":"\u22D2","capcup":"\u2A47","capdot":"\u2A40","CapitalDifferentialD":"\u2145","caps":"\u2229\uFE00","caret":"\u2041","caron":"\u02C7","Cayleys":"\u212D","ccaps":"\u2A4D","Ccaron":"\u010C","ccaron":"\u010D","Ccedil":"\u00C7","ccedil":"\u00E7","Ccirc":"\u0108","ccirc":"\u0109","Cconint":"\u2230","ccups":"\u2A4C","ccupssm":"\u2A50","Cdot":"\u010A","cdot":"\u010B","cedil":"\u00B8","Cedilla":"\u00B8","cemptyv":"\u29B2","cent":"\u00A2","centerdot":"\u00B7","CenterDot":"\u00B7","cfr":"\uD835\uDD20","Cfr":"\u212D","CHcy":"\u0427","chcy":"\u0447","check":"\u2713","checkmark":"\u2713","Chi":"\u03A7","chi":"\u03C7","circ":"\u02C6","circeq":"\u2257","circlearrowleft":"\u21BA","circlearrowright":"\u21BB","circledast":"\u229B","circledcirc":"\u229A","circleddash":"\u229D","CircleDot":"\u2299","circledR":"\u00AE","circledS":"\u24C8","CircleMinus":"\u2296","CirclePlus":"\u2295","CircleTimes":"\u2297","cir":"\u25CB","cirE":"\u29C3","cire":"\u2257","cirfnint":"\u2A10","cirmid":"\u2AEF","cirscir":"\u29C2","ClockwiseContourIntegral":"\u2232","CloseCurlyDoubleQuote":"\u201D","CloseCurlyQuote":"\u2019","clubs":"\u2663","clubsuit":"\u2663","colon":":","Colon":"\u2237","Colone":"\u2A74","colone":"\u2254","coloneq":"\u2254","comma":",","commat":"@","comp":"\u2201","compfn":"\u2218","complement":"\u2201","complexes":"\u2102","cong":"\u2245","congdot":"\u2A6D","Congruent":"\u2261","conint":"\u222E","Conint":"\u222F","ContourIntegral":"\u222E","copf":"\uD835\uDD54","Copf":"\u2102","coprod":"\u2210","Coproduct":"\u2210","copy":"\u00A9","COPY":"\u00A9","copysr":"\u2117","CounterClockwiseContourIntegral":"\u2233","crarr":"\u21B5","cross":"\u2717","Cross":"\u2A2F","Cscr":"\uD835\uDC9E","cscr":"\uD835\uDCB8","csub":"\u2ACF","csube":"\u2AD1","csup":"\u2AD0","csupe":"\u2AD2","ctdot":"\u22EF","cudarrl":"\u2938","cudarrr":"\u2935","cuepr":"\u22DE","cuesc":"\u22DF","cularr":"\u21B6","cularrp":"\u293D","cupbrcap":"\u2A48","cupcap":"\u2A46","CupCap":"\u224D","cup":"\u222A","Cup":"\u22D3","cupcup":"\u2A4A","cupdot":"\u228D","cupor":"\u2A45","cups":"\u222A\uFE00","curarr":"\u21B7","curarrm":"\u293C","curlyeqprec":"\u22DE","curlyeqsucc":"\u22DF","curlyvee":"\u22CE","curlywedge":"\u22CF","curren":"\u00A4","curvearrowleft":"\u21B6","curvearrowright":"\u21B7","cuvee":"\u22CE","cuwed":"\u22CF","cwconint":"\u2232","cwint":"\u2231","cylcty":"\u232D","dagger":"\u2020","Dagger":"\u2021","daleth":"\u2138","darr":"\u2193","Darr":"\u21A1","dArr":"\u21D3","dash":"\u2010","Dashv":"\u2AE4","dashv":"\u22A3","dbkarow":"\u290F","dblac":"\u02DD","Dcaron":"\u010E","dcaron":"\u010F","Dcy":"\u0414","dcy":"\u0434","ddagger":"\u2021","ddarr":"\u21CA","DD":"\u2145","dd":"\u2146","DDotrahd":"\u2911","ddotseq":"\u2A77","deg":"\u00B0","Del":"\u2207","Delta":"\u0394","delta":"\u03B4","demptyv":"\u29B1","dfisht":"\u297F","Dfr":"\uD835\uDD07","dfr":"\uD835\uDD21","dHar":"\u2965","dharl":"\u21C3","dharr":"\u21C2","DiacriticalAcute":"\u00B4","DiacriticalDot":"\u02D9","DiacriticalDoubleAcute":"\u02DD","DiacriticalGrave":"`","DiacriticalTilde":"\u02DC","diam":"\u22C4","diamond":"\u22C4","Diamond":"\u22C4","diamondsuit":"\u2666","diams":"\u2666","die":"\u00A8","DifferentialD":"\u2146","digamma":"\u03DD","disin":"\u22F2","div":"\u00F7","divide":"\u00F7","divideontimes":"\u22C7","divonx":"\u22C7","DJcy":"\u0402","djcy":"\u0452","dlcorn":"\u231E","dlcrop":"\u230D","dollar":"$","Dopf":"\uD835\uDD3B","dopf":"\uD835\uDD55","Dot":"\u00A8","dot":"\u02D9","DotDot":"\u20DC","doteq":"\u2250","doteqdot":"\u2251","DotEqual":"\u2250","dotminus":"\u2238","dotplus":"\u2214","dotsquare":"\u22A1","doublebarwedge":"\u2306","DoubleContourIntegral":"\u222F","DoubleDot":"\u00A8","DoubleDownArrow":"\u21D3","DoubleLeftArrow":"\u21D0","DoubleLeftRightArrow":"\u21D4","DoubleLeftTee":"\u2AE4","DoubleLongLeftArrow":"\u27F8","DoubleLongLeftRightArrow":"\u27FA","DoubleLongRightArrow":"\u27F9","DoubleRightArrow":"\u21D2","DoubleRightTee":"\u22A8","DoubleUpArrow":"\u21D1","DoubleUpDownArrow":"\u21D5","DoubleVerticalBar":"\u2225","DownArrowBar":"\u2913","downarrow":"\u2193","DownArrow":"\u2193","Downarrow":"\u21D3","DownArrowUpArrow":"\u21F5","DownBreve":"\u0311","downdownarrows":"\u21CA","downharpoonleft":"\u21C3","downharpoonright":"\u21C2","DownLeftRightVector":"\u2950","DownLeftTeeVector":"\u295E","DownLeftVectorBar":"\u2956","DownLeftVector":"\u21BD","DownRightTeeVector":"\u295F","DownRightVectorBar":"\u2957","DownRightVector":"\u21C1","DownTeeArrow":"\u21A7","DownTee":"\u22A4","drbkarow":"\u2910","drcorn":"\u231F","drcrop":"\u230C","Dscr":"\uD835\uDC9F","dscr":"\uD835\uDCB9","DScy":"\u0405","dscy":"\u0455","dsol":"\u29F6","Dstrok":"\u0110","dstrok":"\u0111","dtdot":"\u22F1","dtri":"\u25BF","dtrif":"\u25BE","duarr":"\u21F5","duhar":"\u296F","dwangle":"\u29A6","DZcy":"\u040F","dzcy":"\u045F","dzigrarr":"\u27FF","Eacute":"\u00C9","eacute":"\u00E9","easter":"\u2A6E","Ecaron":"\u011A","ecaron":"\u011B","Ecirc":"\u00CA","ecirc":"\u00EA","ecir":"\u2256","ecolon":"\u2255","Ecy":"\u042D","ecy":"\u044D","eDDot":"\u2A77","Edot":"\u0116","edot":"\u0117","eDot":"\u2251","ee":"\u2147","efDot":"\u2252","Efr":"\uD835\uDD08","efr":"\uD835\uDD22","eg":"\u2A9A","Egrave":"\u00C8","egrave":"\u00E8","egs":"\u2A96","egsdot":"\u2A98","el":"\u2A99","Element":"\u2208","elinters":"\u23E7","ell":"\u2113","els":"\u2A95","elsdot":"\u2A97","Emacr":"\u0112","emacr":"\u0113","empty":"\u2205","emptyset":"\u2205","EmptySmallSquare":"\u25FB","emptyv":"\u2205","EmptyVerySmallSquare":"\u25AB","emsp13":"\u2004","emsp14":"\u2005","emsp":"\u2003","ENG":"\u014A","eng":"\u014B","ensp":"\u2002","Eogon":"\u0118","eogon":"\u0119","Eopf":"\uD835\uDD3C","eopf":"\uD835\uDD56","epar":"\u22D5","eparsl":"\u29E3","eplus":"\u2A71","epsi":"\u03B5","Epsilon":"\u0395","epsilon":"\u03B5","epsiv":"\u03F5","eqcirc":"\u2256","eqcolon":"\u2255","eqsim":"\u2242","eqslantgtr":"\u2A96","eqslantless":"\u2A95","Equal":"\u2A75","equals":"=","EqualTilde":"\u2242","equest":"\u225F","Equilibrium":"\u21CC","equiv":"\u2261","equivDD":"\u2A78","eqvparsl":"\u29E5","erarr":"\u2971","erDot":"\u2253","escr":"\u212F","Escr":"\u2130","esdot":"\u2250","Esim":"\u2A73","esim":"\u2242","Eta":"\u0397","eta":"\u03B7","ETH":"\u00D0","eth":"\u00F0","Euml":"\u00CB","euml":"\u00EB","euro":"\u20AC","excl":"!","exist":"\u2203","Exists":"\u2203","expectation":"\u2130","exponentiale":"\u2147","ExponentialE":"\u2147","fallingdotseq":"\u2252","Fcy":"\u0424","fcy":"\u0444","female":"\u2640","ffilig":"\uFB03","fflig":"\uFB00","ffllig":"\uFB04","Ffr":"\uD835\uDD09","ffr":"\uD835\uDD23","filig":"\uFB01","FilledSmallSquare":"\u25FC","FilledVerySmallSquare":"\u25AA","fjlig":"fj","flat":"\u266D","fllig":"\uFB02","fltns":"\u25B1","fnof":"\u0192","Fopf":"\uD835\uDD3D","fopf":"\uD835\uDD57","forall":"\u2200","ForAll":"\u2200","fork":"\u22D4","forkv":"\u2AD9","Fouriertrf":"\u2131","fpartint":"\u2A0D","frac12":"\u00BD","frac13":"\u2153","frac14":"\u00BC","frac15":"\u2155","frac16":"\u2159","frac18":"\u215B","frac23":"\u2154","frac25":"\u2156","frac34":"\u00BE","frac35":"\u2157","frac38":"\u215C","frac45":"\u2158","frac56":"\u215A","frac58":"\u215D","frac78":"\u215E","frasl":"\u2044","frown":"\u2322","fscr":"\uD835\uDCBB","Fscr":"\u2131","gacute":"\u01F5","Gamma":"\u0393","gamma":"\u03B3","Gammad":"\u03DC","gammad":"\u03DD","gap":"\u2A86","Gbreve":"\u011E","gbreve":"\u011F","Gcedil":"\u0122","Gcirc":"\u011C","gcirc":"\u011D","Gcy":"\u0413","gcy":"\u0433","Gdot":"\u0120","gdot":"\u0121","ge":"\u2265","gE":"\u2267","gEl":"\u2A8C","gel":"\u22DB","geq":"\u2265","geqq":"\u2267","geqslant":"\u2A7E","gescc":"\u2AA9","ges":"\u2A7E","gesdot":"\u2A80","gesdoto":"\u2A82","gesdotol":"\u2A84","gesl":"\u22DB\uFE00","gesles":"\u2A94","Gfr":"\uD835\uDD0A","gfr":"\uD835\uDD24","gg":"\u226B","Gg":"\u22D9","ggg":"\u22D9","gimel":"\u2137","GJcy":"\u0403","gjcy":"\u0453","gla":"\u2AA5","gl":"\u2277","glE":"\u2A92","glj":"\u2AA4","gnap":"\u2A8A","gnapprox":"\u2A8A","gne":"\u2A88","gnE":"\u2269","gneq":"\u2A88","gneqq":"\u2269","gnsim":"\u22E7","Gopf":"\uD835\uDD3E","gopf":"\uD835\uDD58","grave":"`","GreaterEqual":"\u2265","GreaterEqualLess":"\u22DB","GreaterFullEqual":"\u2267","GreaterGreater":"\u2AA2","GreaterLess":"\u2277","GreaterSlantEqual":"\u2A7E","GreaterTilde":"\u2273","Gscr":"\uD835\uDCA2","gscr":"\u210A","gsim":"\u2273","gsime":"\u2A8E","gsiml":"\u2A90","gtcc":"\u2AA7","gtcir":"\u2A7A","gt":">","GT":">","Gt":"\u226B","gtdot":"\u22D7","gtlPar":"\u2995","gtquest":"\u2A7C","gtrapprox":"\u2A86","gtrarr":"\u2978","gtrdot":"\u22D7","gtreqless":"\u22DB","gtreqqless":"\u2A8C","gtrless":"\u2277","gtrsim":"\u2273","gvertneqq":"\u2269\uFE00","gvnE":"\u2269\uFE00","Hacek":"\u02C7","hairsp":"\u200A","half":"\u00BD","hamilt":"\u210B","HARDcy":"\u042A","hardcy":"\u044A","harrcir":"\u2948","harr":"\u2194","hArr":"\u21D4","harrw":"\u21AD","Hat":"^","hbar":"\u210F","Hcirc":"\u0124","hcirc":"\u0125","hearts":"\u2665","heartsuit":"\u2665","hellip":"\u2026","hercon":"\u22B9","hfr":"\uD835\uDD25","Hfr":"\u210C","HilbertSpace":"\u210B","hksearow":"\u2925","hkswarow":"\u2926","hoarr":"\u21FF","homtht":"\u223B","hookleftarrow":"\u21A9","hookrightarrow":"\u21AA","hopf":"\uD835\uDD59","Hopf":"\u210D","horbar":"\u2015","HorizontalLine":"\u2500","hscr":"\uD835\uDCBD","Hscr":"\u210B","hslash":"\u210F","Hstrok":"\u0126","hstrok":"\u0127","HumpDownHump":"\u224E","HumpEqual":"\u224F","hybull":"\u2043","hyphen":"\u2010","Iacute":"\u00CD","iacute":"\u00ED","ic":"\u2063","Icirc":"\u00CE","icirc":"\u00EE","Icy":"\u0418","icy":"\u0438","Idot":"\u0130","IEcy":"\u0415","iecy":"\u0435","iexcl":"\u00A1","iff":"\u21D4","ifr":"\uD835\uDD26","Ifr":"\u2111","Igrave":"\u00CC","igrave":"\u00EC","ii":"\u2148","iiiint":"\u2A0C","iiint":"\u222D","iinfin":"\u29DC","iiota":"\u2129","IJlig":"\u0132","ijlig":"\u0133","Imacr":"\u012A","imacr":"\u012B","image":"\u2111","ImaginaryI":"\u2148","imagline":"\u2110","imagpart":"\u2111","imath":"\u0131","Im":"\u2111","imof":"\u22B7","imped":"\u01B5","Implies":"\u21D2","incare":"\u2105","in":"\u2208","infin":"\u221E","infintie":"\u29DD","inodot":"\u0131","intcal":"\u22BA","int":"\u222B","Int":"\u222C","integers":"\u2124","Integral":"\u222B","intercal":"\u22BA","Intersection":"\u22C2","intlarhk":"\u2A17","intprod":"\u2A3C","InvisibleComma":"\u2063","InvisibleTimes":"\u2062","IOcy":"\u0401","iocy":"\u0451","Iogon":"\u012E","iogon":"\u012F","Iopf":"\uD835\uDD40","iopf":"\uD835\uDD5A","Iota":"\u0399","iota":"\u03B9","iprod":"\u2A3C","iquest":"\u00BF","iscr":"\uD835\uDCBE","Iscr":"\u2110","isin":"\u2208","isindot":"\u22F5","isinE":"\u22F9","isins":"\u22F4","isinsv":"\u22F3","isinv":"\u2208","it":"\u2062","Itilde":"\u0128","itilde":"\u0129","Iukcy":"\u0406","iukcy":"\u0456","Iuml":"\u00CF","iuml":"\u00EF","Jcirc":"\u0134","jcirc":"\u0135","Jcy":"\u0419","jcy":"\u0439","Jfr":"\uD835\uDD0D","jfr":"\uD835\uDD27","jmath":"\u0237","Jopf":"\uD835\uDD41","jopf":"\uD835\uDD5B","Jscr":"\uD835\uDCA5","jscr":"\uD835\uDCBF","Jsercy":"\u0408","jsercy":"\u0458","Jukcy":"\u0404","jukcy":"\u0454","Kappa":"\u039A","kappa":"\u03BA","kappav":"\u03F0","Kcedil":"\u0136","kcedil":"\u0137","Kcy":"\u041A","kcy":"\u043A","Kfr":"\uD835\uDD0E","kfr":"\uD835\uDD28","kgreen":"\u0138","KHcy":"\u0425","khcy":"\u0445","KJcy":"\u040C","kjcy":"\u045C","Kopf":"\uD835\uDD42","kopf":"\uD835\uDD5C","Kscr":"\uD835\uDCA6","kscr":"\uD835\uDCC0","lAarr":"\u21DA","Lacute":"\u0139","lacute":"\u013A","laemptyv":"\u29B4","lagran":"\u2112","Lambda":"\u039B","lambda":"\u03BB","lang":"\u27E8","Lang":"\u27EA","langd":"\u2991","langle":"\u27E8","lap":"\u2A85","Laplacetrf":"\u2112","laquo":"\u00AB","larrb":"\u21E4","larrbfs":"\u291F","larr":"\u2190","Larr":"\u219E","lArr":"\u21D0","larrfs":"\u291D","larrhk":"\u21A9","larrlp":"\u21AB","larrpl":"\u2939","larrsim":"\u2973","larrtl":"\u21A2","latail":"\u2919","lAtail":"\u291B","lat":"\u2AAB","late":"\u2AAD","lates":"\u2AAD\uFE00","lbarr":"\u290C","lBarr":"\u290E","lbbrk":"\u2772","lbrace":"{","lbrack":"[","lbrke":"\u298B","lbrksld":"\u298F","lbrkslu":"\u298D","Lcaron":"\u013D","lcaron":"\u013E","Lcedil":"\u013B","lcedil":"\u013C","lceil":"\u2308","lcub":"{","Lcy":"\u041B","lcy":"\u043B","ldca":"\u2936","ldquo":"\u201C","ldquor":"\u201E","ldrdhar":"\u2967","ldrushar":"\u294B","ldsh":"\u21B2","le":"\u2264","lE":"\u2266","LeftAngleBracket":"\u27E8","LeftArrowBar":"\u21E4","leftarrow":"\u2190","LeftArrow":"\u2190","Leftarrow":"\u21D0","LeftArrowRightArrow":"\u21C6","leftarrowtail":"\u21A2","LeftCeiling":"\u2308","LeftDoubleBracket":"\u27E6","LeftDownTeeVector":"\u2961","LeftDownVectorBar":"\u2959","LeftDownVector":"\u21C3","LeftFloor":"\u230A","leftharpoondown":"\u21BD","leftharpoonup":"\u21BC","leftleftarrows":"\u21C7","leftrightarrow":"\u2194","LeftRightArrow":"\u2194","Leftrightarrow":"\u21D4","leftrightarrows":"\u21C6","leftrightharpoons":"\u21CB","leftrightsquigarrow":"\u21AD","LeftRightVector":"\u294E","LeftTeeArrow":"\u21A4","LeftTee":"\u22A3","LeftTeeVector":"\u295A","leftthreetimes":"\u22CB","LeftTriangleBar":"\u29CF","LeftTriangle":"\u22B2","LeftTriangleEqual":"\u22B4","LeftUpDownVector":"\u2951","LeftUpTeeVector":"\u2960","LeftUpVectorBar":"\u2958","LeftUpVector":"\u21BF","LeftVectorBar":"\u2952","LeftVector":"\u21BC","lEg":"\u2A8B","leg":"\u22DA","leq":"\u2264","leqq":"\u2266","leqslant":"\u2A7D","lescc":"\u2AA8","les":"\u2A7D","lesdot":"\u2A7F","lesdoto":"\u2A81","lesdotor":"\u2A83","lesg":"\u22DA\uFE00","lesges":"\u2A93","lessapprox":"\u2A85","lessdot":"\u22D6","lesseqgtr":"\u22DA","lesseqqgtr":"\u2A8B","LessEqualGreater":"\u22DA","LessFullEqual":"\u2266","LessGreater":"\u2276","lessgtr":"\u2276","LessLess":"\u2AA1","lesssim":"\u2272","LessSlantEqual":"\u2A7D","LessTilde":"\u2272","lfisht":"\u297C","lfloor":"\u230A","Lfr":"\uD835\uDD0F","lfr":"\uD835\uDD29","lg":"\u2276","lgE":"\u2A91","lHar":"\u2962","lhard":"\u21BD","lharu":"\u21BC","lharul":"\u296A","lhblk":"\u2584","LJcy":"\u0409","ljcy":"\u0459","llarr":"\u21C7","ll":"\u226A","Ll":"\u22D8","llcorner":"\u231E","Lleftarrow":"\u21DA","llhard":"\u296B","lltri":"\u25FA","Lmidot":"\u013F","lmidot":"\u0140","lmoustache":"\u23B0","lmoust":"\u23B0","lnap":"\u2A89","lnapprox":"\u2A89","lne":"\u2A87","lnE":"\u2268","lneq":"\u2A87","lneqq":"\u2268","lnsim":"\u22E6","loang":"\u27EC","loarr":"\u21FD","lobrk":"\u27E6","longleftarrow":"\u27F5","LongLeftArrow":"\u27F5","Longleftarrow":"\u27F8","longleftrightarrow":"\u27F7","LongLeftRightArrow":"\u27F7","Longleftrightarrow":"\u27FA","longmapsto":"\u27FC","longrightarrow":"\u27F6","LongRightArrow":"\u27F6","Longrightarrow":"\u27F9","looparrowleft":"\u21AB","looparrowright":"\u21AC","lopar":"\u2985","Lopf":"\uD835\uDD43","lopf":"\uD835\uDD5D","loplus":"\u2A2D","lotimes":"\u2A34","lowast":"\u2217","lowbar":"_","LowerLeftArrow":"\u2199","LowerRightArrow":"\u2198","loz":"\u25CA","lozenge":"\u25CA","lozf":"\u29EB","lpar":"(","lparlt":"\u2993","lrarr":"\u21C6","lrcorner":"\u231F","lrhar":"\u21CB","lrhard":"\u296D","lrm":"\u200E","lrtri":"\u22BF","lsaquo":"\u2039","lscr":"\uD835\uDCC1","Lscr":"\u2112","lsh":"\u21B0","Lsh":"\u21B0","lsim":"\u2272","lsime":"\u2A8D","lsimg":"\u2A8F","lsqb":"[","lsquo":"\u2018","lsquor":"\u201A","Lstrok":"\u0141","lstrok":"\u0142","ltcc":"\u2AA6","ltcir":"\u2A79","lt":"<","LT":"<","Lt":"\u226A","ltdot":"\u22D6","lthree":"\u22CB","ltimes":"\u22C9","ltlarr":"\u2976","ltquest":"\u2A7B","ltri":"\u25C3","ltrie":"\u22B4","ltrif":"\u25C2","ltrPar":"\u2996","lurdshar":"\u294A","luruhar":"\u2966","lvertneqq":"\u2268\uFE00","lvnE":"\u2268\uFE00","macr":"\u00AF","male":"\u2642","malt":"\u2720","maltese":"\u2720","Map":"\u2905","map":"\u21A6","mapsto":"\u21A6","mapstodown":"\u21A7","mapstoleft":"\u21A4","mapstoup":"\u21A5","marker":"\u25AE","mcomma":"\u2A29","Mcy":"\u041C","mcy":"\u043C","mdash":"\u2014","mDDot":"\u223A","measuredangle":"\u2221","MediumSpace":"\u205F","Mellintrf":"\u2133","Mfr":"\uD835\uDD10","mfr":"\uD835\uDD2A","mho":"\u2127","micro":"\u00B5","midast":"*","midcir":"\u2AF0","mid":"\u2223","middot":"\u00B7","minusb":"\u229F","minus":"\u2212","minusd":"\u2238","minusdu":"\u2A2A","MinusPlus":"\u2213","mlcp":"\u2ADB","mldr":"\u2026","mnplus":"\u2213","models":"\u22A7","Mopf":"\uD835\uDD44","mopf":"\uD835\uDD5E","mp":"\u2213","mscr":"\uD835\uDCC2","Mscr":"\u2133","mstpos":"\u223E","Mu":"\u039C","mu":"\u03BC","multimap":"\u22B8","mumap":"\u22B8","nabla":"\u2207","Nacute":"\u0143","nacute":"\u0144","nang":"\u2220\u20D2","nap":"\u2249","napE":"\u2A70\u0338","napid":"\u224B\u0338","napos":"\u0149","napprox":"\u2249","natural":"\u266E","naturals":"\u2115","natur":"\u266E","nbsp":"\u00A0","nbump":"\u224E\u0338","nbumpe":"\u224F\u0338","ncap":"\u2A43","Ncaron":"\u0147","ncaron":"\u0148","Ncedil":"\u0145","ncedil":"\u0146","ncong":"\u2247","ncongdot":"\u2A6D\u0338","ncup":"\u2A42","Ncy":"\u041D","ncy":"\u043D","ndash":"\u2013","nearhk":"\u2924","nearr":"\u2197","neArr":"\u21D7","nearrow":"\u2197","ne":"\u2260","nedot":"\u2250\u0338","NegativeMediumSpace":"\u200B","NegativeThickSpace":"\u200B","NegativeThinSpace":"\u200B","NegativeVeryThinSpace":"\u200B","nequiv":"\u2262","nesear":"\u2928","nesim":"\u2242\u0338","NestedGreaterGreater":"\u226B","NestedLessLess":"\u226A","NewLine":"\n","nexist":"\u2204","nexists":"\u2204","Nfr":"\uD835\uDD11","nfr":"\uD835\uDD2B","ngE":"\u2267\u0338","nge":"\u2271","ngeq":"\u2271","ngeqq":"\u2267\u0338","ngeqslant":"\u2A7E\u0338","nges":"\u2A7E\u0338","nGg":"\u22D9\u0338","ngsim":"\u2275","nGt":"\u226B\u20D2","ngt":"\u226F","ngtr":"\u226F","nGtv":"\u226B\u0338","nharr":"\u21AE","nhArr":"\u21CE","nhpar":"\u2AF2","ni":"\u220B","nis":"\u22FC","nisd":"\u22FA","niv":"\u220B","NJcy":"\u040A","njcy":"\u045A","nlarr":"\u219A","nlArr":"\u21CD","nldr":"\u2025","nlE":"\u2266\u0338","nle":"\u2270","nleftarrow":"\u219A","nLeftarrow":"\u21CD","nleftrightarrow":"\u21AE","nLeftrightarrow":"\u21CE","nleq":"\u2270","nleqq":"\u2266\u0338","nleqslant":"\u2A7D\u0338","nles":"\u2A7D\u0338","nless":"\u226E","nLl":"\u22D8\u0338","nlsim":"\u2274","nLt":"\u226A\u20D2","nlt":"\u226E","nltri":"\u22EA","nltrie":"\u22EC","nLtv":"\u226A\u0338","nmid":"\u2224","NoBreak":"\u2060","NonBreakingSpace":"\u00A0","nopf":"\uD835\uDD5F","Nopf":"\u2115","Not":"\u2AEC","not":"\u00AC","NotCongruent":"\u2262","NotCupCap":"\u226D","NotDoubleVerticalBar":"\u2226","NotElement":"\u2209","NotEqual":"\u2260","NotEqualTilde":"\u2242\u0338","NotExists":"\u2204","NotGreater":"\u226F","NotGreaterEqual":"\u2271","NotGreaterFullEqual":"\u2267\u0338","NotGreaterGreater":"\u226B\u0338","NotGreaterLess":"\u2279","NotGreaterSlantEqual":"\u2A7E\u0338","NotGreaterTilde":"\u2275","NotHumpDownHump":"\u224E\u0338","NotHumpEqual":"\u224F\u0338","notin":"\u2209","notindot":"\u22F5\u0338","notinE":"\u22F9\u0338","notinva":"\u2209","notinvb":"\u22F7","notinvc":"\u22F6","NotLeftTriangleBar":"\u29CF\u0338","NotLeftTriangle":"\u22EA","NotLeftTriangleEqual":"\u22EC","NotLess":"\u226E","NotLessEqual":"\u2270","NotLessGreater":"\u2278","NotLessLess":"\u226A\u0338","NotLessSlantEqual":"\u2A7D\u0338","NotLessTilde":"\u2274","NotNestedGreaterGreater":"\u2AA2\u0338","NotNestedLessLess":"\u2AA1\u0338","notni":"\u220C","notniva":"\u220C","notnivb":"\u22FE","notnivc":"\u22FD","NotPrecedes":"\u2280","NotPrecedesEqual":"\u2AAF\u0338","NotPrecedesSlantEqual":"\u22E0","NotReverseElement":"\u220C","NotRightTriangleBar":"\u29D0\u0338","NotRightTriangle":"\u22EB","NotRightTriangleEqual":"\u22ED","NotSquareSubset":"\u228F\u0338","NotSquareSubsetEqual":"\u22E2","NotSquareSuperset":"\u2290\u0338","NotSquareSupersetEqual":"\u22E3","NotSubset":"\u2282\u20D2","NotSubsetEqual":"\u2288","NotSucceeds":"\u2281","NotSucceedsEqual":"\u2AB0\u0338","NotSucceedsSlantEqual":"\u22E1","NotSucceedsTilde":"\u227F\u0338","NotSuperset":"\u2283\u20D2","NotSupersetEqual":"\u2289","NotTilde":"\u2241","NotTildeEqual":"\u2244","NotTildeFullEqual":"\u2247","NotTildeTilde":"\u2249","NotVerticalBar":"\u2224","nparallel":"\u2226","npar":"\u2226","nparsl":"\u2AFD\u20E5","npart":"\u2202\u0338","npolint":"\u2A14","npr":"\u2280","nprcue":"\u22E0","nprec":"\u2280","npreceq":"\u2AAF\u0338","npre":"\u2AAF\u0338","nrarrc":"\u2933\u0338","nrarr":"\u219B","nrArr":"\u21CF","nrarrw":"\u219D\u0338","nrightarrow":"\u219B","nRightarrow":"\u21CF","nrtri":"\u22EB","nrtrie":"\u22ED","nsc":"\u2281","nsccue":"\u22E1","nsce":"\u2AB0\u0338","Nscr":"\uD835\uDCA9","nscr":"\uD835\uDCC3","nshortmid":"\u2224","nshortparallel":"\u2226","nsim":"\u2241","nsime":"\u2244","nsimeq":"\u2244","nsmid":"\u2224","nspar":"\u2226","nsqsube":"\u22E2","nsqsupe":"\u22E3","nsub":"\u2284","nsubE":"\u2AC5\u0338","nsube":"\u2288","nsubset":"\u2282\u20D2","nsubseteq":"\u2288","nsubseteqq":"\u2AC5\u0338","nsucc":"\u2281","nsucceq":"\u2AB0\u0338","nsup":"\u2285","nsupE":"\u2AC6\u0338","nsupe":"\u2289","nsupset":"\u2283\u20D2","nsupseteq":"\u2289","nsupseteqq":"\u2AC6\u0338","ntgl":"\u2279","Ntilde":"\u00D1","ntilde":"\u00F1","ntlg":"\u2278","ntriangleleft":"\u22EA","ntrianglelefteq":"\u22EC","ntriangleright":"\u22EB","ntrianglerighteq":"\u22ED","Nu":"\u039D","nu":"\u03BD","num":"#","numero":"\u2116","numsp":"\u2007","nvap":"\u224D\u20D2","nvdash":"\u22AC","nvDash":"\u22AD","nVdash":"\u22AE","nVDash":"\u22AF","nvge":"\u2265\u20D2","nvgt":">\u20D2","nvHarr":"\u2904","nvinfin":"\u29DE","nvlArr":"\u2902","nvle":"\u2264\u20D2","nvlt":"<\u20D2","nvltrie":"\u22B4\u20D2","nvrArr":"\u2903","nvrtrie":"\u22B5\u20D2","nvsim":"\u223C\u20D2","nwarhk":"\u2923","nwarr":"\u2196","nwArr":"\u21D6","nwarrow":"\u2196","nwnear":"\u2927","Oacute":"\u00D3","oacute":"\u00F3","oast":"\u229B","Ocirc":"\u00D4","ocirc":"\u00F4","ocir":"\u229A","Ocy":"\u041E","ocy":"\u043E","odash":"\u229D","Odblac":"\u0150","odblac":"\u0151","odiv":"\u2A38","odot":"\u2299","odsold":"\u29BC","OElig":"\u0152","oelig":"\u0153","ofcir":"\u29BF","Ofr":"\uD835\uDD12","ofr":"\uD835\uDD2C","ogon":"\u02DB","Ograve":"\u00D2","ograve":"\u00F2","ogt":"\u29C1","ohbar":"\u29B5","ohm":"\u03A9","oint":"\u222E","olarr":"\u21BA","olcir":"\u29BE","olcross":"\u29BB","oline":"\u203E","olt":"\u29C0","Omacr":"\u014C","omacr":"\u014D","Omega":"\u03A9","omega":"\u03C9","Omicron":"\u039F","omicron":"\u03BF","omid":"\u29B6","ominus":"\u2296","Oopf":"\uD835\uDD46","oopf":"\uD835\uDD60","opar":"\u29B7","OpenCurlyDoubleQuote":"\u201C","OpenCurlyQuote":"\u2018","operp":"\u29B9","oplus":"\u2295","orarr":"\u21BB","Or":"\u2A54","or":"\u2228","ord":"\u2A5D","order":"\u2134","orderof":"\u2134","ordf":"\u00AA","ordm":"\u00BA","origof":"\u22B6","oror":"\u2A56","orslope":"\u2A57","orv":"\u2A5B","oS":"\u24C8","Oscr":"\uD835\uDCAA","oscr":"\u2134","Oslash":"\u00D8","oslash":"\u00F8","osol":"\u2298","Otilde":"\u00D5","otilde":"\u00F5","otimesas":"\u2A36","Otimes":"\u2A37","otimes":"\u2297","Ouml":"\u00D6","ouml":"\u00F6","ovbar":"\u233D","OverBar":"\u203E","OverBrace":"\u23DE","OverBracket":"\u23B4","OverParenthesis":"\u23DC","para":"\u00B6","parallel":"\u2225","par":"\u2225","parsim":"\u2AF3","parsl":"\u2AFD","part":"\u2202","PartialD":"\u2202","Pcy":"\u041F","pcy":"\u043F","percnt":"%","period":".","permil":"\u2030","perp":"\u22A5","pertenk":"\u2031","Pfr":"\uD835\uDD13","pfr":"\uD835\uDD2D","Phi":"\u03A6","phi":"\u03C6","phiv":"\u03D5","phmmat":"\u2133","phone":"\u260E","Pi":"\u03A0","pi":"\u03C0","pitchfork":"\u22D4","piv":"\u03D6","planck":"\u210F","planckh":"\u210E","plankv":"\u210F","plusacir":"\u2A23","plusb":"\u229E","pluscir":"\u2A22","plus":"+","plusdo":"\u2214","plusdu":"\u2A25","pluse":"\u2A72","PlusMinus":"\u00B1","plusmn":"\u00B1","plussim":"\u2A26","plustwo":"\u2A27","pm":"\u00B1","Poincareplane":"\u210C","pointint":"\u2A15","popf":"\uD835\uDD61","Popf":"\u2119","pound":"\u00A3","prap":"\u2AB7","Pr":"\u2ABB","pr":"\u227A","prcue":"\u227C","precapprox":"\u2AB7","prec":"\u227A","preccurlyeq":"\u227C","Precedes":"\u227A","PrecedesEqual":"\u2AAF","PrecedesSlantEqual":"\u227C","PrecedesTilde":"\u227E","preceq":"\u2AAF","precnapprox":"\u2AB9","precneqq":"\u2AB5","precnsim":"\u22E8","pre":"\u2AAF","prE":"\u2AB3","precsim":"\u227E","prime":"\u2032","Prime":"\u2033","primes":"\u2119","prnap":"\u2AB9","prnE":"\u2AB5","prnsim":"\u22E8","prod":"\u220F","Product":"\u220F","profalar":"\u232E","profline":"\u2312","profsurf":"\u2313","prop":"\u221D","Proportional":"\u221D","Proportion":"\u2237","propto":"\u221D","prsim":"\u227E","prurel":"\u22B0","Pscr":"\uD835\uDCAB","pscr":"\uD835\uDCC5","Psi":"\u03A8","psi":"\u03C8","puncsp":"\u2008","Qfr":"\uD835\uDD14","qfr":"\uD835\uDD2E","qint":"\u2A0C","qopf":"\uD835\uDD62","Qopf":"\u211A","qprime":"\u2057","Qscr":"\uD835\uDCAC","qscr":"\uD835\uDCC6","quaternions":"\u210D","quatint":"\u2A16","quest":"?","questeq":"\u225F","quot":"\"","QUOT":"\"","rAarr":"\u21DB","race":"\u223D\u0331","Racute":"\u0154","racute":"\u0155","radic":"\u221A","raemptyv":"\u29B3","rang":"\u27E9","Rang":"\u27EB","rangd":"\u2992","range":"\u29A5","rangle":"\u27E9","raquo":"\u00BB","rarrap":"\u2975","rarrb":"\u21E5","rarrbfs":"\u2920","rarrc":"\u2933","rarr":"\u2192","Rarr":"\u21A0","rArr":"\u21D2","rarrfs":"\u291E","rarrhk":"\u21AA","rarrlp":"\u21AC","rarrpl":"\u2945","rarrsim":"\u2974","Rarrtl":"\u2916","rarrtl":"\u21A3","rarrw":"\u219D","ratail":"\u291A","rAtail":"\u291C","ratio":"\u2236","rationals":"\u211A","rbarr":"\u290D","rBarr":"\u290F","RBarr":"\u2910","rbbrk":"\u2773","rbrace":"}","rbrack":"]","rbrke":"\u298C","rbrksld":"\u298E","rbrkslu":"\u2990","Rcaron":"\u0158","rcaron":"\u0159","Rcedil":"\u0156","rcedil":"\u0157","rceil":"\u2309","rcub":"}","Rcy":"\u0420","rcy":"\u0440","rdca":"\u2937","rdldhar":"\u2969","rdquo":"\u201D","rdquor":"\u201D","rdsh":"\u21B3","real":"\u211C","realine":"\u211B","realpart":"\u211C","reals":"\u211D","Re":"\u211C","rect":"\u25AD","reg":"\u00AE","REG":"\u00AE","ReverseElement":"\u220B","ReverseEquilibrium":"\u21CB","ReverseUpEquilibrium":"\u296F","rfisht":"\u297D","rfloor":"\u230B","rfr":"\uD835\uDD2F","Rfr":"\u211C","rHar":"\u2964","rhard":"\u21C1","rharu":"\u21C0","rharul":"\u296C","Rho":"\u03A1","rho":"\u03C1","rhov":"\u03F1","RightAngleBracket":"\u27E9","RightArrowBar":"\u21E5","rightarrow":"\u2192","RightArrow":"\u2192","Rightarrow":"\u21D2","RightArrowLeftArrow":"\u21C4","rightarrowtail":"\u21A3","RightCeiling":"\u2309","RightDoubleBracket":"\u27E7","RightDownTeeVector":"\u295D","RightDownVectorBar":"\u2955","RightDownVector":"\u21C2","RightFloor":"\u230B","rightharpoondown":"\u21C1","rightharpoonup":"\u21C0","rightleftarrows":"\u21C4","rightleftharpoons":"\u21CC","rightrightarrows":"\u21C9","rightsquigarrow":"\u219D","RightTeeArrow":"\u21A6","RightTee":"\u22A2","RightTeeVector":"\u295B","rightthreetimes":"\u22CC","RightTriangleBar":"\u29D0","RightTriangle":"\u22B3","RightTriangleEqual":"\u22B5","RightUpDownVector":"\u294F","RightUpTeeVector":"\u295C","RightUpVectorBar":"\u2954","RightUpVector":"\u21BE","RightVectorBar":"\u2953","RightVector":"\u21C0","ring":"\u02DA","risingdotseq":"\u2253","rlarr":"\u21C4","rlhar":"\u21CC","rlm":"\u200F","rmoustache":"\u23B1","rmoust":"\u23B1","rnmid":"\u2AEE","roang":"\u27ED","roarr":"\u21FE","robrk":"\u27E7","ropar":"\u2986","ropf":"\uD835\uDD63","Ropf":"\u211D","roplus":"\u2A2E","rotimes":"\u2A35","RoundImplies":"\u2970","rpar":")","rpargt":"\u2994","rppolint":"\u2A12","rrarr":"\u21C9","Rrightarrow":"\u21DB","rsaquo":"\u203A","rscr":"\uD835\uDCC7","Rscr":"\u211B","rsh":"\u21B1","Rsh":"\u21B1","rsqb":"]","rsquo":"\u2019","rsquor":"\u2019","rthree":"\u22CC","rtimes":"\u22CA","rtri":"\u25B9","rtrie":"\u22B5","rtrif":"\u25B8","rtriltri":"\u29CE","RuleDelayed":"\u29F4","ruluhar":"\u2968","rx":"\u211E","Sacute":"\u015A","sacute":"\u015B","sbquo":"\u201A","scap":"\u2AB8","Scaron":"\u0160","scaron":"\u0161","Sc":"\u2ABC","sc":"\u227B","sccue":"\u227D","sce":"\u2AB0","scE":"\u2AB4","Scedil":"\u015E","scedil":"\u015F","Scirc":"\u015C","scirc":"\u015D","scnap":"\u2ABA","scnE":"\u2AB6","scnsim":"\u22E9","scpolint":"\u2A13","scsim":"\u227F","Scy":"\u0421","scy":"\u0441","sdotb":"\u22A1","sdot":"\u22C5","sdote":"\u2A66","searhk":"\u2925","searr":"\u2198","seArr":"\u21D8","searrow":"\u2198","sect":"\u00A7","semi":";","seswar":"\u2929","setminus":"\u2216","setmn":"\u2216","sext":"\u2736","Sfr":"\uD835\uDD16","sfr":"\uD835\uDD30","sfrown":"\u2322","sharp":"\u266F","SHCHcy":"\u0429","shchcy":"\u0449","SHcy":"\u0428","shcy":"\u0448","ShortDownArrow":"\u2193","ShortLeftArrow":"\u2190","shortmid":"\u2223","shortparallel":"\u2225","ShortRightArrow":"\u2192","ShortUpArrow":"\u2191","shy":"\u00AD","Sigma":"\u03A3","sigma":"\u03C3","sigmaf":"\u03C2","sigmav":"\u03C2","sim":"\u223C","simdot":"\u2A6A","sime":"\u2243","simeq":"\u2243","simg":"\u2A9E","simgE":"\u2AA0","siml":"\u2A9D","simlE":"\u2A9F","simne":"\u2246","simplus":"\u2A24","simrarr":"\u2972","slarr":"\u2190","SmallCircle":"\u2218","smallsetminus":"\u2216","smashp":"\u2A33","smeparsl":"\u29E4","smid":"\u2223","smile":"\u2323","smt":"\u2AAA","smte":"\u2AAC","smtes":"\u2AAC\uFE00","SOFTcy":"\u042C","softcy":"\u044C","solbar":"\u233F","solb":"\u29C4","sol":"/","Sopf":"\uD835\uDD4A","sopf":"\uD835\uDD64","spades":"\u2660","spadesuit":"\u2660","spar":"\u2225","sqcap":"\u2293","sqcaps":"\u2293\uFE00","sqcup":"\u2294","sqcups":"\u2294\uFE00","Sqrt":"\u221A","sqsub":"\u228F","sqsube":"\u2291","sqsubset":"\u228F","sqsubseteq":"\u2291","sqsup":"\u2290","sqsupe":"\u2292","sqsupset":"\u2290","sqsupseteq":"\u2292","square":"\u25A1","Square":"\u25A1","SquareIntersection":"\u2293","SquareSubset":"\u228F","SquareSubsetEqual":"\u2291","SquareSuperset":"\u2290","SquareSupersetEqual":"\u2292","SquareUnion":"\u2294","squarf":"\u25AA","squ":"\u25A1","squf":"\u25AA","srarr":"\u2192","Sscr":"\uD835\uDCAE","sscr":"\uD835\uDCC8","ssetmn":"\u2216","ssmile":"\u2323","sstarf":"\u22C6","Star":"\u22C6","star":"\u2606","starf":"\u2605","straightepsilon":"\u03F5","straightphi":"\u03D5","strns":"\u00AF","sub":"\u2282","Sub":"\u22D0","subdot":"\u2ABD","subE":"\u2AC5","sube":"\u2286","subedot":"\u2AC3","submult":"\u2AC1","subnE":"\u2ACB","subne":"\u228A","subplus":"\u2ABF","subrarr":"\u2979","subset":"\u2282","Subset":"\u22D0","subseteq":"\u2286","subseteqq":"\u2AC5","SubsetEqual":"\u2286","subsetneq":"\u228A","subsetneqq":"\u2ACB","subsim":"\u2AC7","subsub":"\u2AD5","subsup":"\u2AD3","succapprox":"\u2AB8","succ":"\u227B","succcurlyeq":"\u227D","Succeeds":"\u227B","SucceedsEqual":"\u2AB0","SucceedsSlantEqual":"\u227D","SucceedsTilde":"\u227F","succeq":"\u2AB0","succnapprox":"\u2ABA","succneqq":"\u2AB6","succnsim":"\u22E9","succsim":"\u227F","SuchThat":"\u220B","sum":"\u2211","Sum":"\u2211","sung":"\u266A","sup1":"\u00B9","sup2":"\u00B2","sup3":"\u00B3","sup":"\u2283","Sup":"\u22D1","supdot":"\u2ABE","supdsub":"\u2AD8","supE":"\u2AC6","supe":"\u2287","supedot":"\u2AC4","Superset":"\u2283","SupersetEqual":"\u2287","suphsol":"\u27C9","suphsub":"\u2AD7","suplarr":"\u297B","supmult":"\u2AC2","supnE":"\u2ACC","supne":"\u228B","supplus":"\u2AC0","supset":"\u2283","Supset":"\u22D1","supseteq":"\u2287","supseteqq":"\u2AC6","supsetneq":"\u228B","supsetneqq":"\u2ACC","supsim":"\u2AC8","supsub":"\u2AD4","supsup":"\u2AD6","swarhk":"\u2926","swarr":"\u2199","swArr":"\u21D9","swarrow":"\u2199","swnwar":"\u292A","szlig":"\u00DF","Tab":"\t","target":"\u2316","Tau":"\u03A4","tau":"\u03C4","tbrk":"\u23B4","Tcaron":"\u0164","tcaron":"\u0165","Tcedil":"\u0162","tcedil":"\u0163","Tcy":"\u0422","tcy":"\u0442","tdot":"\u20DB","telrec":"\u2315","Tfr":"\uD835\uDD17","tfr":"\uD835\uDD31","there4":"\u2234","therefore":"\u2234","Therefore":"\u2234","Theta":"\u0398","theta":"\u03B8","thetasym":"\u03D1","thetav":"\u03D1","thickapprox":"\u2248","thicksim":"\u223C","ThickSpace":"\u205F\u200A","ThinSpace":"\u2009","thinsp":"\u2009","thkap":"\u2248","thksim":"\u223C","THORN":"\u00DE","thorn":"\u00FE","tilde":"\u02DC","Tilde":"\u223C","TildeEqual":"\u2243","TildeFullEqual":"\u2245","TildeTilde":"\u2248","timesbar":"\u2A31","timesb":"\u22A0","times":"\u00D7","timesd":"\u2A30","tint":"\u222D","toea":"\u2928","topbot":"\u2336","topcir":"\u2AF1","top":"\u22A4","Topf":"\uD835\uDD4B","topf":"\uD835\uDD65","topfork":"\u2ADA","tosa":"\u2929","tprime":"\u2034","trade":"\u2122","TRADE":"\u2122","triangle":"\u25B5","triangledown":"\u25BF","triangleleft":"\u25C3","trianglelefteq":"\u22B4","triangleq":"\u225C","triangleright":"\u25B9","trianglerighteq":"\u22B5","tridot":"\u25EC","trie":"\u225C","triminus":"\u2A3A","TripleDot":"\u20DB","triplus":"\u2A39","trisb":"\u29CD","tritime":"\u2A3B","trpezium":"\u23E2","Tscr":"\uD835\uDCAF","tscr":"\uD835\uDCC9","TScy":"\u0426","tscy":"\u0446","TSHcy":"\u040B","tshcy":"\u045B","Tstrok":"\u0166","tstrok":"\u0167","twixt":"\u226C","twoheadleftarrow":"\u219E","twoheadrightarrow":"\u21A0","Uacute":"\u00DA","uacute":"\u00FA","uarr":"\u2191","Uarr":"\u219F","uArr":"\u21D1","Uarrocir":"\u2949","Ubrcy":"\u040E","ubrcy":"\u045E","Ubreve":"\u016C","ubreve":"\u016D","Ucirc":"\u00DB","ucirc":"\u00FB","Ucy":"\u0423","ucy":"\u0443","udarr":"\u21C5","Udblac":"\u0170","udblac":"\u0171","udhar":"\u296E","ufisht":"\u297E","Ufr":"\uD835\uDD18","ufr":"\uD835\uDD32","Ugrave":"\u00D9","ugrave":"\u00F9","uHar":"\u2963","uharl":"\u21BF","uharr":"\u21BE","uhblk":"\u2580","ulcorn":"\u231C","ulcorner":"\u231C","ulcrop":"\u230F","ultri":"\u25F8","Umacr":"\u016A","umacr":"\u016B","uml":"\u00A8","UnderBar":"_","UnderBrace":"\u23DF","UnderBracket":"\u23B5","UnderParenthesis":"\u23DD","Union":"\u22C3","UnionPlus":"\u228E","Uogon":"\u0172","uogon":"\u0173","Uopf":"\uD835\uDD4C","uopf":"\uD835\uDD66","UpArrowBar":"\u2912","uparrow":"\u2191","UpArrow":"\u2191","Uparrow":"\u21D1","UpArrowDownArrow":"\u21C5","updownarrow":"\u2195","UpDownArrow":"\u2195","Updownarrow":"\u21D5","UpEquilibrium":"\u296E","upharpoonleft":"\u21BF","upharpoonright":"\u21BE","uplus":"\u228E","UpperLeftArrow":"\u2196","UpperRightArrow":"\u2197","upsi":"\u03C5","Upsi":"\u03D2","upsih":"\u03D2","Upsilon":"\u03A5","upsilon":"\u03C5","UpTeeArrow":"\u21A5","UpTee":"\u22A5","upuparrows":"\u21C8","urcorn":"\u231D","urcorner":"\u231D","urcrop":"\u230E","Uring":"\u016E","uring":"\u016F","urtri":"\u25F9","Uscr":"\uD835\uDCB0","uscr":"\uD835\uDCCA","utdot":"\u22F0","Utilde":"\u0168","utilde":"\u0169","utri":"\u25B5","utrif":"\u25B4","uuarr":"\u21C8","Uuml":"\u00DC","uuml":"\u00FC","uwangle":"\u29A7","vangrt":"\u299C","varepsilon":"\u03F5","varkappa":"\u03F0","varnothing":"\u2205","varphi":"\u03D5","varpi":"\u03D6","varpropto":"\u221D","varr":"\u2195","vArr":"\u21D5","varrho":"\u03F1","varsigma":"\u03C2","varsubsetneq":"\u228A\uFE00","varsubsetneqq":"\u2ACB\uFE00","varsupsetneq":"\u228B\uFE00","varsupsetneqq":"\u2ACC\uFE00","vartheta":"\u03D1","vartriangleleft":"\u22B2","vartriangleright":"\u22B3","vBar":"\u2AE8","Vbar":"\u2AEB","vBarv":"\u2AE9","Vcy":"\u0412","vcy":"\u0432","vdash":"\u22A2","vDash":"\u22A8","Vdash":"\u22A9","VDash":"\u22AB","Vdashl":"\u2AE6","veebar":"\u22BB","vee":"\u2228","Vee":"\u22C1","veeeq":"\u225A","vellip":"\u22EE","verbar":"|","Verbar":"\u2016","vert":"|","Vert":"\u2016","VerticalBar":"\u2223","VerticalLine":"|","VerticalSeparator":"\u2758","VerticalTilde":"\u2240","VeryThinSpace":"\u200A","Vfr":"\uD835\uDD19","vfr":"\uD835\uDD33","vltri":"\u22B2","vnsub":"\u2282\u20D2","vnsup":"\u2283\u20D2","Vopf":"\uD835\uDD4D","vopf":"\uD835\uDD67","vprop":"\u221D","vrtri":"\u22B3","Vscr":"\uD835\uDCB1","vscr":"\uD835\uDCCB","vsubnE":"\u2ACB\uFE00","vsubne":"\u228A\uFE00","vsupnE":"\u2ACC\uFE00","vsupne":"\u228B\uFE00","Vvdash":"\u22AA","vzigzag":"\u299A","Wcirc":"\u0174","wcirc":"\u0175","wedbar":"\u2A5F","wedge":"\u2227","Wedge":"\u22C0","wedgeq":"\u2259","weierp":"\u2118","Wfr":"\uD835\uDD1A","wfr":"\uD835\uDD34","Wopf":"\uD835\uDD4E","wopf":"\uD835\uDD68","wp":"\u2118","wr":"\u2240","wreath":"\u2240","Wscr":"\uD835\uDCB2","wscr":"\uD835\uDCCC","xcap":"\u22C2","xcirc":"\u25EF","xcup":"\u22C3","xdtri":"\u25BD","Xfr":"\uD835\uDD1B","xfr":"\uD835\uDD35","xharr":"\u27F7","xhArr":"\u27FA","Xi":"\u039E","xi":"\u03BE","xlarr":"\u27F5","xlArr":"\u27F8","xmap":"\u27FC","xnis":"\u22FB","xodot":"\u2A00","Xopf":"\uD835\uDD4F","xopf":"\uD835\uDD69","xoplus":"\u2A01","xotime":"\u2A02","xrarr":"\u27F6","xrArr":"\u27F9","Xscr":"\uD835\uDCB3","xscr":"\uD835\uDCCD","xsqcup":"\u2A06","xuplus":"\u2A04","xutri":"\u25B3","xvee":"\u22C1","xwedge":"\u22C0","Yacute":"\u00DD","yacute":"\u00FD","YAcy":"\u042F","yacy":"\u044F","Ycirc":"\u0176","ycirc":"\u0177","Ycy":"\u042B","ycy":"\u044B","yen":"\u00A5","Yfr":"\uD835\uDD1C","yfr":"\uD835\uDD36","YIcy":"\u0407","yicy":"\u0457","Yopf":"\uD835\uDD50","yopf":"\uD835\uDD6A","Yscr":"\uD835\uDCB4","yscr":"\uD835\uDCCE","YUcy":"\u042E","yucy":"\u044E","yuml":"\u00FF","Yuml":"\u0178","Zacute":"\u0179","zacute":"\u017A","Zcaron":"\u017D","zcaron":"\u017E","Zcy":"\u0417","zcy":"\u0437","Zdot":"\u017B","zdot":"\u017C","zeetrf":"\u2128","ZeroWidthSpace":"\u200B","Zeta":"\u0396","zeta":"\u03B6","zfr":"\uD835\uDD37","Zfr":"\u2128","ZHcy":"\u0416","zhcy":"\u0436","zigrarr":"\u21DD","zopf":"\uD835\uDD6B","Zopf":"\u2124","Zscr":"\uD835\uDCB5","zscr":"\uD835\uDCCF","zwj":"\u200D","zwnj":"\u200C"} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/maps/legacy.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/maps/legacy.json new file mode 100644 index 00000000..f0e82a47 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/maps/legacy.json @@ -0,0 +1 @@ +{"Aacute":"\u00C1","aacute":"\u00E1","Acirc":"\u00C2","acirc":"\u00E2","acute":"\u00B4","AElig":"\u00C6","aelig":"\u00E6","Agrave":"\u00C0","agrave":"\u00E0","amp":"&","AMP":"&","Aring":"\u00C5","aring":"\u00E5","Atilde":"\u00C3","atilde":"\u00E3","Auml":"\u00C4","auml":"\u00E4","brvbar":"\u00A6","Ccedil":"\u00C7","ccedil":"\u00E7","cedil":"\u00B8","cent":"\u00A2","copy":"\u00A9","COPY":"\u00A9","curren":"\u00A4","deg":"\u00B0","divide":"\u00F7","Eacute":"\u00C9","eacute":"\u00E9","Ecirc":"\u00CA","ecirc":"\u00EA","Egrave":"\u00C8","egrave":"\u00E8","ETH":"\u00D0","eth":"\u00F0","Euml":"\u00CB","euml":"\u00EB","frac12":"\u00BD","frac14":"\u00BC","frac34":"\u00BE","gt":">","GT":">","Iacute":"\u00CD","iacute":"\u00ED","Icirc":"\u00CE","icirc":"\u00EE","iexcl":"\u00A1","Igrave":"\u00CC","igrave":"\u00EC","iquest":"\u00BF","Iuml":"\u00CF","iuml":"\u00EF","laquo":"\u00AB","lt":"<","LT":"<","macr":"\u00AF","micro":"\u00B5","middot":"\u00B7","nbsp":"\u00A0","not":"\u00AC","Ntilde":"\u00D1","ntilde":"\u00F1","Oacute":"\u00D3","oacute":"\u00F3","Ocirc":"\u00D4","ocirc":"\u00F4","Ograve":"\u00D2","ograve":"\u00F2","ordf":"\u00AA","ordm":"\u00BA","Oslash":"\u00D8","oslash":"\u00F8","Otilde":"\u00D5","otilde":"\u00F5","Ouml":"\u00D6","ouml":"\u00F6","para":"\u00B6","plusmn":"\u00B1","pound":"\u00A3","quot":"\"","QUOT":"\"","raquo":"\u00BB","reg":"\u00AE","REG":"\u00AE","sect":"\u00A7","shy":"\u00AD","sup1":"\u00B9","sup2":"\u00B2","sup3":"\u00B3","szlig":"\u00DF","THORN":"\u00DE","thorn":"\u00FE","times":"\u00D7","Uacute":"\u00DA","uacute":"\u00FA","Ucirc":"\u00DB","ucirc":"\u00FB","Ugrave":"\u00D9","ugrave":"\u00F9","uml":"\u00A8","Uuml":"\u00DC","uuml":"\u00FC","Yacute":"\u00DD","yacute":"\u00FD","yen":"\u00A5","yuml":"\u00FF"} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/maps/xml.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/maps/xml.json new file mode 100644 index 00000000..de8db10d --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/maps/xml.json @@ -0,0 +1 @@ +{"amp":"&","apos":"'","gt":">","lt":"<","quot":"\""} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/package.json new file mode 100644 index 00000000..85bf2ed0 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/package.json @@ -0,0 +1,106 @@ +{ + "_args": [ + [ + "entities@1.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2" + ] + ], + "_from": "entities@>=1.0.0 <1.1.0", + "_id": "entities@1.0.0", + "_inCache": true, + "_installable": true, + "_location": "/entities", + "_npmUser": { + "email": "me@feedic.com", + "name": "feedic" + }, + "_npmVersion": "1.4.4", + "_phantomChildren": {}, + "_requested": { + "name": "entities", + "raw": "entities@1.0", + "rawSpec": "1.0", + "scope": null, + "spec": ">=1.0.0 <1.1.0", + "type": "range" + }, + "_requiredBy": [ + "/htmlparser2" + ], + "_resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "_shasum": "b2987aa3821347fcde642b24fdfc9e4fb712bf26", + "_shrinkwrap": null, + "_spec": "entities@1.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\htmlparser2", + "author": { + "email": "me@feedic.com", + "name": "Felix Boehm" + }, + "bugs": { + "url": "https://github.com/fb55/node-entities/issues" + }, + "dependencies": {}, + "description": "Encode & decode XML/HTML entities with ease", + "devDependencies": { + "coveralls": "*", + "istanbul": "*", + "jshint": "2", + "mocha": "1", + "mocha-lcov-reporter": "*" + }, + "directories": { + "test": "test" + }, + "dist": { + "shasum": "b2987aa3821347fcde642b24fdfc9e4fb712bf26", + "tarball": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz" + }, + "homepage": "https://github.com/fb55/node-entities", + "jshintConfig": { + "eqeqeq": true, + "eqnull": true, + "freeze": true, + "globals": { + "describe": true, + "it": true + }, + "latedef": "nofunc", + "noarg": true, + "node": true, + "nonbsp": true, + "proto": true, + "quotmark": "double", + "smarttabs": true, + "trailing": true, + "undef": true, + "unused": true + }, + "keywords": [ + "html", + "xml", + "entity", + "encoding" + ], + "license": "BSD-like", + "main": "./index.js", + "maintainers": [ + { + "email": "me@feedic.com", + "name": "feedic" + } + ], + "name": "entities", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/fb55/node-entities.git" + }, + "scripts": { + "coveralls": "npm run lint && npm run lcov && (cat coverage/lcov.info | coveralls || exit 0)", + "lcov": "istanbul cover _mocha --report lcovonly -- -R spec", + "lint": "jshint index.js lib/*.js test/*.js", + "test": "mocha && npm run lint" + }, + "version": "1.0.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/readme.md new file mode 100644 index 00000000..88dfa26e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/readme.md @@ -0,0 +1,31 @@ +#entities [![NPM version](http://img.shields.io/npm/v/entities.svg)](https://npmjs.org/package/entities) [![Downloads](https://img.shields.io/npm/dm/entities.svg)](https://npmjs.org/package/entities) [![Build Status](http://img.shields.io/travis/fb55/node-entities.svg)](http://travis-ci.org/fb55/node-entities) [![Coverage](http://img.shields.io/coveralls/fb55/node-entities.svg)](https://coveralls.io/r/fb55/node-entities) + +En- & decoder for XML/HTML entities. + +####Features: +* Focussed on ___speed___ +* Supports three levels of entities: __XML__, __HTML4__ & __HTML5__ + * Supports _char code_ entities (eg. `U`) + +##How to… + +###…install `entities` + + npm i entities + +###…use `entities` + +```javascript +//encoding +require("entities").encode( data[, level]); +//decoding +require("entities").decode( data[, level]); +``` + +The `level` attribute indicates what level of entities should be decoded (0 = XML, 1 = HTML4 and 2 = HTML5). The default is 0 (read: XML). + +There are also methods to access the level directly. Just append the name of the level to the action and you're ready to go (e.g. `encodeHTML4(data)`, `decodeXML(data)`). + +--- + +License: BSD-like diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/test/mocha.opts b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/test/mocha.opts new file mode 100644 index 00000000..af53e242 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/test/mocha.opts @@ -0,0 +1,2 @@ +--check-leaks +--reporter spec diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/test/test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/test/test.js new file mode 100644 index 00000000..9c09fe94 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/entities/test/test.js @@ -0,0 +1,150 @@ +var assert = require("assert"), + path = require("path"), + entities = require("../"); + +describe("Encode->decode test", function(){ + var testcases = [ + { + input: "asdf & ÿ ü '", + xml: "asdf & ÿ ü '", + html: "asdf & ÿ ü '" + }, { + input: "&", + xml: "&#38;", + html: "&#38;" + }, + ]; + testcases.forEach(function(tc) { + var encodedXML = entities.encodeXML(tc.input); + it("should XML encode " + tc.input, function(){ + assert.equal(encodedXML, tc.xml); + }); + it("should default to XML encode " + tc.input, function(){ + assert.equal(entities.encode(tc.input), tc.xml); + }); + it("should XML decode " + encodedXML, function(){ + assert.equal(entities.decodeXML(encodedXML), tc.input); + }); + it("should default to XML encode " + encodedXML, function(){ + assert.equal(entities.decode(encodedXML), tc.input); + }); + it("should default strict to XML encode " + encodedXML, function(){ + assert.equal(entities.decodeStrict(encodedXML), tc.input); + }); + + var encodedHTML5 = entities.encodeHTML5(tc.input); + it("should HTML5 encode " + tc.input, function(){ + assert.equal(encodedHTML5, tc.html); + }); + it("should HTML5 decode " + encodedHTML5, function(){ + assert.equal(entities.decodeHTML(encodedHTML5), tc.input); + }); + }); +}); + +describe("Decode test", function(){ + var testcases = [ + { input: "&amp;", output: "&" }, + { input: "&#38;", output: "&" }, + { input: "&#x26;", output: "&" }, + { input: "&#X26;", output: "&" }, + { input: "&#38;", output: "&" }, + { input: "&#38;", output: "&" }, + { input: "&#38;", output: "&" }, + { input: ":", output: ":" }, + { input: ":", output: ":" }, + { input: ":", output: ":" }, + { input: ":", output: ":" } + ]; + testcases.forEach(function(tc) { + it("should XML decode " + tc.input, function(){ + assert.equal(entities.decodeXML(tc.input), tc.output); + }); + it("should HTML4 decode " + tc.input, function(){ + assert.equal(entities.decodeHTML(tc.input), tc.output); + }); + it("should HTML5 decode " + tc.input, function(){ + assert.equal(entities.decodeHTML(tc.input), tc.output); + }); + }); +}); + +var levels = ["xml", "entities"]; + +describe("Documents", function(){ + levels + .map(function(n){ return path.join("..", "maps", n); }) + .map(require) + .forEach(function(doc, i){ + describe("Decode", function(){ + it(levels[i], function(){ + Object.keys(doc).forEach(function(e){ + for(var l = i; l < levels.length; l++){ + assert.equal(entities.decode("&" + e + ";", l), doc[e]); + } + }); + }); + }); + + describe("Decode strict", function(){ + it(levels[i], function(){ + Object.keys(doc).forEach(function(e){ + for(var l = i; l < levels.length; l++){ + assert.equal(entities.decodeStrict("&" + e + ";", l), doc[e]); + } + }); + }); + }); + + describe("Encode", function(){ + it(levels[i], function(){ + Object.keys(doc).forEach(function(e){ + for(var l = i; l < levels.length; l++){ + assert.equal(entities.decode(entities.encode(doc[e], l), l), doc[e]); + } + }); + }); + }); + }); + + var legacy = require("../maps/legacy.json"); + + describe("Legacy", function(){ + it("should decode", runLegacy); + }); + + function runLegacy(){ + Object.keys(legacy).forEach(function(e){ + assert.equal(entities.decodeHTML("&" + e), legacy[e]); + }); + } +}); + +var astral = { + "1D306": "\uD834\uDF06", + "1D11E": "\uD834\uDD1E" +}; + +var astralSpecial = { + "80": "\u20AC", + "110000": "\uFFFD" +}; + + +describe("Astral entities", function(){ + Object.keys(astral).forEach(function(c){ + it("should decode " + astral[c], function(){ + assert.equal(entities.decode("&#x" + c + ";"), astral[c]); + }); + + it("should encode " + astral[c], function(){ + assert.equal(entities.encode(astral[c]), "&#x" + c + ";"); + }); + }); + + Object.keys(astralSpecial).forEach(function(c){ + it("special should decode \\u" + c, function(){ + assert.equal(entities.decode("&#x" + c + ";"), astralSpecial[c]); + }); + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/.npmignore new file mode 100644 index 00000000..30d74d25 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/.npmignore @@ -0,0 +1 @@ +test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/errorhandler/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/.travis.yml similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/errorhandler/.travis.yml rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/Makefile new file mode 100644 index 00000000..083aa531 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/Makefile @@ -0,0 +1,6 @@ +test: + @NODE_ENV=test ./node_modules/.bin/mocha \ + --reporter spec \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/README.md new file mode 100644 index 00000000..79f549dd --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/README.md @@ -0,0 +1,34 @@ +# Error Handler + +Previously `connect.errorHandler()`. + +Usage: + +```js +var app = require('connect'); +app.use(require('errorhandler')()) +``` + +## License + +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong me@jongleberry.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/errorhandler/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/errorhandler/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/package.json new file mode 100644 index 00000000..872fb5d5 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/package.json @@ -0,0 +1,75 @@ +{ + "_args": [ + [ + "errorhandler@1.0.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect" + ] + ], + "_from": "errorhandler@1.0.0", + "_id": "errorhandler@1.0.0", + "_inCache": true, + "_installable": true, + "_location": "/errorhandler", + "_npmUser": { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + }, + "_npmVersion": "1.4.4", + "_phantomChildren": {}, + "_requested": { + "name": "errorhandler", + "raw": "errorhandler@1.0.0", + "rawSpec": "1.0.0", + "scope": null, + "spec": "1.0.0", + "type": "version" + }, + "_requiredBy": [ + "/connect" + ], + "_resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.0.0.tgz", + "_shasum": "d74b37e8dc38c99afb3f5a79edcebaea022d042a", + "_shrinkwrap": null, + "_spec": "errorhandler@1.0.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect", + "author": { + "email": "me@jongleberry.com", + "name": "Jonathan Ong", + "url": "http://jongleberry.com" + }, + "bugs": { + "url": "https://github.com/expressjs/errorhandler/issues" + }, + "dependencies": {}, + "description": "connect's default error handler page", + "devDependencies": { + "connect": "*", + "mocha": "^1.17.0", + "should": "^3.0.0", + "supertest": "*" + }, + "directories": {}, + "dist": { + "shasum": "d74b37e8dc38c99afb3f5a79edcebaea022d042a", + "tarball": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.0.0.tgz" + }, + "homepage": "https://github.com/expressjs/errorhandler", + "license": "MIT", + "maintainers": [ + { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + } + ], + "name": "errorhandler", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/expressjs/errorhandler.git" + }, + "scripts": { + "test": "make test" + }, + "version": "1.0.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/errorhandler/public/error.html b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/public/error.html similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/errorhandler/public/error.html rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/public/error.html diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/errorhandler/public/style.css b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/public/style.css similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/errorhandler/public/style.css rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/errorhandler/public/style.css diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/escape-string-regexp/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/escape-string-regexp/index.js new file mode 100644 index 00000000..ac6572ca --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/escape-string-regexp/index.js @@ -0,0 +1,11 @@ +'use strict'; + +var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + +module.exports = function (str) { + if (typeof str !== 'string') { + throw new TypeError('Expected a string'); + } + + return str.replace(matchOperatorsRe, '\\$&'); +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/escape-string-regexp/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/escape-string-regexp/package.json new file mode 100644 index 00000000..ae040b57 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/escape-string-regexp/package.json @@ -0,0 +1,95 @@ +{ + "_args": [ + [ + "escape-string-regexp@1.0.2", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha" + ] + ], + "_from": "escape-string-regexp@1.0.2", + "_id": "escape-string-regexp@1.0.2", + "_inCache": true, + "_installable": true, + "_location": "/escape-string-regexp", + "_npmUser": { + "email": "jappelman@xebia.com", + "name": "jbnicolai" + }, + "_npmVersion": "1.4.23", + "_phantomChildren": {}, + "_requested": { + "name": "escape-string-regexp", + "raw": "escape-string-regexp@1.0.2", + "rawSpec": "1.0.2", + "scope": null, + "spec": "1.0.2", + "type": "version" + }, + "_requiredBy": [ + "/mocha" + ], + "_resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", + "_shasum": "4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1", + "_shrinkwrap": null, + "_spec": "escape-string-regexp@1.0.2", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha", + "author": { + "email": "sindresorhus@gmail.com", + "name": "Sindre Sorhus", + "url": "http://sindresorhus.com" + }, + "bugs": { + "url": "https://github.com/sindresorhus/escape-string-regexp/issues" + }, + "dependencies": {}, + "description": "Escape RegExp special characters", + "devDependencies": { + "mocha": "*" + }, + "directories": {}, + "dist": { + "shasum": "4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1", + "tarball": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz" + }, + "engines": { + "node": ">=0.8.0" + }, + "files": [ + "index.js" + ], + "gitHead": "0587ee0ee03ea3fcbfa3c15cf67b47f214e20987", + "homepage": "https://github.com/sindresorhus/escape-string-regexp", + "keywords": [ + "regex", + "regexp", + "re", + "regular", + "expression", + "escape", + "string", + "str", + "special", + "characters" + ], + "license": "MIT", + "maintainers": [ + { + "email": "sindresorhus@gmail.com", + "name": "sindresorhus" + }, + { + "email": "jappelman@xebia.com", + "name": "jbnicolai" + } + ], + "name": "escape-string-regexp", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/sindresorhus/escape-string-regexp.git" + }, + "scripts": { + "test": "mocha" + }, + "version": "1.0.2" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/escape-string-regexp/readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/escape-string-regexp/readme.md new file mode 100644 index 00000000..808a963a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/escape-string-regexp/readme.md @@ -0,0 +1,27 @@ +# escape-string-regexp [![Build Status](https://travis-ci.org/sindresorhus/escape-string-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/escape-string-regexp) + +> Escape RegExp special characters + + +## Install + +```sh +$ npm install --save escape-string-regexp +``` + + +## Usage + +```js +var escapeStringRegexp = require('escape-string-regexp'); + +var escapedString = escapeStringRegexp('how much $ for a unicorn?'); +//=> how much \$ for a unicorn\? + +new RegExp(escapedString); +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/.jshintrc b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/.jshintrc new file mode 100644 index 00000000..2b7e39bf --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/.jshintrc @@ -0,0 +1,14 @@ +{ + "curly": true, + "eqeqeq": true, + "immed": true, + "latedef": "nofunc", + "newcap": true, + "noarg": true, + "sub": true, + "undef": true, + "unused": true, + "boss": true, + "eqnull": true, + "node": true +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/.npmignore new file mode 100644 index 00000000..e69de29b diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/.travis.yml new file mode 100644 index 00000000..42d43029 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/.travis.yml @@ -0,0 +1,6 @@ +language: node_js +node_js: + - 0.8 + - '0.10' +before_script: + - npm install -g grunt-cli diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/Gruntfile.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/Gruntfile.js new file mode 100644 index 00000000..ff37751b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/Gruntfile.js @@ -0,0 +1,48 @@ +'use strict'; + +module.exports = function(grunt) { + + // Project configuration. + grunt.initConfig({ + nodeunit: { + files: ['test/**/*_test.js'], + }, + jshint: { + options: { + jshintrc: '.jshintrc' + }, + gruntfile: { + src: 'Gruntfile.js' + }, + lib: { + src: ['lib/**/*.js'] + }, + test: { + src: ['test/**/*.js'] + }, + }, + watch: { + gruntfile: { + files: '<%= jshint.gruntfile.src %>', + tasks: ['jshint:gruntfile'] + }, + lib: { + files: '<%= jshint.lib.src %>', + tasks: ['jshint:lib', 'nodeunit'] + }, + test: { + files: '<%= jshint.test.src %>', + tasks: ['jshint:test', 'nodeunit'] + }, + }, + }); + + // These plugins provide necessary tasks. + grunt.loadNpmTasks('grunt-contrib-nodeunit'); + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-contrib-watch'); + + // Default task. + grunt.registerTask('default', ['jshint', 'nodeunit']); + +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/LICENSE-MIT b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/LICENSE-MIT new file mode 100644 index 00000000..bb2aad6d --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/LICENSE-MIT @@ -0,0 +1,22 @@ +Copyright (c) 2013 "Cowboy" Ben Alman + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/README.md new file mode 100644 index 00000000..20c364eb --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/README.md @@ -0,0 +1,75 @@ +# exit [![Build Status](https://secure.travis-ci.org/cowboy/node-exit.png?branch=master)](http://travis-ci.org/cowboy/node-exit) + +A replacement for process.exit that ensures stdio are fully drained before exiting. + +To make a long story short, if `process.exit` is called on Windows, script output is often truncated when pipe-redirecting `stdout` or `stderr`. This module attempts to work around this issue by waiting until those streams have been completely drained before actually calling `process.exit`. + +See [Node.js issue #3584](https://github.com/joyent/node/issues/3584) for further reference. + +Tested in OS X 10.8, Windows 7 on Node.js 0.8.25 and 0.10.18. + +Based on some code by [@vladikoff](https://github.com/vladikoff). + +## Getting Started +Install the module with: `npm install exit` + +```javascript +var exit = require('exit'); + +// These lines should appear in the output, EVEN ON WINDOWS. +console.log("omg"); +console.error("yay"); + +// process.exit(5); +exit(5); + +// These lines shouldn't appear in the output. +console.log("wtf"); +console.error("bro"); +``` + +## Don't believe me? Try it for yourself. + +In Windows, clone the repo and cd to the `test\fixtures` directory. The only difference between [log.js](test/fixtures/log.js) and [log-broken.js](test/fixtures/log-broken.js) is that the former uses `exit` while the latter calls `process.exit` directly. + +This test was done using cmd.exe, but you can see the same results using `| grep "std"` in either PowerShell or git-bash. + +``` +C:\node-exit\test\fixtures>node log.js 0 10 stdout stderr 2>&1 | find "std" +stdout 0 +stderr 0 +stdout 1 +stderr 1 +stdout 2 +stderr 2 +stdout 3 +stderr 3 +stdout 4 +stderr 4 +stdout 5 +stderr 5 +stdout 6 +stderr 6 +stdout 7 +stderr 7 +stdout 8 +stderr 8 +stdout 9 +stderr 9 + +C:\node-exit\test\fixtures>node log-broken.js 0 10 stdout stderr 2>&1 | find "std" + +C:\node-exit\test\fixtures> +``` + +## Contributing +In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/). + +## Release History +2013-11-26 - v0.1.2 - Fixed a bug with hanging processes. +2013-09-26 - v0.1.1 - Fixed some bugs. It seems to actually work now! +2013-09-20 - v0.1.0 - Initial release. + +## License +Copyright (c) 2013 "Cowboy" Ben Alman +Licensed under the MIT license. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/lib/exit.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/lib/exit.js new file mode 100644 index 00000000..2883e059 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/lib/exit.js @@ -0,0 +1,41 @@ +/* + * exit + * https://github.com/cowboy/node-exit + * + * Copyright (c) 2013 "Cowboy" Ben Alman + * Licensed under the MIT license. + */ + +'use strict'; + +module.exports = function exit(exitCode, streams) { + if (!streams) { streams = [process.stdout, process.stderr]; } + var drainCount = 0; + // Actually exit if all streams are drained. + function tryToExit() { + if (drainCount === streams.length) { + process.exit(exitCode); + } + } + streams.forEach(function(stream) { + // Count drained streams now, but monitor non-drained streams. + if (stream.bufferSize === 0) { + drainCount++; + } else { + stream.write('', 'utf-8', function() { + drainCount++; + tryToExit(); + }); + } + // Prevent further writing. + stream.write = function() {}; + }); + // If all streams were already drained, exit now. + tryToExit(); + // In Windows, when run as a Node.js child process, a script utilizing + // this library might just exit with a 0 exit code, regardless. This code, + // despite the fact that it looks a bit crazy, appears to fix that. + process.on('exit', function() { + process.exit(exitCode); + }); +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/package.json new file mode 100644 index 00000000..dd3ad15b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/package.json @@ -0,0 +1,96 @@ +{ + "_args": [ + [ + "exit@0.1.x", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint" + ] + ], + "_from": "exit@>=0.1.0 <0.2.0", + "_id": "exit@0.1.2", + "_inCache": true, + "_installable": true, + "_location": "/exit", + "_npmUser": { + "email": "cowboy@rj3.net", + "name": "cowboy" + }, + "_npmVersion": "1.3.11", + "_phantomChildren": {}, + "_requested": { + "name": "exit", + "raw": "exit@0.1.x", + "rawSpec": "0.1.x", + "scope": null, + "spec": ">=0.1.0 <0.2.0", + "type": "range" + }, + "_requiredBy": [ + "/cli", + "/jshint" + ], + "_resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "_shasum": "0632638f8d877cc82107d30a0fff1a17cba1cd0c", + "_shrinkwrap": null, + "_spec": "exit@0.1.x", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jshint", + "author": { + "name": "\"Cowboy\" Ben Alman", + "url": "http://benalman.com/" + }, + "bugs": { + "url": "https://github.com/cowboy/node-exit/issues" + }, + "dependencies": {}, + "description": "A replacement for process.exit that ensures stdio are fully drained before exiting.", + "devDependencies": { + "grunt": "~0.4.1", + "grunt-contrib-jshint": "~0.6.4", + "grunt-contrib-nodeunit": "~0.2.0", + "grunt-contrib-watch": "~0.5.3", + "which": "~1.0.5" + }, + "directories": {}, + "dist": { + "shasum": "0632638f8d877cc82107d30a0fff1a17cba1cd0c", + "tarball": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + }, + "engines": { + "node": ">= 0.8.0" + }, + "homepage": "https://github.com/cowboy/node-exit", + "keywords": [ + "exit", + "process", + "stdio", + "stdout", + "stderr", + "drain", + "flush", + "3584" + ], + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/cowboy/node-exit/blob/master/LICENSE-MIT" + } + ], + "main": "lib/exit", + "maintainers": [ + { + "email": "cowboy@rj3.net", + "name": "cowboy" + } + ], + "name": "exit", + "optionalDependencies": {}, + "readme": "# exit [![Build Status](https://secure.travis-ci.org/cowboy/node-exit.png?branch=master)](http://travis-ci.org/cowboy/node-exit)\n\nA replacement for process.exit that ensures stdio are fully drained before exiting.\n\nTo make a long story short, if `process.exit` is called on Windows, script output is often truncated when pipe-redirecting `stdout` or `stderr`. This module attempts to work around this issue by waiting until those streams have been completely drained before actually calling `process.exit`.\n\nSee [Node.js issue #3584](https://github.com/joyent/node/issues/3584) for further reference.\n\nTested in OS X 10.8, Windows 7 on Node.js 0.8.25 and 0.10.18.\n\nBased on some code by [@vladikoff](https://github.com/vladikoff).\n\n## Getting Started\nInstall the module with: `npm install exit`\n\n```javascript\nvar exit = require('exit');\n\n// These lines should appear in the output, EVEN ON WINDOWS.\nconsole.log(\"omg\");\nconsole.error(\"yay\");\n\n// process.exit(5);\nexit(5);\n\n// These lines shouldn't appear in the output.\nconsole.log(\"wtf\");\nconsole.error(\"bro\");\n```\n\n## Don't believe me? Try it for yourself.\n\nIn Windows, clone the repo and cd to the `test\\fixtures` directory. The only difference between [log.js](test/fixtures/log.js) and [log-broken.js](test/fixtures/log-broken.js) is that the former uses `exit` while the latter calls `process.exit` directly.\n\nThis test was done using cmd.exe, but you can see the same results using `| grep \"std\"` in either PowerShell or git-bash.\n\n```\nC:\\node-exit\\test\\fixtures>node log.js 0 10 stdout stderr 2>&1 | find \"std\"\nstdout 0\nstderr 0\nstdout 1\nstderr 1\nstdout 2\nstderr 2\nstdout 3\nstderr 3\nstdout 4\nstderr 4\nstdout 5\nstderr 5\nstdout 6\nstderr 6\nstdout 7\nstderr 7\nstdout 8\nstderr 8\nstdout 9\nstderr 9\n\nC:\\node-exit\\test\\fixtures>node log-broken.js 0 10 stdout stderr 2>&1 | find \"std\"\n\nC:\\node-exit\\test\\fixtures>\n```\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\n2013-11-26 - v0.1.2 - Fixed a bug with hanging processes. \n2013-09-26 - v0.1.1 - Fixed some bugs. It seems to actually work now! \n2013-09-20 - v0.1.0 - Initial release.\n\n## License\nCopyright (c) 2013 \"Cowboy\" Ben Alman \nLicensed under the MIT license.\n", + "readmeFilename": "README.md", + "repository": { + "type": "git", + "url": "git://github.com/cowboy/node-exit.git" + }, + "scripts": { + "test": "grunt nodeunit" + }, + "version": "0.1.2" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/exit_test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/exit_test.js new file mode 100644 index 00000000..a91afb91 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/exit_test.js @@ -0,0 +1,121 @@ +'use strict'; + +/* + ======== A Handy Little Nodeunit Reference ======== + https://github.com/caolan/nodeunit + + Test methods: + test.expect(numAssertions) + test.done() + Test assertions: + test.ok(value, [message]) + test.equal(actual, expected, [message]) + test.notEqual(actual, expected, [message]) + test.deepEqual(actual, expected, [message]) + test.notDeepEqual(actual, expected, [message]) + test.strictEqual(actual, expected, [message]) + test.notStrictEqual(actual, expected, [message]) + test.throws(block, [error], [message]) + test.doesNotThrow(block, [error], [message]) + test.ifError(value) +*/ + +var fs = require('fs'); +var exec = require('child_process').exec; + +var _which = require('which').sync; +function which(command) { + try { + _which(command); + return command; + } catch (err) { + return false; + } +} + +// Look for grep first (any OS). If not found (but on Windows) look for find, +// which is Windows' horribly crippled grep alternative. +var grep = which('grep') || process.platform === 'win32' && which('find'); + +exports['exit'] = { + setUp: function(done) { + this.origCwd = process.cwd(); + process.chdir('test/fixtures'); + done(); + }, + tearDown: function(done) { + process.chdir(this.origCwd); + done(); + }, + 'grep': function(test) { + test.expect(1); + // Many unit tests depend on this. + test.ok(grep, 'A suitable "grep" or "find" program was not found in the PATH.'); + test.done(); + }, + // The rest of the tests are built dynamically, to keep things sane. +}; + +// A few helper functions. +function normalizeLineEndings(s) { + return s.replace(/\r?\n/g, '\n'); +} + +// Capture command output, normalizing captured stdout to unix file endings. +function run(command, callback) { + exec(command, function(error, stdout) { + callback(error ? error.code : 0, normalizeLineEndings(stdout)); + }); +} + +// Read a fixture file, normalizing file contents to unix file endings. +function fixture(filename) { + return normalizeLineEndings(String(fs.readFileSync(filename))); +} + +function buildTests() { + // Build individual unit tests for command output. + var counts = [10, 100, 1000]; + var outputs = [' stdout stderr', ' stdout', ' stderr']; + var pipes = ['', ' | ' + grep + ' "std"']; + counts.forEach(function(count) { + outputs.forEach(function(output) { + pipes.forEach(function(pipe) { + var command = 'node log.js 0 ' + count + output + ' 2>&1' + pipe; + exports['exit']['output (' + command + ')'] = function(test) { + test.expect(2); + run(command, function(code, actual) { + var expected = fixture(count + output.replace(/ /g, '-') + '.txt'); + // Sometimes, the actual file lines are out of order on Windows. + // But since the point of this lib is to drain the buffer and not + // guarantee output order, we only test the length. + test.equal(actual.length, expected.length, 'should be the same length.'); + // The "fail" lines in log.js should NOT be output! + test.ok(actual.indexOf('fail') === -1, 'should not output after exit is called.'); + test.done(); + }); + }; + }); + }); + }); + + // Build individual unit tests for exit codes. + var codes = [0, 1, 123]; + codes.forEach(function(code) { + var command = 'node log.js ' + code + ' 10 stdout stderr'; + exports['exit']['exit code (' + command + ')'] = function(test) { + test.expect(1); + run(command, function(actual) { + // The specified exit code should be passed through. + test.equal(actual, code, 'should exit with ' + code + ' error code.'); + test.done(); + }); + }; + }); +} + +// Don't bother building tests if grep wasn't found, otherwise everything will +// fail and the error will get lost. +if (grep) { + buildTests(); +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/10-stderr.txt b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/10-stderr.txt new file mode 100644 index 00000000..28592003 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/10-stderr.txt @@ -0,0 +1,10 @@ +stderr 0 +stderr 1 +stderr 2 +stderr 3 +stderr 4 +stderr 5 +stderr 6 +stderr 7 +stderr 8 +stderr 9 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/10-stdout-stderr.txt b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/10-stdout-stderr.txt new file mode 100644 index 00000000..9de86166 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/10-stdout-stderr.txt @@ -0,0 +1,20 @@ +stdout 0 +stderr 0 +stdout 1 +stdout 2 +stderr 1 +stdout 3 +stderr 2 +stderr 3 +stdout 4 +stderr 4 +stdout 5 +stderr 5 +stdout 6 +stderr 6 +stdout 7 +stderr 7 +stdout 8 +stderr 8 +stdout 9 +stderr 9 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/10-stdout.txt b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/10-stdout.txt new file mode 100644 index 00000000..1ce90dcc --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/10-stdout.txt @@ -0,0 +1,10 @@ +stdout 0 +stdout 1 +stdout 2 +stdout 3 +stdout 4 +stdout 5 +stdout 6 +stdout 7 +stdout 8 +stdout 9 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/100-stderr.txt b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/100-stderr.txt new file mode 100644 index 00000000..3a78c857 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/100-stderr.txt @@ -0,0 +1,100 @@ +stderr 0 +stderr 1 +stderr 2 +stderr 3 +stderr 4 +stderr 5 +stderr 6 +stderr 7 +stderr 8 +stderr 9 +stderr 10 +stderr 11 +stderr 12 +stderr 13 +stderr 14 +stderr 15 +stderr 16 +stderr 17 +stderr 18 +stderr 19 +stderr 20 +stderr 21 +stderr 22 +stderr 23 +stderr 24 +stderr 25 +stderr 26 +stderr 27 +stderr 28 +stderr 29 +stderr 30 +stderr 31 +stderr 32 +stderr 33 +stderr 34 +stderr 35 +stderr 36 +stderr 37 +stderr 38 +stderr 39 +stderr 40 +stderr 41 +stderr 42 +stderr 43 +stderr 44 +stderr 45 +stderr 46 +stderr 47 +stderr 48 +stderr 49 +stderr 50 +stderr 51 +stderr 52 +stderr 53 +stderr 54 +stderr 55 +stderr 56 +stderr 57 +stderr 58 +stderr 59 +stderr 60 +stderr 61 +stderr 62 +stderr 63 +stderr 64 +stderr 65 +stderr 66 +stderr 67 +stderr 68 +stderr 69 +stderr 70 +stderr 71 +stderr 72 +stderr 73 +stderr 74 +stderr 75 +stderr 76 +stderr 77 +stderr 78 +stderr 79 +stderr 80 +stderr 81 +stderr 82 +stderr 83 +stderr 84 +stderr 85 +stderr 86 +stderr 87 +stderr 88 +stderr 89 +stderr 90 +stderr 91 +stderr 92 +stderr 93 +stderr 94 +stderr 95 +stderr 96 +stderr 97 +stderr 98 +stderr 99 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/100-stdout-stderr.txt b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/100-stdout-stderr.txt new file mode 100644 index 00000000..65f35f45 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/100-stdout-stderr.txt @@ -0,0 +1,200 @@ +stdout 0 +stderr 0 +stdout 1 +stderr 1 +stdout 2 +stderr 2 +stdout 3 +stderr 3 +stdout 4 +stderr 4 +stdout 5 +stderr 5 +stdout 6 +stderr 6 +stdout 7 +stderr 7 +stdout 8 +stderr 8 +stdout 9 +stderr 9 +stdout 10 +stderr 10 +stdout 11 +stderr 11 +stdout 12 +stderr 12 +stdout 13 +stderr 13 +stdout 14 +stderr 14 +stdout 15 +stderr 15 +stdout 16 +stderr 16 +stdout 17 +stderr 17 +stdout 18 +stderr 18 +stdout 19 +stderr 19 +stdout 20 +stderr 20 +stdout 21 +stderr 21 +stdout 22 +stderr 22 +stdout 23 +stderr 23 +stdout 24 +stderr 24 +stdout 25 +stderr 25 +stdout 26 +stderr 26 +stdout 27 +stderr 27 +stdout 28 +stderr 28 +stdout 29 +stderr 29 +stdout 30 +stderr 30 +stdout 31 +stderr 31 +stdout 32 +stderr 32 +stdout 33 +stderr 33 +stdout 34 +stderr 34 +stdout 35 +stderr 35 +stdout 36 +stderr 36 +stdout 37 +stderr 37 +stdout 38 +stderr 38 +stdout 39 +stderr 39 +stdout 40 +stderr 40 +stdout 41 +stderr 41 +stdout 42 +stderr 42 +stdout 43 +stderr 43 +stdout 44 +stderr 44 +stdout 45 +stderr 45 +stdout 46 +stderr 46 +stdout 47 +stderr 47 +stdout 48 +stderr 48 +stdout 49 +stderr 49 +stdout 50 +stderr 50 +stdout 51 +stderr 51 +stdout 52 +stderr 52 +stdout 53 +stderr 53 +stdout 54 +stderr 54 +stdout 55 +stderr 55 +stdout 56 +stderr 56 +stdout 57 +stderr 57 +stdout 58 +stderr 58 +stdout 59 +stderr 59 +stdout 60 +stderr 60 +stdout 61 +stderr 61 +stdout 62 +stderr 62 +stdout 63 +stderr 63 +stdout 64 +stderr 64 +stdout 65 +stderr 65 +stdout 66 +stderr 66 +stdout 67 +stderr 67 +stdout 68 +stderr 68 +stdout 69 +stderr 69 +stdout 70 +stderr 70 +stdout 71 +stderr 71 +stdout 72 +stderr 72 +stdout 73 +stderr 73 +stdout 74 +stderr 74 +stdout 75 +stderr 75 +stdout 76 +stderr 76 +stdout 77 +stderr 77 +stdout 78 +stderr 78 +stdout 79 +stderr 79 +stdout 80 +stderr 80 +stdout 81 +stderr 81 +stdout 82 +stderr 82 +stdout 83 +stderr 83 +stdout 84 +stderr 84 +stdout 85 +stderr 85 +stdout 86 +stderr 86 +stdout 87 +stderr 87 +stdout 88 +stderr 88 +stdout 89 +stderr 89 +stdout 90 +stderr 90 +stdout 91 +stderr 91 +stdout 92 +stderr 92 +stdout 93 +stderr 93 +stdout 94 +stderr 94 +stdout 95 +stderr 95 +stdout 96 +stderr 96 +stdout 97 +stderr 97 +stdout 98 +stderr 98 +stdout 99 +stderr 99 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/100-stdout.txt b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/100-stdout.txt new file mode 100644 index 00000000..5d9cac25 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/100-stdout.txt @@ -0,0 +1,100 @@ +stdout 0 +stdout 1 +stdout 2 +stdout 3 +stdout 4 +stdout 5 +stdout 6 +stdout 7 +stdout 8 +stdout 9 +stdout 10 +stdout 11 +stdout 12 +stdout 13 +stdout 14 +stdout 15 +stdout 16 +stdout 17 +stdout 18 +stdout 19 +stdout 20 +stdout 21 +stdout 22 +stdout 23 +stdout 24 +stdout 25 +stdout 26 +stdout 27 +stdout 28 +stdout 29 +stdout 30 +stdout 31 +stdout 32 +stdout 33 +stdout 34 +stdout 35 +stdout 36 +stdout 37 +stdout 38 +stdout 39 +stdout 40 +stdout 41 +stdout 42 +stdout 43 +stdout 44 +stdout 45 +stdout 46 +stdout 47 +stdout 48 +stdout 49 +stdout 50 +stdout 51 +stdout 52 +stdout 53 +stdout 54 +stdout 55 +stdout 56 +stdout 57 +stdout 58 +stdout 59 +stdout 60 +stdout 61 +stdout 62 +stdout 63 +stdout 64 +stdout 65 +stdout 66 +stdout 67 +stdout 68 +stdout 69 +stdout 70 +stdout 71 +stdout 72 +stdout 73 +stdout 74 +stdout 75 +stdout 76 +stdout 77 +stdout 78 +stdout 79 +stdout 80 +stdout 81 +stdout 82 +stdout 83 +stdout 84 +stdout 85 +stdout 86 +stdout 87 +stdout 88 +stdout 89 +stdout 90 +stdout 91 +stdout 92 +stdout 93 +stdout 94 +stdout 95 +stdout 96 +stdout 97 +stdout 98 +stdout 99 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/1000-stderr.txt b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/1000-stderr.txt new file mode 100644 index 00000000..d6375102 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/1000-stderr.txt @@ -0,0 +1,1000 @@ +stderr 0 +stderr 1 +stderr 2 +stderr 3 +stderr 4 +stderr 5 +stderr 6 +stderr 7 +stderr 8 +stderr 9 +stderr 10 +stderr 11 +stderr 12 +stderr 13 +stderr 14 +stderr 15 +stderr 16 +stderr 17 +stderr 18 +stderr 19 +stderr 20 +stderr 21 +stderr 22 +stderr 23 +stderr 24 +stderr 25 +stderr 26 +stderr 27 +stderr 28 +stderr 29 +stderr 30 +stderr 31 +stderr 32 +stderr 33 +stderr 34 +stderr 35 +stderr 36 +stderr 37 +stderr 38 +stderr 39 +stderr 40 +stderr 41 +stderr 42 +stderr 43 +stderr 44 +stderr 45 +stderr 46 +stderr 47 +stderr 48 +stderr 49 +stderr 50 +stderr 51 +stderr 52 +stderr 53 +stderr 54 +stderr 55 +stderr 56 +stderr 57 +stderr 58 +stderr 59 +stderr 60 +stderr 61 +stderr 62 +stderr 63 +stderr 64 +stderr 65 +stderr 66 +stderr 67 +stderr 68 +stderr 69 +stderr 70 +stderr 71 +stderr 72 +stderr 73 +stderr 74 +stderr 75 +stderr 76 +stderr 77 +stderr 78 +stderr 79 +stderr 80 +stderr 81 +stderr 82 +stderr 83 +stderr 84 +stderr 85 +stderr 86 +stderr 87 +stderr 88 +stderr 89 +stderr 90 +stderr 91 +stderr 92 +stderr 93 +stderr 94 +stderr 95 +stderr 96 +stderr 97 +stderr 98 +stderr 99 +stderr 100 +stderr 101 +stderr 102 +stderr 103 +stderr 104 +stderr 105 +stderr 106 +stderr 107 +stderr 108 +stderr 109 +stderr 110 +stderr 111 +stderr 112 +stderr 113 +stderr 114 +stderr 115 +stderr 116 +stderr 117 +stderr 118 +stderr 119 +stderr 120 +stderr 121 +stderr 122 +stderr 123 +stderr 124 +stderr 125 +stderr 126 +stderr 127 +stderr 128 +stderr 129 +stderr 130 +stderr 131 +stderr 132 +stderr 133 +stderr 134 +stderr 135 +stderr 136 +stderr 137 +stderr 138 +stderr 139 +stderr 140 +stderr 141 +stderr 142 +stderr 143 +stderr 144 +stderr 145 +stderr 146 +stderr 147 +stderr 148 +stderr 149 +stderr 150 +stderr 151 +stderr 152 +stderr 153 +stderr 154 +stderr 155 +stderr 156 +stderr 157 +stderr 158 +stderr 159 +stderr 160 +stderr 161 +stderr 162 +stderr 163 +stderr 164 +stderr 165 +stderr 166 +stderr 167 +stderr 168 +stderr 169 +stderr 170 +stderr 171 +stderr 172 +stderr 173 +stderr 174 +stderr 175 +stderr 176 +stderr 177 +stderr 178 +stderr 179 +stderr 180 +stderr 181 +stderr 182 +stderr 183 +stderr 184 +stderr 185 +stderr 186 +stderr 187 +stderr 188 +stderr 189 +stderr 190 +stderr 191 +stderr 192 +stderr 193 +stderr 194 +stderr 195 +stderr 196 +stderr 197 +stderr 198 +stderr 199 +stderr 200 +stderr 201 +stderr 202 +stderr 203 +stderr 204 +stderr 205 +stderr 206 +stderr 207 +stderr 208 +stderr 209 +stderr 210 +stderr 211 +stderr 212 +stderr 213 +stderr 214 +stderr 215 +stderr 216 +stderr 217 +stderr 218 +stderr 219 +stderr 220 +stderr 221 +stderr 222 +stderr 223 +stderr 224 +stderr 225 +stderr 226 +stderr 227 +stderr 228 +stderr 229 +stderr 230 +stderr 231 +stderr 232 +stderr 233 +stderr 234 +stderr 235 +stderr 236 +stderr 237 +stderr 238 +stderr 239 +stderr 240 +stderr 241 +stderr 242 +stderr 243 +stderr 244 +stderr 245 +stderr 246 +stderr 247 +stderr 248 +stderr 249 +stderr 250 +stderr 251 +stderr 252 +stderr 253 +stderr 254 +stderr 255 +stderr 256 +stderr 257 +stderr 258 +stderr 259 +stderr 260 +stderr 261 +stderr 262 +stderr 263 +stderr 264 +stderr 265 +stderr 266 +stderr 267 +stderr 268 +stderr 269 +stderr 270 +stderr 271 +stderr 272 +stderr 273 +stderr 274 +stderr 275 +stderr 276 +stderr 277 +stderr 278 +stderr 279 +stderr 280 +stderr 281 +stderr 282 +stderr 283 +stderr 284 +stderr 285 +stderr 286 +stderr 287 +stderr 288 +stderr 289 +stderr 290 +stderr 291 +stderr 292 +stderr 293 +stderr 294 +stderr 295 +stderr 296 +stderr 297 +stderr 298 +stderr 299 +stderr 300 +stderr 301 +stderr 302 +stderr 303 +stderr 304 +stderr 305 +stderr 306 +stderr 307 +stderr 308 +stderr 309 +stderr 310 +stderr 311 +stderr 312 +stderr 313 +stderr 314 +stderr 315 +stderr 316 +stderr 317 +stderr 318 +stderr 319 +stderr 320 +stderr 321 +stderr 322 +stderr 323 +stderr 324 +stderr 325 +stderr 326 +stderr 327 +stderr 328 +stderr 329 +stderr 330 +stderr 331 +stderr 332 +stderr 333 +stderr 334 +stderr 335 +stderr 336 +stderr 337 +stderr 338 +stderr 339 +stderr 340 +stderr 341 +stderr 342 +stderr 343 +stderr 344 +stderr 345 +stderr 346 +stderr 347 +stderr 348 +stderr 349 +stderr 350 +stderr 351 +stderr 352 +stderr 353 +stderr 354 +stderr 355 +stderr 356 +stderr 357 +stderr 358 +stderr 359 +stderr 360 +stderr 361 +stderr 362 +stderr 363 +stderr 364 +stderr 365 +stderr 366 +stderr 367 +stderr 368 +stderr 369 +stderr 370 +stderr 371 +stderr 372 +stderr 373 +stderr 374 +stderr 375 +stderr 376 +stderr 377 +stderr 378 +stderr 379 +stderr 380 +stderr 381 +stderr 382 +stderr 383 +stderr 384 +stderr 385 +stderr 386 +stderr 387 +stderr 388 +stderr 389 +stderr 390 +stderr 391 +stderr 392 +stderr 393 +stderr 394 +stderr 395 +stderr 396 +stderr 397 +stderr 398 +stderr 399 +stderr 400 +stderr 401 +stderr 402 +stderr 403 +stderr 404 +stderr 405 +stderr 406 +stderr 407 +stderr 408 +stderr 409 +stderr 410 +stderr 411 +stderr 412 +stderr 413 +stderr 414 +stderr 415 +stderr 416 +stderr 417 +stderr 418 +stderr 419 +stderr 420 +stderr 421 +stderr 422 +stderr 423 +stderr 424 +stderr 425 +stderr 426 +stderr 427 +stderr 428 +stderr 429 +stderr 430 +stderr 431 +stderr 432 +stderr 433 +stderr 434 +stderr 435 +stderr 436 +stderr 437 +stderr 438 +stderr 439 +stderr 440 +stderr 441 +stderr 442 +stderr 443 +stderr 444 +stderr 445 +stderr 446 +stderr 447 +stderr 448 +stderr 449 +stderr 450 +stderr 451 +stderr 452 +stderr 453 +stderr 454 +stderr 455 +stderr 456 +stderr 457 +stderr 458 +stderr 459 +stderr 460 +stderr 461 +stderr 462 +stderr 463 +stderr 464 +stderr 465 +stderr 466 +stderr 467 +stderr 468 +stderr 469 +stderr 470 +stderr 471 +stderr 472 +stderr 473 +stderr 474 +stderr 475 +stderr 476 +stderr 477 +stderr 478 +stderr 479 +stderr 480 +stderr 481 +stderr 482 +stderr 483 +stderr 484 +stderr 485 +stderr 486 +stderr 487 +stderr 488 +stderr 489 +stderr 490 +stderr 491 +stderr 492 +stderr 493 +stderr 494 +stderr 495 +stderr 496 +stderr 497 +stderr 498 +stderr 499 +stderr 500 +stderr 501 +stderr 502 +stderr 503 +stderr 504 +stderr 505 +stderr 506 +stderr 507 +stderr 508 +stderr 509 +stderr 510 +stderr 511 +stderr 512 +stderr 513 +stderr 514 +stderr 515 +stderr 516 +stderr 517 +stderr 518 +stderr 519 +stderr 520 +stderr 521 +stderr 522 +stderr 523 +stderr 524 +stderr 525 +stderr 526 +stderr 527 +stderr 528 +stderr 529 +stderr 530 +stderr 531 +stderr 532 +stderr 533 +stderr 534 +stderr 535 +stderr 536 +stderr 537 +stderr 538 +stderr 539 +stderr 540 +stderr 541 +stderr 542 +stderr 543 +stderr 544 +stderr 545 +stderr 546 +stderr 547 +stderr 548 +stderr 549 +stderr 550 +stderr 551 +stderr 552 +stderr 553 +stderr 554 +stderr 555 +stderr 556 +stderr 557 +stderr 558 +stderr 559 +stderr 560 +stderr 561 +stderr 562 +stderr 563 +stderr 564 +stderr 565 +stderr 566 +stderr 567 +stderr 568 +stderr 569 +stderr 570 +stderr 571 +stderr 572 +stderr 573 +stderr 574 +stderr 575 +stderr 576 +stderr 577 +stderr 578 +stderr 579 +stderr 580 +stderr 581 +stderr 582 +stderr 583 +stderr 584 +stderr 585 +stderr 586 +stderr 587 +stderr 588 +stderr 589 +stderr 590 +stderr 591 +stderr 592 +stderr 593 +stderr 594 +stderr 595 +stderr 596 +stderr 597 +stderr 598 +stderr 599 +stderr 600 +stderr 601 +stderr 602 +stderr 603 +stderr 604 +stderr 605 +stderr 606 +stderr 607 +stderr 608 +stderr 609 +stderr 610 +stderr 611 +stderr 612 +stderr 613 +stderr 614 +stderr 615 +stderr 616 +stderr 617 +stderr 618 +stderr 619 +stderr 620 +stderr 621 +stderr 622 +stderr 623 +stderr 624 +stderr 625 +stderr 626 +stderr 627 +stderr 628 +stderr 629 +stderr 630 +stderr 631 +stderr 632 +stderr 633 +stderr 634 +stderr 635 +stderr 636 +stderr 637 +stderr 638 +stderr 639 +stderr 640 +stderr 641 +stderr 642 +stderr 643 +stderr 644 +stderr 645 +stderr 646 +stderr 647 +stderr 648 +stderr 649 +stderr 650 +stderr 651 +stderr 652 +stderr 653 +stderr 654 +stderr 655 +stderr 656 +stderr 657 +stderr 658 +stderr 659 +stderr 660 +stderr 661 +stderr 662 +stderr 663 +stderr 664 +stderr 665 +stderr 666 +stderr 667 +stderr 668 +stderr 669 +stderr 670 +stderr 671 +stderr 672 +stderr 673 +stderr 674 +stderr 675 +stderr 676 +stderr 677 +stderr 678 +stderr 679 +stderr 680 +stderr 681 +stderr 682 +stderr 683 +stderr 684 +stderr 685 +stderr 686 +stderr 687 +stderr 688 +stderr 689 +stderr 690 +stderr 691 +stderr 692 +stderr 693 +stderr 694 +stderr 695 +stderr 696 +stderr 697 +stderr 698 +stderr 699 +stderr 700 +stderr 701 +stderr 702 +stderr 703 +stderr 704 +stderr 705 +stderr 706 +stderr 707 +stderr 708 +stderr 709 +stderr 710 +stderr 711 +stderr 712 +stderr 713 +stderr 714 +stderr 715 +stderr 716 +stderr 717 +stderr 718 +stderr 719 +stderr 720 +stderr 721 +stderr 722 +stderr 723 +stderr 724 +stderr 725 +stderr 726 +stderr 727 +stderr 728 +stderr 729 +stderr 730 +stderr 731 +stderr 732 +stderr 733 +stderr 734 +stderr 735 +stderr 736 +stderr 737 +stderr 738 +stderr 739 +stderr 740 +stderr 741 +stderr 742 +stderr 743 +stderr 744 +stderr 745 +stderr 746 +stderr 747 +stderr 748 +stderr 749 +stderr 750 +stderr 751 +stderr 752 +stderr 753 +stderr 754 +stderr 755 +stderr 756 +stderr 757 +stderr 758 +stderr 759 +stderr 760 +stderr 761 +stderr 762 +stderr 763 +stderr 764 +stderr 765 +stderr 766 +stderr 767 +stderr 768 +stderr 769 +stderr 770 +stderr 771 +stderr 772 +stderr 773 +stderr 774 +stderr 775 +stderr 776 +stderr 777 +stderr 778 +stderr 779 +stderr 780 +stderr 781 +stderr 782 +stderr 783 +stderr 784 +stderr 785 +stderr 786 +stderr 787 +stderr 788 +stderr 789 +stderr 790 +stderr 791 +stderr 792 +stderr 793 +stderr 794 +stderr 795 +stderr 796 +stderr 797 +stderr 798 +stderr 799 +stderr 800 +stderr 801 +stderr 802 +stderr 803 +stderr 804 +stderr 805 +stderr 806 +stderr 807 +stderr 808 +stderr 809 +stderr 810 +stderr 811 +stderr 812 +stderr 813 +stderr 814 +stderr 815 +stderr 816 +stderr 817 +stderr 818 +stderr 819 +stderr 820 +stderr 821 +stderr 822 +stderr 823 +stderr 824 +stderr 825 +stderr 826 +stderr 827 +stderr 828 +stderr 829 +stderr 830 +stderr 831 +stderr 832 +stderr 833 +stderr 834 +stderr 835 +stderr 836 +stderr 837 +stderr 838 +stderr 839 +stderr 840 +stderr 841 +stderr 842 +stderr 843 +stderr 844 +stderr 845 +stderr 846 +stderr 847 +stderr 848 +stderr 849 +stderr 850 +stderr 851 +stderr 852 +stderr 853 +stderr 854 +stderr 855 +stderr 856 +stderr 857 +stderr 858 +stderr 859 +stderr 860 +stderr 861 +stderr 862 +stderr 863 +stderr 864 +stderr 865 +stderr 866 +stderr 867 +stderr 868 +stderr 869 +stderr 870 +stderr 871 +stderr 872 +stderr 873 +stderr 874 +stderr 875 +stderr 876 +stderr 877 +stderr 878 +stderr 879 +stderr 880 +stderr 881 +stderr 882 +stderr 883 +stderr 884 +stderr 885 +stderr 886 +stderr 887 +stderr 888 +stderr 889 +stderr 890 +stderr 891 +stderr 892 +stderr 893 +stderr 894 +stderr 895 +stderr 896 +stderr 897 +stderr 898 +stderr 899 +stderr 900 +stderr 901 +stderr 902 +stderr 903 +stderr 904 +stderr 905 +stderr 906 +stderr 907 +stderr 908 +stderr 909 +stderr 910 +stderr 911 +stderr 912 +stderr 913 +stderr 914 +stderr 915 +stderr 916 +stderr 917 +stderr 918 +stderr 919 +stderr 920 +stderr 921 +stderr 922 +stderr 923 +stderr 924 +stderr 925 +stderr 926 +stderr 927 +stderr 928 +stderr 929 +stderr 930 +stderr 931 +stderr 932 +stderr 933 +stderr 934 +stderr 935 +stderr 936 +stderr 937 +stderr 938 +stderr 939 +stderr 940 +stderr 941 +stderr 942 +stderr 943 +stderr 944 +stderr 945 +stderr 946 +stderr 947 +stderr 948 +stderr 949 +stderr 950 +stderr 951 +stderr 952 +stderr 953 +stderr 954 +stderr 955 +stderr 956 +stderr 957 +stderr 958 +stderr 959 +stderr 960 +stderr 961 +stderr 962 +stderr 963 +stderr 964 +stderr 965 +stderr 966 +stderr 967 +stderr 968 +stderr 969 +stderr 970 +stderr 971 +stderr 972 +stderr 973 +stderr 974 +stderr 975 +stderr 976 +stderr 977 +stderr 978 +stderr 979 +stderr 980 +stderr 981 +stderr 982 +stderr 983 +stderr 984 +stderr 985 +stderr 986 +stderr 987 +stderr 988 +stderr 989 +stderr 990 +stderr 991 +stderr 992 +stderr 993 +stderr 994 +stderr 995 +stderr 996 +stderr 997 +stderr 998 +stderr 999 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/1000-stdout-stderr.txt b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/1000-stdout-stderr.txt new file mode 100644 index 00000000..4fde2b4d --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/1000-stdout-stderr.txt @@ -0,0 +1,2000 @@ +stdout 0 +stderr 0 +stdout 1 +stderr 1 +stdout 2 +stderr 2 +stdout 3 +stderr 3 +stdout 4 +stderr 4 +stdout 5 +stderr 5 +stdout 6 +stderr 6 +stdout 7 +stderr 7 +stdout 8 +stderr 8 +stdout 9 +stderr 9 +stdout 10 +stderr 10 +stdout 11 +stderr 11 +stdout 12 +stderr 12 +stdout 13 +stderr 13 +stdout 14 +stderr 14 +stdout 15 +stderr 15 +stdout 16 +stderr 16 +stdout 17 +stderr 17 +stdout 18 +stderr 18 +stdout 19 +stderr 19 +stdout 20 +stderr 20 +stdout 21 +stderr 21 +stdout 22 +stderr 22 +stdout 23 +stderr 23 +stdout 24 +stderr 24 +stdout 25 +stderr 25 +stdout 26 +stderr 26 +stdout 27 +stderr 27 +stdout 28 +stderr 28 +stdout 29 +stderr 29 +stdout 30 +stderr 30 +stdout 31 +stderr 31 +stdout 32 +stderr 32 +stdout 33 +stderr 33 +stdout 34 +stderr 34 +stdout 35 +stderr 35 +stdout 36 +stderr 36 +stdout 37 +stderr 37 +stdout 38 +stderr 38 +stdout 39 +stderr 39 +stdout 40 +stderr 40 +stdout 41 +stderr 41 +stdout 42 +stderr 42 +stdout 43 +stderr 43 +stdout 44 +stderr 44 +stdout 45 +stderr 45 +stdout 46 +stderr 46 +stdout 47 +stderr 47 +stdout 48 +stderr 48 +stdout 49 +stderr 49 +stdout 50 +stderr 50 +stdout 51 +stderr 51 +stdout 52 +stderr 52 +stdout 53 +stderr 53 +stdout 54 +stderr 54 +stdout 55 +stderr 55 +stdout 56 +stderr 56 +stdout 57 +stderr 57 +stdout 58 +stderr 58 +stdout 59 +stderr 59 +stdout 60 +stderr 60 +stdout 61 +stderr 61 +stdout 62 +stderr 62 +stdout 63 +stderr 63 +stdout 64 +stderr 64 +stdout 65 +stderr 65 +stdout 66 +stderr 66 +stdout 67 +stderr 67 +stdout 68 +stderr 68 +stdout 69 +stderr 69 +stdout 70 +stderr 70 +stdout 71 +stderr 71 +stdout 72 +stderr 72 +stdout 73 +stderr 73 +stdout 74 +stderr 74 +stdout 75 +stderr 75 +stdout 76 +stderr 76 +stdout 77 +stderr 77 +stdout 78 +stderr 78 +stdout 79 +stderr 79 +stdout 80 +stderr 80 +stdout 81 +stderr 81 +stdout 82 +stderr 82 +stdout 83 +stderr 83 +stdout 84 +stderr 84 +stdout 85 +stderr 85 +stdout 86 +stderr 86 +stdout 87 +stderr 87 +stdout 88 +stderr 88 +stdout 89 +stderr 89 +stdout 90 +stderr 90 +stdout 91 +stderr 91 +stdout 92 +stderr 92 +stdout 93 +stderr 93 +stdout 94 +stderr 94 +stdout 95 +stderr 95 +stdout 96 +stderr 96 +stdout 97 +stderr 97 +stdout 98 +stderr 98 +stdout 99 +stderr 99 +stdout 100 +stderr 100 +stdout 101 +stderr 101 +stdout 102 +stderr 102 +stdout 103 +stderr 103 +stdout 104 +stderr 104 +stdout 105 +stderr 105 +stdout 106 +stderr 106 +stdout 107 +stderr 107 +stdout 108 +stderr 108 +stdout 109 +stderr 109 +stdout 110 +stderr 110 +stdout 111 +stderr 111 +stdout 112 +stderr 112 +stdout 113 +stderr 113 +stdout 114 +stderr 114 +stdout 115 +stderr 115 +stdout 116 +stderr 116 +stdout 117 +stderr 117 +stdout 118 +stderr 118 +stdout 119 +stderr 119 +stdout 120 +stderr 120 +stdout 121 +stderr 121 +stdout 122 +stderr 122 +stdout 123 +stderr 123 +stdout 124 +stderr 124 +stdout 125 +stderr 125 +stdout 126 +stderr 126 +stdout 127 +stderr 127 +stdout 128 +stderr 128 +stdout 129 +stderr 129 +stdout 130 +stderr 130 +stdout 131 +stderr 131 +stdout 132 +stderr 132 +stdout 133 +stderr 133 +stdout 134 +stderr 134 +stdout 135 +stderr 135 +stdout 136 +stderr 136 +stdout 137 +stderr 137 +stdout 138 +stderr 138 +stdout 139 +stderr 139 +stdout 140 +stderr 140 +stdout 141 +stderr 141 +stdout 142 +stderr 142 +stdout 143 +stderr 143 +stdout 144 +stderr 144 +stdout 145 +stderr 145 +stdout 146 +stderr 146 +stdout 147 +stderr 147 +stdout 148 +stderr 148 +stdout 149 +stderr 149 +stdout 150 +stderr 150 +stdout 151 +stderr 151 +stdout 152 +stderr 152 +stdout 153 +stderr 153 +stdout 154 +stderr 154 +stdout 155 +stderr 155 +stdout 156 +stderr 156 +stdout 157 +stderr 157 +stdout 158 +stderr 158 +stdout 159 +stderr 159 +stdout 160 +stderr 160 +stdout 161 +stderr 161 +stdout 162 +stderr 162 +stdout 163 +stderr 163 +stdout 164 +stderr 164 +stdout 165 +stderr 165 +stdout 166 +stderr 166 +stdout 167 +stderr 167 +stdout 168 +stderr 168 +stdout 169 +stderr 169 +stdout 170 +stderr 170 +stdout 171 +stderr 171 +stdout 172 +stderr 172 +stdout 173 +stderr 173 +stdout 174 +stderr 174 +stdout 175 +stderr 175 +stdout 176 +stderr 176 +stdout 177 +stderr 177 +stdout 178 +stderr 178 +stdout 179 +stderr 179 +stdout 180 +stderr 180 +stdout 181 +stderr 181 +stdout 182 +stderr 182 +stdout 183 +stderr 183 +stdout 184 +stderr 184 +stdout 185 +stderr 185 +stdout 186 +stderr 186 +stdout 187 +stderr 187 +stdout 188 +stderr 188 +stdout 189 +stderr 189 +stdout 190 +stderr 190 +stdout 191 +stderr 191 +stdout 192 +stderr 192 +stdout 193 +stderr 193 +stdout 194 +stderr 194 +stdout 195 +stderr 195 +stdout 196 +stderr 196 +stdout 197 +stderr 197 +stdout 198 +stderr 198 +stdout 199 +stderr 199 +stdout 200 +stderr 200 +stdout 201 +stderr 201 +stdout 202 +stderr 202 +stdout 203 +stderr 203 +stdout 204 +stderr 204 +stdout 205 +stderr 205 +stdout 206 +stderr 206 +stdout 207 +stderr 207 +stdout 208 +stderr 208 +stdout 209 +stderr 209 +stdout 210 +stderr 210 +stdout 211 +stderr 211 +stdout 212 +stderr 212 +stdout 213 +stderr 213 +stdout 214 +stderr 214 +stdout 215 +stderr 215 +stdout 216 +stderr 216 +stdout 217 +stderr 217 +stdout 218 +stderr 218 +stdout 219 +stderr 219 +stdout 220 +stderr 220 +stdout 221 +stderr 221 +stdout 222 +stderr 222 +stdout 223 +stderr 223 +stdout 224 +stderr 224 +stdout 225 +stderr 225 +stdout 226 +stderr 226 +stdout 227 +stderr 227 +stdout 228 +stderr 228 +stdout 229 +stderr 229 +stdout 230 +stderr 230 +stdout 231 +stderr 231 +stdout 232 +stderr 232 +stdout 233 +stderr 233 +stdout 234 +stderr 234 +stdout 235 +stderr 235 +stdout 236 +stderr 236 +stdout 237 +stderr 237 +stdout 238 +stderr 238 +stdout 239 +stderr 239 +stdout 240 +stderr 240 +stdout 241 +stderr 241 +stdout 242 +stderr 242 +stdout 243 +stderr 243 +stdout 244 +stderr 244 +stdout 245 +stderr 245 +stdout 246 +stderr 246 +stdout 247 +stderr 247 +stdout 248 +stderr 248 +stdout 249 +stderr 249 +stdout 250 +stderr 250 +stdout 251 +stderr 251 +stdout 252 +stderr 252 +stdout 253 +stderr 253 +stdout 254 +stderr 254 +stdout 255 +stderr 255 +stdout 256 +stderr 256 +stdout 257 +stderr 257 +stdout 258 +stderr 258 +stdout 259 +stderr 259 +stdout 260 +stderr 260 +stdout 261 +stderr 261 +stdout 262 +stderr 262 +stdout 263 +stderr 263 +stdout 264 +stderr 264 +stdout 265 +stderr 265 +stdout 266 +stderr 266 +stdout 267 +stderr 267 +stdout 268 +stderr 268 +stdout 269 +stderr 269 +stdout 270 +stderr 270 +stdout 271 +stderr 271 +stdout 272 +stderr 272 +stdout 273 +stderr 273 +stdout 274 +stderr 274 +stdout 275 +stderr 275 +stdout 276 +stderr 276 +stdout 277 +stderr 277 +stdout 278 +stderr 278 +stdout 279 +stderr 279 +stdout 280 +stderr 280 +stdout 281 +stderr 281 +stdout 282 +stderr 282 +stdout 283 +stderr 283 +stdout 284 +stderr 284 +stdout 285 +stderr 285 +stdout 286 +stderr 286 +stdout 287 +stderr 287 +stdout 288 +stderr 288 +stdout 289 +stderr 289 +stdout 290 +stderr 290 +stdout 291 +stderr 291 +stdout 292 +stderr 292 +stdout 293 +stderr 293 +stdout 294 +stderr 294 +stdout 295 +stderr 295 +stdout 296 +stderr 296 +stdout 297 +stderr 297 +stdout 298 +stderr 298 +stdout 299 +stderr 299 +stdout 300 +stderr 300 +stdout 301 +stderr 301 +stdout 302 +stderr 302 +stdout 303 +stderr 303 +stdout 304 +stderr 304 +stdout 305 +stderr 305 +stdout 306 +stderr 306 +stdout 307 +stderr 307 +stdout 308 +stderr 308 +stdout 309 +stderr 309 +stdout 310 +stderr 310 +stdout 311 +stderr 311 +stdout 312 +stderr 312 +stdout 313 +stderr 313 +stdout 314 +stderr 314 +stdout 315 +stderr 315 +stdout 316 +stderr 316 +stdout 317 +stderr 317 +stdout 318 +stderr 318 +stdout 319 +stderr 319 +stdout 320 +stderr 320 +stdout 321 +stderr 321 +stdout 322 +stderr 322 +stdout 323 +stderr 323 +stdout 324 +stderr 324 +stdout 325 +stderr 325 +stdout 326 +stderr 326 +stdout 327 +stderr 327 +stdout 328 +stderr 328 +stdout 329 +stderr 329 +stdout 330 +stderr 330 +stdout 331 +stderr 331 +stdout 332 +stderr 332 +stdout 333 +stderr 333 +stdout 334 +stderr 334 +stdout 335 +stderr 335 +stdout 336 +stderr 336 +stdout 337 +stderr 337 +stdout 338 +stderr 338 +stdout 339 +stderr 339 +stdout 340 +stderr 340 +stdout 341 +stderr 341 +stdout 342 +stderr 342 +stdout 343 +stderr 343 +stdout 344 +stderr 344 +stdout 345 +stderr 345 +stdout 346 +stderr 346 +stdout 347 +stderr 347 +stdout 348 +stderr 348 +stdout 349 +stderr 349 +stdout 350 +stderr 350 +stdout 351 +stderr 351 +stdout 352 +stderr 352 +stdout 353 +stderr 353 +stdout 354 +stderr 354 +stdout 355 +stderr 355 +stdout 356 +stderr 356 +stdout 357 +stderr 357 +stdout 358 +stderr 358 +stdout 359 +stderr 359 +stdout 360 +stderr 360 +stdout 361 +stderr 361 +stdout 362 +stderr 362 +stdout 363 +stderr 363 +stdout 364 +stderr 364 +stdout 365 +stderr 365 +stdout 366 +stderr 366 +stdout 367 +stderr 367 +stdout 368 +stderr 368 +stdout 369 +stderr 369 +stdout 370 +stderr 370 +stdout 371 +stderr 371 +stdout 372 +stderr 372 +stdout 373 +stderr 373 +stdout 374 +stderr 374 +stdout 375 +stderr 375 +stdout 376 +stderr 376 +stdout 377 +stderr 377 +stdout 378 +stderr 378 +stdout 379 +stderr 379 +stdout 380 +stderr 380 +stdout 381 +stderr 381 +stdout 382 +stderr 382 +stdout 383 +stderr 383 +stdout 384 +stderr 384 +stdout 385 +stderr 385 +stdout 386 +stderr 386 +stdout 387 +stderr 387 +stdout 388 +stderr 388 +stdout 389 +stderr 389 +stdout 390 +stderr 390 +stdout 391 +stderr 391 +stdout 392 +stderr 392 +stdout 393 +stderr 393 +stdout 394 +stderr 394 +stdout 395 +stderr 395 +stdout 396 +stderr 396 +stdout 397 +stderr 397 +stdout 398 +stderr 398 +stdout 399 +stderr 399 +stdout 400 +stderr 400 +stdout 401 +stderr 401 +stdout 402 +stderr 402 +stdout 403 +stderr 403 +stdout 404 +stderr 404 +stdout 405 +stderr 405 +stdout 406 +stderr 406 +stdout 407 +stderr 407 +stdout 408 +stderr 408 +stdout 409 +stderr 409 +stdout 410 +stderr 410 +stdout 411 +stderr 411 +stdout 412 +stderr 412 +stdout 413 +stderr 413 +stdout 414 +stderr 414 +stdout 415 +stderr 415 +stdout 416 +stderr 416 +stdout 417 +stderr 417 +stdout 418 +stderr 418 +stdout 419 +stderr 419 +stdout 420 +stderr 420 +stdout 421 +stderr 421 +stdout 422 +stderr 422 +stdout 423 +stderr 423 +stdout 424 +stderr 424 +stdout 425 +stderr 425 +stdout 426 +stderr 426 +stdout 427 +stderr 427 +stdout 428 +stderr 428 +stdout 429 +stderr 429 +stdout 430 +stderr 430 +stdout 431 +stderr 431 +stdout 432 +stderr 432 +stdout 433 +stderr 433 +stdout 434 +stderr 434 +stdout 435 +stderr 435 +stdout 436 +stderr 436 +stdout 437 +stderr 437 +stdout 438 +stderr 438 +stdout 439 +stderr 439 +stdout 440 +stderr 440 +stdout 441 +stderr 441 +stdout 442 +stderr 442 +stdout 443 +stderr 443 +stdout 444 +stderr 444 +stdout 445 +stderr 445 +stdout 446 +stderr 446 +stdout 447 +stderr 447 +stdout 448 +stderr 448 +stdout 449 +stderr 449 +stdout 450 +stderr 450 +stdout 451 +stderr 451 +stdout 452 +stderr 452 +stdout 453 +stderr 453 +stdout 454 +stderr 454 +stdout 455 +stderr 455 +stdout 456 +stderr 456 +stdout 457 +stderr 457 +stdout 458 +stderr 458 +stdout 459 +stderr 459 +stdout 460 +stderr 460 +stdout 461 +stderr 461 +stdout 462 +stderr 462 +stdout 463 +stderr 463 +stdout 464 +stderr 464 +stdout 465 +stderr 465 +stdout 466 +stderr 466 +stdout 467 +stderr 467 +stdout 468 +stderr 468 +stdout 469 +stderr 469 +stdout 470 +stderr 470 +stdout 471 +stderr 471 +stdout 472 +stderr 472 +stdout 473 +stderr 473 +stdout 474 +stderr 474 +stdout 475 +stderr 475 +stdout 476 +stderr 476 +stdout 477 +stderr 477 +stdout 478 +stderr 478 +stdout 479 +stderr 479 +stdout 480 +stderr 480 +stdout 481 +stderr 481 +stdout 482 +stderr 482 +stdout 483 +stderr 483 +stdout 484 +stderr 484 +stdout 485 +stderr 485 +stdout 486 +stderr 486 +stdout 487 +stderr 487 +stdout 488 +stderr 488 +stdout 489 +stderr 489 +stdout 490 +stderr 490 +stdout 491 +stderr 491 +stdout 492 +stderr 492 +stdout 493 +stderr 493 +stdout 494 +stderr 494 +stdout 495 +stderr 495 +stdout 496 +stderr 496 +stdout 497 +stderr 497 +stdout 498 +stderr 498 +stdout 499 +stderr 499 +stdout 500 +stderr 500 +stdout 501 +stderr 501 +stdout 502 +stderr 502 +stdout 503 +stderr 503 +stdout 504 +stderr 504 +stdout 505 +stderr 505 +stdout 506 +stderr 506 +stdout 507 +stderr 507 +stdout 508 +stderr 508 +stdout 509 +stderr 509 +stdout 510 +stderr 510 +stdout 511 +stderr 511 +stdout 512 +stderr 512 +stdout 513 +stderr 513 +stdout 514 +stderr 514 +stdout 515 +stderr 515 +stdout 516 +stderr 516 +stdout 517 +stderr 517 +stdout 518 +stderr 518 +stdout 519 +stderr 519 +stdout 520 +stderr 520 +stdout 521 +stderr 521 +stdout 522 +stderr 522 +stdout 523 +stderr 523 +stdout 524 +stderr 524 +stdout 525 +stderr 525 +stdout 526 +stderr 526 +stdout 527 +stderr 527 +stdout 528 +stderr 528 +stdout 529 +stderr 529 +stdout 530 +stderr 530 +stdout 531 +stderr 531 +stdout 532 +stderr 532 +stdout 533 +stderr 533 +stdout 534 +stderr 534 +stdout 535 +stderr 535 +stdout 536 +stderr 536 +stdout 537 +stderr 537 +stdout 538 +stderr 538 +stdout 539 +stderr 539 +stdout 540 +stderr 540 +stdout 541 +stderr 541 +stdout 542 +stderr 542 +stdout 543 +stderr 543 +stdout 544 +stderr 544 +stdout 545 +stderr 545 +stdout 546 +stderr 546 +stdout 547 +stderr 547 +stdout 548 +stderr 548 +stdout 549 +stderr 549 +stdout 550 +stderr 550 +stdout 551 +stderr 551 +stdout 552 +stderr 552 +stdout 553 +stderr 553 +stdout 554 +stderr 554 +stdout 555 +stderr 555 +stdout 556 +stderr 556 +stdout 557 +stderr 557 +stdout 558 +stderr 558 +stdout 559 +stderr 559 +stdout 560 +stderr 560 +stdout 561 +stderr 561 +stdout 562 +stderr 562 +stdout 563 +stderr 563 +stdout 564 +stderr 564 +stdout 565 +stderr 565 +stdout 566 +stderr 566 +stdout 567 +stderr 567 +stdout 568 +stderr 568 +stdout 569 +stderr 569 +stdout 570 +stderr 570 +stdout 571 +stderr 571 +stdout 572 +stderr 572 +stdout 573 +stderr 573 +stdout 574 +stderr 574 +stdout 575 +stderr 575 +stdout 576 +stderr 576 +stdout 577 +stderr 577 +stdout 578 +stderr 578 +stdout 579 +stderr 579 +stdout 580 +stderr 580 +stdout 581 +stderr 581 +stdout 582 +stderr 582 +stdout 583 +stderr 583 +stdout 584 +stderr 584 +stdout 585 +stderr 585 +stdout 586 +stderr 586 +stdout 587 +stderr 587 +stdout 588 +stderr 588 +stdout 589 +stderr 589 +stdout 590 +stderr 590 +stdout 591 +stderr 591 +stdout 592 +stderr 592 +stdout 593 +stderr 593 +stdout 594 +stderr 594 +stdout 595 +stderr 595 +stdout 596 +stderr 596 +stdout 597 +stderr 597 +stdout 598 +stderr 598 +stdout 599 +stderr 599 +stdout 600 +stderr 600 +stdout 601 +stderr 601 +stdout 602 +stderr 602 +stdout 603 +stderr 603 +stdout 604 +stderr 604 +stdout 605 +stderr 605 +stdout 606 +stderr 606 +stdout 607 +stderr 607 +stdout 608 +stderr 608 +stdout 609 +stderr 609 +stdout 610 +stderr 610 +stdout 611 +stderr 611 +stdout 612 +stderr 612 +stdout 613 +stderr 613 +stdout 614 +stderr 614 +stdout 615 +stderr 615 +stdout 616 +stderr 616 +stdout 617 +stderr 617 +stdout 618 +stderr 618 +stdout 619 +stderr 619 +stdout 620 +stderr 620 +stdout 621 +stderr 621 +stdout 622 +stderr 622 +stdout 623 +stderr 623 +stdout 624 +stderr 624 +stdout 625 +stderr 625 +stdout 626 +stderr 626 +stdout 627 +stderr 627 +stdout 628 +stderr 628 +stdout 629 +stderr 629 +stdout 630 +stderr 630 +stdout 631 +stderr 631 +stdout 632 +stderr 632 +stdout 633 +stderr 633 +stdout 634 +stderr 634 +stdout 635 +stderr 635 +stdout 636 +stderr 636 +stdout 637 +stderr 637 +stdout 638 +stderr 638 +stdout 639 +stderr 639 +stdout 640 +stderr 640 +stdout 641 +stderr 641 +stdout 642 +stderr 642 +stdout 643 +stderr 643 +stdout 644 +stderr 644 +stdout 645 +stderr 645 +stdout 646 +stderr 646 +stdout 647 +stderr 647 +stdout 648 +stderr 648 +stdout 649 +stderr 649 +stdout 650 +stderr 650 +stdout 651 +stderr 651 +stdout 652 +stderr 652 +stdout 653 +stderr 653 +stdout 654 +stderr 654 +stdout 655 +stderr 655 +stdout 656 +stderr 656 +stdout 657 +stderr 657 +stdout 658 +stderr 658 +stdout 659 +stderr 659 +stdout 660 +stderr 660 +stdout 661 +stderr 661 +stdout 662 +stderr 662 +stdout 663 +stderr 663 +stdout 664 +stderr 664 +stdout 665 +stderr 665 +stdout 666 +stderr 666 +stdout 667 +stderr 667 +stdout 668 +stderr 668 +stdout 669 +stderr 669 +stdout 670 +stderr 670 +stdout 671 +stderr 671 +stdout 672 +stderr 672 +stdout 673 +stderr 673 +stdout 674 +stderr 674 +stdout 675 +stderr 675 +stdout 676 +stderr 676 +stdout 677 +stderr 677 +stdout 678 +stderr 678 +stdout 679 +stderr 679 +stdout 680 +stderr 680 +stdout 681 +stderr 681 +stdout 682 +stderr 682 +stdout 683 +stderr 683 +stdout 684 +stderr 684 +stdout 685 +stderr 685 +stdout 686 +stderr 686 +stdout 687 +stderr 687 +stdout 688 +stderr 688 +stdout 689 +stderr 689 +stdout 690 +stderr 690 +stdout 691 +stderr 691 +stdout 692 +stderr 692 +stdout 693 +stderr 693 +stdout 694 +stderr 694 +stdout 695 +stderr 695 +stdout 696 +stderr 696 +stdout 697 +stderr 697 +stdout 698 +stderr 698 +stdout 699 +stderr 699 +stdout 700 +stderr 700 +stdout 701 +stderr 701 +stdout 702 +stderr 702 +stdout 703 +stderr 703 +stdout 704 +stderr 704 +stdout 705 +stderr 705 +stdout 706 +stderr 706 +stdout 707 +stderr 707 +stdout 708 +stderr 708 +stdout 709 +stderr 709 +stdout 710 +stderr 710 +stdout 711 +stderr 711 +stdout 712 +stderr 712 +stdout 713 +stderr 713 +stdout 714 +stderr 714 +stdout 715 +stderr 715 +stdout 716 +stderr 716 +stdout 717 +stderr 717 +stdout 718 +stderr 718 +stdout 719 +stderr 719 +stdout 720 +stderr 720 +stdout 721 +stderr 721 +stdout 722 +stderr 722 +stdout 723 +stderr 723 +stdout 724 +stderr 724 +stdout 725 +stderr 725 +stdout 726 +stderr 726 +stdout 727 +stderr 727 +stdout 728 +stderr 728 +stdout 729 +stderr 729 +stdout 730 +stderr 730 +stdout 731 +stderr 731 +stdout 732 +stderr 732 +stdout 733 +stderr 733 +stdout 734 +stderr 734 +stdout 735 +stderr 735 +stdout 736 +stderr 736 +stdout 737 +stderr 737 +stdout 738 +stderr 738 +stdout 739 +stderr 739 +stdout 740 +stderr 740 +stdout 741 +stderr 741 +stdout 742 +stderr 742 +stdout 743 +stderr 743 +stdout 744 +stderr 744 +stdout 745 +stderr 745 +stdout 746 +stderr 746 +stdout 747 +stderr 747 +stdout 748 +stderr 748 +stdout 749 +stderr 749 +stdout 750 +stderr 750 +stdout 751 +stderr 751 +stdout 752 +stderr 752 +stdout 753 +stderr 753 +stdout 754 +stderr 754 +stdout 755 +stderr 755 +stdout 756 +stderr 756 +stdout 757 +stderr 757 +stdout 758 +stderr 758 +stdout 759 +stderr 759 +stdout 760 +stderr 760 +stdout 761 +stderr 761 +stdout 762 +stderr 762 +stdout 763 +stderr 763 +stdout 764 +stderr 764 +stdout 765 +stderr 765 +stdout 766 +stderr 766 +stdout 767 +stderr 767 +stdout 768 +stderr 768 +stdout 769 +stderr 769 +stdout 770 +stderr 770 +stdout 771 +stderr 771 +stdout 772 +stderr 772 +stdout 773 +stderr 773 +stdout 774 +stderr 774 +stdout 775 +stderr 775 +stdout 776 +stderr 776 +stdout 777 +stderr 777 +stdout 778 +stderr 778 +stdout 779 +stderr 779 +stdout 780 +stderr 780 +stdout 781 +stderr 781 +stdout 782 +stderr 782 +stdout 783 +stderr 783 +stdout 784 +stderr 784 +stdout 785 +stderr 785 +stdout 786 +stderr 786 +stdout 787 +stderr 787 +stdout 788 +stderr 788 +stdout 789 +stderr 789 +stdout 790 +stderr 790 +stdout 791 +stderr 791 +stdout 792 +stderr 792 +stdout 793 +stderr 793 +stdout 794 +stderr 794 +stdout 795 +stderr 795 +stdout 796 +stderr 796 +stdout 797 +stderr 797 +stdout 798 +stderr 798 +stdout 799 +stderr 799 +stdout 800 +stderr 800 +stdout 801 +stderr 801 +stdout 802 +stderr 802 +stdout 803 +stderr 803 +stdout 804 +stderr 804 +stdout 805 +stderr 805 +stdout 806 +stderr 806 +stdout 807 +stderr 807 +stdout 808 +stderr 808 +stdout 809 +stderr 809 +stdout 810 +stderr 810 +stdout 811 +stderr 811 +stdout 812 +stderr 812 +stdout 813 +stderr 813 +stdout 814 +stderr 814 +stdout 815 +stderr 815 +stdout 816 +stderr 816 +stdout 817 +stderr 817 +stdout 818 +stderr 818 +stdout 819 +stderr 819 +stdout 820 +stderr 820 +stdout 821 +stderr 821 +stdout 822 +stderr 822 +stdout 823 +stderr 823 +stdout 824 +stderr 824 +stdout 825 +stderr 825 +stdout 826 +stderr 826 +stdout 827 +stderr 827 +stdout 828 +stderr 828 +stdout 829 +stderr 829 +stdout 830 +stderr 830 +stdout 831 +stderr 831 +stdout 832 +stderr 832 +stdout 833 +stderr 833 +stdout 834 +stderr 834 +stdout 835 +stderr 835 +stdout 836 +stderr 836 +stdout 837 +stderr 837 +stdout 838 +stderr 838 +stdout 839 +stderr 839 +stdout 840 +stderr 840 +stdout 841 +stderr 841 +stdout 842 +stderr 842 +stdout 843 +stderr 843 +stdout 844 +stderr 844 +stdout 845 +stderr 845 +stdout 846 +stderr 846 +stdout 847 +stderr 847 +stdout 848 +stderr 848 +stdout 849 +stderr 849 +stdout 850 +stderr 850 +stdout 851 +stderr 851 +stdout 852 +stderr 852 +stdout 853 +stderr 853 +stdout 854 +stderr 854 +stdout 855 +stderr 855 +stdout 856 +stderr 856 +stdout 857 +stderr 857 +stdout 858 +stderr 858 +stdout 859 +stderr 859 +stdout 860 +stderr 860 +stdout 861 +stderr 861 +stdout 862 +stderr 862 +stdout 863 +stderr 863 +stdout 864 +stderr 864 +stdout 865 +stderr 865 +stdout 866 +stderr 866 +stdout 867 +stderr 867 +stdout 868 +stderr 868 +stdout 869 +stderr 869 +stdout 870 +stderr 870 +stdout 871 +stderr 871 +stdout 872 +stderr 872 +stdout 873 +stderr 873 +stdout 874 +stderr 874 +stdout 875 +stderr 875 +stdout 876 +stderr 876 +stdout 877 +stderr 877 +stdout 878 +stderr 878 +stdout 879 +stderr 879 +stdout 880 +stderr 880 +stdout 881 +stderr 881 +stdout 882 +stderr 882 +stdout 883 +stderr 883 +stdout 884 +stderr 884 +stdout 885 +stderr 885 +stdout 886 +stderr 886 +stdout 887 +stderr 887 +stdout 888 +stderr 888 +stdout 889 +stderr 889 +stdout 890 +stderr 890 +stdout 891 +stderr 891 +stdout 892 +stderr 892 +stdout 893 +stderr 893 +stdout 894 +stderr 894 +stdout 895 +stderr 895 +stdout 896 +stderr 896 +stdout 897 +stderr 897 +stdout 898 +stderr 898 +stdout 899 +stderr 899 +stdout 900 +stderr 900 +stdout 901 +stderr 901 +stdout 902 +stderr 902 +stdout 903 +stderr 903 +stdout 904 +stderr 904 +stdout 905 +stderr 905 +stdout 906 +stderr 906 +stdout 907 +stderr 907 +stdout 908 +stderr 908 +stdout 909 +stderr 909 +stdout 910 +stderr 910 +stdout 911 +stderr 911 +stdout 912 +stderr 912 +stdout 913 +stderr 913 +stdout 914 +stderr 914 +stdout 915 +stderr 915 +stdout 916 +stderr 916 +stdout 917 +stderr 917 +stdout 918 +stderr 918 +stdout 919 +stderr 919 +stdout 920 +stderr 920 +stdout 921 +stderr 921 +stdout 922 +stderr 922 +stdout 923 +stderr 923 +stdout 924 +stderr 924 +stdout 925 +stderr 925 +stdout 926 +stderr 926 +stdout 927 +stderr 927 +stdout 928 +stderr 928 +stdout 929 +stderr 929 +stdout 930 +stderr 930 +stdout 931 +stderr 931 +stdout 932 +stderr 932 +stdout 933 +stderr 933 +stdout 934 +stderr 934 +stdout 935 +stderr 935 +stdout 936 +stderr 936 +stdout 937 +stderr 937 +stdout 938 +stderr 938 +stdout 939 +stderr 939 +stdout 940 +stderr 940 +stdout 941 +stderr 941 +stdout 942 +stderr 942 +stdout 943 +stderr 943 +stdout 944 +stderr 944 +stdout 945 +stderr 945 +stdout 946 +stderr 946 +stdout 947 +stderr 947 +stdout 948 +stderr 948 +stdout 949 +stderr 949 +stdout 950 +stderr 950 +stdout 951 +stderr 951 +stdout 952 +stderr 952 +stdout 953 +stderr 953 +stdout 954 +stderr 954 +stdout 955 +stderr 955 +stdout 956 +stderr 956 +stdout 957 +stderr 957 +stdout 958 +stderr 958 +stdout 959 +stderr 959 +stdout 960 +stderr 960 +stdout 961 +stderr 961 +stdout 962 +stderr 962 +stdout 963 +stderr 963 +stdout 964 +stderr 964 +stdout 965 +stderr 965 +stdout 966 +stderr 966 +stdout 967 +stderr 967 +stdout 968 +stderr 968 +stdout 969 +stderr 969 +stdout 970 +stderr 970 +stdout 971 +stderr 971 +stdout 972 +stderr 972 +stdout 973 +stderr 973 +stdout 974 +stderr 974 +stdout 975 +stderr 975 +stdout 976 +stderr 976 +stdout 977 +stderr 977 +stdout 978 +stderr 978 +stdout 979 +stderr 979 +stdout 980 +stderr 980 +stdout 981 +stderr 981 +stdout 982 +stderr 982 +stdout 983 +stderr 983 +stdout 984 +stderr 984 +stdout 985 +stderr 985 +stdout 986 +stderr 986 +stdout 987 +stderr 987 +stdout 988 +stderr 988 +stdout 989 +stderr 989 +stdout 990 +stderr 990 +stdout 991 +stderr 991 +stdout 992 +stderr 992 +stdout 993 +stderr 993 +stdout 994 +stderr 994 +stdout 995 +stderr 995 +stdout 996 +stderr 996 +stdout 997 +stderr 997 +stdout 998 +stderr 998 +stdout 999 +stderr 999 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/1000-stdout.txt b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/1000-stdout.txt new file mode 100644 index 00000000..d3649d00 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/1000-stdout.txt @@ -0,0 +1,1000 @@ +stdout 0 +stdout 1 +stdout 2 +stdout 3 +stdout 4 +stdout 5 +stdout 6 +stdout 7 +stdout 8 +stdout 9 +stdout 10 +stdout 11 +stdout 12 +stdout 13 +stdout 14 +stdout 15 +stdout 16 +stdout 17 +stdout 18 +stdout 19 +stdout 20 +stdout 21 +stdout 22 +stdout 23 +stdout 24 +stdout 25 +stdout 26 +stdout 27 +stdout 28 +stdout 29 +stdout 30 +stdout 31 +stdout 32 +stdout 33 +stdout 34 +stdout 35 +stdout 36 +stdout 37 +stdout 38 +stdout 39 +stdout 40 +stdout 41 +stdout 42 +stdout 43 +stdout 44 +stdout 45 +stdout 46 +stdout 47 +stdout 48 +stdout 49 +stdout 50 +stdout 51 +stdout 52 +stdout 53 +stdout 54 +stdout 55 +stdout 56 +stdout 57 +stdout 58 +stdout 59 +stdout 60 +stdout 61 +stdout 62 +stdout 63 +stdout 64 +stdout 65 +stdout 66 +stdout 67 +stdout 68 +stdout 69 +stdout 70 +stdout 71 +stdout 72 +stdout 73 +stdout 74 +stdout 75 +stdout 76 +stdout 77 +stdout 78 +stdout 79 +stdout 80 +stdout 81 +stdout 82 +stdout 83 +stdout 84 +stdout 85 +stdout 86 +stdout 87 +stdout 88 +stdout 89 +stdout 90 +stdout 91 +stdout 92 +stdout 93 +stdout 94 +stdout 95 +stdout 96 +stdout 97 +stdout 98 +stdout 99 +stdout 100 +stdout 101 +stdout 102 +stdout 103 +stdout 104 +stdout 105 +stdout 106 +stdout 107 +stdout 108 +stdout 109 +stdout 110 +stdout 111 +stdout 112 +stdout 113 +stdout 114 +stdout 115 +stdout 116 +stdout 117 +stdout 118 +stdout 119 +stdout 120 +stdout 121 +stdout 122 +stdout 123 +stdout 124 +stdout 125 +stdout 126 +stdout 127 +stdout 128 +stdout 129 +stdout 130 +stdout 131 +stdout 132 +stdout 133 +stdout 134 +stdout 135 +stdout 136 +stdout 137 +stdout 138 +stdout 139 +stdout 140 +stdout 141 +stdout 142 +stdout 143 +stdout 144 +stdout 145 +stdout 146 +stdout 147 +stdout 148 +stdout 149 +stdout 150 +stdout 151 +stdout 152 +stdout 153 +stdout 154 +stdout 155 +stdout 156 +stdout 157 +stdout 158 +stdout 159 +stdout 160 +stdout 161 +stdout 162 +stdout 163 +stdout 164 +stdout 165 +stdout 166 +stdout 167 +stdout 168 +stdout 169 +stdout 170 +stdout 171 +stdout 172 +stdout 173 +stdout 174 +stdout 175 +stdout 176 +stdout 177 +stdout 178 +stdout 179 +stdout 180 +stdout 181 +stdout 182 +stdout 183 +stdout 184 +stdout 185 +stdout 186 +stdout 187 +stdout 188 +stdout 189 +stdout 190 +stdout 191 +stdout 192 +stdout 193 +stdout 194 +stdout 195 +stdout 196 +stdout 197 +stdout 198 +stdout 199 +stdout 200 +stdout 201 +stdout 202 +stdout 203 +stdout 204 +stdout 205 +stdout 206 +stdout 207 +stdout 208 +stdout 209 +stdout 210 +stdout 211 +stdout 212 +stdout 213 +stdout 214 +stdout 215 +stdout 216 +stdout 217 +stdout 218 +stdout 219 +stdout 220 +stdout 221 +stdout 222 +stdout 223 +stdout 224 +stdout 225 +stdout 226 +stdout 227 +stdout 228 +stdout 229 +stdout 230 +stdout 231 +stdout 232 +stdout 233 +stdout 234 +stdout 235 +stdout 236 +stdout 237 +stdout 238 +stdout 239 +stdout 240 +stdout 241 +stdout 242 +stdout 243 +stdout 244 +stdout 245 +stdout 246 +stdout 247 +stdout 248 +stdout 249 +stdout 250 +stdout 251 +stdout 252 +stdout 253 +stdout 254 +stdout 255 +stdout 256 +stdout 257 +stdout 258 +stdout 259 +stdout 260 +stdout 261 +stdout 262 +stdout 263 +stdout 264 +stdout 265 +stdout 266 +stdout 267 +stdout 268 +stdout 269 +stdout 270 +stdout 271 +stdout 272 +stdout 273 +stdout 274 +stdout 275 +stdout 276 +stdout 277 +stdout 278 +stdout 279 +stdout 280 +stdout 281 +stdout 282 +stdout 283 +stdout 284 +stdout 285 +stdout 286 +stdout 287 +stdout 288 +stdout 289 +stdout 290 +stdout 291 +stdout 292 +stdout 293 +stdout 294 +stdout 295 +stdout 296 +stdout 297 +stdout 298 +stdout 299 +stdout 300 +stdout 301 +stdout 302 +stdout 303 +stdout 304 +stdout 305 +stdout 306 +stdout 307 +stdout 308 +stdout 309 +stdout 310 +stdout 311 +stdout 312 +stdout 313 +stdout 314 +stdout 315 +stdout 316 +stdout 317 +stdout 318 +stdout 319 +stdout 320 +stdout 321 +stdout 322 +stdout 323 +stdout 324 +stdout 325 +stdout 326 +stdout 327 +stdout 328 +stdout 329 +stdout 330 +stdout 331 +stdout 332 +stdout 333 +stdout 334 +stdout 335 +stdout 336 +stdout 337 +stdout 338 +stdout 339 +stdout 340 +stdout 341 +stdout 342 +stdout 343 +stdout 344 +stdout 345 +stdout 346 +stdout 347 +stdout 348 +stdout 349 +stdout 350 +stdout 351 +stdout 352 +stdout 353 +stdout 354 +stdout 355 +stdout 356 +stdout 357 +stdout 358 +stdout 359 +stdout 360 +stdout 361 +stdout 362 +stdout 363 +stdout 364 +stdout 365 +stdout 366 +stdout 367 +stdout 368 +stdout 369 +stdout 370 +stdout 371 +stdout 372 +stdout 373 +stdout 374 +stdout 375 +stdout 376 +stdout 377 +stdout 378 +stdout 379 +stdout 380 +stdout 381 +stdout 382 +stdout 383 +stdout 384 +stdout 385 +stdout 386 +stdout 387 +stdout 388 +stdout 389 +stdout 390 +stdout 391 +stdout 392 +stdout 393 +stdout 394 +stdout 395 +stdout 396 +stdout 397 +stdout 398 +stdout 399 +stdout 400 +stdout 401 +stdout 402 +stdout 403 +stdout 404 +stdout 405 +stdout 406 +stdout 407 +stdout 408 +stdout 409 +stdout 410 +stdout 411 +stdout 412 +stdout 413 +stdout 414 +stdout 415 +stdout 416 +stdout 417 +stdout 418 +stdout 419 +stdout 420 +stdout 421 +stdout 422 +stdout 423 +stdout 424 +stdout 425 +stdout 426 +stdout 427 +stdout 428 +stdout 429 +stdout 430 +stdout 431 +stdout 432 +stdout 433 +stdout 434 +stdout 435 +stdout 436 +stdout 437 +stdout 438 +stdout 439 +stdout 440 +stdout 441 +stdout 442 +stdout 443 +stdout 444 +stdout 445 +stdout 446 +stdout 447 +stdout 448 +stdout 449 +stdout 450 +stdout 451 +stdout 452 +stdout 453 +stdout 454 +stdout 455 +stdout 456 +stdout 457 +stdout 458 +stdout 459 +stdout 460 +stdout 461 +stdout 462 +stdout 463 +stdout 464 +stdout 465 +stdout 466 +stdout 467 +stdout 468 +stdout 469 +stdout 470 +stdout 471 +stdout 472 +stdout 473 +stdout 474 +stdout 475 +stdout 476 +stdout 477 +stdout 478 +stdout 479 +stdout 480 +stdout 481 +stdout 482 +stdout 483 +stdout 484 +stdout 485 +stdout 486 +stdout 487 +stdout 488 +stdout 489 +stdout 490 +stdout 491 +stdout 492 +stdout 493 +stdout 494 +stdout 495 +stdout 496 +stdout 497 +stdout 498 +stdout 499 +stdout 500 +stdout 501 +stdout 502 +stdout 503 +stdout 504 +stdout 505 +stdout 506 +stdout 507 +stdout 508 +stdout 509 +stdout 510 +stdout 511 +stdout 512 +stdout 513 +stdout 514 +stdout 515 +stdout 516 +stdout 517 +stdout 518 +stdout 519 +stdout 520 +stdout 521 +stdout 522 +stdout 523 +stdout 524 +stdout 525 +stdout 526 +stdout 527 +stdout 528 +stdout 529 +stdout 530 +stdout 531 +stdout 532 +stdout 533 +stdout 534 +stdout 535 +stdout 536 +stdout 537 +stdout 538 +stdout 539 +stdout 540 +stdout 541 +stdout 542 +stdout 543 +stdout 544 +stdout 545 +stdout 546 +stdout 547 +stdout 548 +stdout 549 +stdout 550 +stdout 551 +stdout 552 +stdout 553 +stdout 554 +stdout 555 +stdout 556 +stdout 557 +stdout 558 +stdout 559 +stdout 560 +stdout 561 +stdout 562 +stdout 563 +stdout 564 +stdout 565 +stdout 566 +stdout 567 +stdout 568 +stdout 569 +stdout 570 +stdout 571 +stdout 572 +stdout 573 +stdout 574 +stdout 575 +stdout 576 +stdout 577 +stdout 578 +stdout 579 +stdout 580 +stdout 581 +stdout 582 +stdout 583 +stdout 584 +stdout 585 +stdout 586 +stdout 587 +stdout 588 +stdout 589 +stdout 590 +stdout 591 +stdout 592 +stdout 593 +stdout 594 +stdout 595 +stdout 596 +stdout 597 +stdout 598 +stdout 599 +stdout 600 +stdout 601 +stdout 602 +stdout 603 +stdout 604 +stdout 605 +stdout 606 +stdout 607 +stdout 608 +stdout 609 +stdout 610 +stdout 611 +stdout 612 +stdout 613 +stdout 614 +stdout 615 +stdout 616 +stdout 617 +stdout 618 +stdout 619 +stdout 620 +stdout 621 +stdout 622 +stdout 623 +stdout 624 +stdout 625 +stdout 626 +stdout 627 +stdout 628 +stdout 629 +stdout 630 +stdout 631 +stdout 632 +stdout 633 +stdout 634 +stdout 635 +stdout 636 +stdout 637 +stdout 638 +stdout 639 +stdout 640 +stdout 641 +stdout 642 +stdout 643 +stdout 644 +stdout 645 +stdout 646 +stdout 647 +stdout 648 +stdout 649 +stdout 650 +stdout 651 +stdout 652 +stdout 653 +stdout 654 +stdout 655 +stdout 656 +stdout 657 +stdout 658 +stdout 659 +stdout 660 +stdout 661 +stdout 662 +stdout 663 +stdout 664 +stdout 665 +stdout 666 +stdout 667 +stdout 668 +stdout 669 +stdout 670 +stdout 671 +stdout 672 +stdout 673 +stdout 674 +stdout 675 +stdout 676 +stdout 677 +stdout 678 +stdout 679 +stdout 680 +stdout 681 +stdout 682 +stdout 683 +stdout 684 +stdout 685 +stdout 686 +stdout 687 +stdout 688 +stdout 689 +stdout 690 +stdout 691 +stdout 692 +stdout 693 +stdout 694 +stdout 695 +stdout 696 +stdout 697 +stdout 698 +stdout 699 +stdout 700 +stdout 701 +stdout 702 +stdout 703 +stdout 704 +stdout 705 +stdout 706 +stdout 707 +stdout 708 +stdout 709 +stdout 710 +stdout 711 +stdout 712 +stdout 713 +stdout 714 +stdout 715 +stdout 716 +stdout 717 +stdout 718 +stdout 719 +stdout 720 +stdout 721 +stdout 722 +stdout 723 +stdout 724 +stdout 725 +stdout 726 +stdout 727 +stdout 728 +stdout 729 +stdout 730 +stdout 731 +stdout 732 +stdout 733 +stdout 734 +stdout 735 +stdout 736 +stdout 737 +stdout 738 +stdout 739 +stdout 740 +stdout 741 +stdout 742 +stdout 743 +stdout 744 +stdout 745 +stdout 746 +stdout 747 +stdout 748 +stdout 749 +stdout 750 +stdout 751 +stdout 752 +stdout 753 +stdout 754 +stdout 755 +stdout 756 +stdout 757 +stdout 758 +stdout 759 +stdout 760 +stdout 761 +stdout 762 +stdout 763 +stdout 764 +stdout 765 +stdout 766 +stdout 767 +stdout 768 +stdout 769 +stdout 770 +stdout 771 +stdout 772 +stdout 773 +stdout 774 +stdout 775 +stdout 776 +stdout 777 +stdout 778 +stdout 779 +stdout 780 +stdout 781 +stdout 782 +stdout 783 +stdout 784 +stdout 785 +stdout 786 +stdout 787 +stdout 788 +stdout 789 +stdout 790 +stdout 791 +stdout 792 +stdout 793 +stdout 794 +stdout 795 +stdout 796 +stdout 797 +stdout 798 +stdout 799 +stdout 800 +stdout 801 +stdout 802 +stdout 803 +stdout 804 +stdout 805 +stdout 806 +stdout 807 +stdout 808 +stdout 809 +stdout 810 +stdout 811 +stdout 812 +stdout 813 +stdout 814 +stdout 815 +stdout 816 +stdout 817 +stdout 818 +stdout 819 +stdout 820 +stdout 821 +stdout 822 +stdout 823 +stdout 824 +stdout 825 +stdout 826 +stdout 827 +stdout 828 +stdout 829 +stdout 830 +stdout 831 +stdout 832 +stdout 833 +stdout 834 +stdout 835 +stdout 836 +stdout 837 +stdout 838 +stdout 839 +stdout 840 +stdout 841 +stdout 842 +stdout 843 +stdout 844 +stdout 845 +stdout 846 +stdout 847 +stdout 848 +stdout 849 +stdout 850 +stdout 851 +stdout 852 +stdout 853 +stdout 854 +stdout 855 +stdout 856 +stdout 857 +stdout 858 +stdout 859 +stdout 860 +stdout 861 +stdout 862 +stdout 863 +stdout 864 +stdout 865 +stdout 866 +stdout 867 +stdout 868 +stdout 869 +stdout 870 +stdout 871 +stdout 872 +stdout 873 +stdout 874 +stdout 875 +stdout 876 +stdout 877 +stdout 878 +stdout 879 +stdout 880 +stdout 881 +stdout 882 +stdout 883 +stdout 884 +stdout 885 +stdout 886 +stdout 887 +stdout 888 +stdout 889 +stdout 890 +stdout 891 +stdout 892 +stdout 893 +stdout 894 +stdout 895 +stdout 896 +stdout 897 +stdout 898 +stdout 899 +stdout 900 +stdout 901 +stdout 902 +stdout 903 +stdout 904 +stdout 905 +stdout 906 +stdout 907 +stdout 908 +stdout 909 +stdout 910 +stdout 911 +stdout 912 +stdout 913 +stdout 914 +stdout 915 +stdout 916 +stdout 917 +stdout 918 +stdout 919 +stdout 920 +stdout 921 +stdout 922 +stdout 923 +stdout 924 +stdout 925 +stdout 926 +stdout 927 +stdout 928 +stdout 929 +stdout 930 +stdout 931 +stdout 932 +stdout 933 +stdout 934 +stdout 935 +stdout 936 +stdout 937 +stdout 938 +stdout 939 +stdout 940 +stdout 941 +stdout 942 +stdout 943 +stdout 944 +stdout 945 +stdout 946 +stdout 947 +stdout 948 +stdout 949 +stdout 950 +stdout 951 +stdout 952 +stdout 953 +stdout 954 +stdout 955 +stdout 956 +stdout 957 +stdout 958 +stdout 959 +stdout 960 +stdout 961 +stdout 962 +stdout 963 +stdout 964 +stdout 965 +stdout 966 +stdout 967 +stdout 968 +stdout 969 +stdout 970 +stdout 971 +stdout 972 +stdout 973 +stdout 974 +stdout 975 +stdout 976 +stdout 977 +stdout 978 +stdout 979 +stdout 980 +stdout 981 +stdout 982 +stdout 983 +stdout 984 +stdout 985 +stdout 986 +stdout 987 +stdout 988 +stdout 989 +stdout 990 +stdout 991 +stdout 992 +stdout 993 +stdout 994 +stdout 995 +stdout 996 +stdout 997 +stdout 998 +stdout 999 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/create-files.sh b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/create-files.sh new file mode 100644 index 00000000..6a526de0 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/create-files.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +rm 10*.txt +for n in 10 100 1000; do + node log.js 0 $n stdout stderr &> $n-stdout-stderr.txt + node log.js 0 $n stdout &> $n-stdout.txt + node log.js 0 $n stderr &> $n-stderr.txt +done diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/log-broken.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/log-broken.js new file mode 100644 index 00000000..74c8f120 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/log-broken.js @@ -0,0 +1,23 @@ +var errorCode = process.argv[2]; +var max = process.argv[3]; +var modes = process.argv.slice(4); + +function stdout(message) { + if (modes.indexOf('stdout') === -1) { return; } + process.stdout.write('stdout ' + message + '\n'); +} + +function stderr(message) { + if (modes.indexOf('stderr') === -1) { return; } + process.stderr.write('stderr ' + message + '\n'); +} + +for (var i = 0; i < max; i++) { + stdout(i); + stderr(i); +} + +process.exit(errorCode); + +stdout('fail'); +stderr('fail'); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/log.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/log.js new file mode 100644 index 00000000..8a9ed9a4 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/exit/test/fixtures/log.js @@ -0,0 +1,25 @@ +var exit = require('../../lib/exit'); + +var errorCode = process.argv[2]; +var max = process.argv[3]; +var modes = process.argv.slice(4); + +function stdout(message) { + if (modes.indexOf('stdout') === -1) { return; } + process.stdout.write('stdout ' + message + '\n'); +} + +function stderr(message) { + if (modes.indexOf('stderr') === -1) { return; } + process.stderr.write('stderr ' + message + '\n'); +} + +for (var i = 0; i < max; i++) { + stdout(i); + stderr(i); +} + +exit(errorCode); + +stdout('fail'); +stderr('fail'); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/.npmignore new file mode 100644 index 00000000..3c3629e6 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/README.md new file mode 100644 index 00000000..c5c3d9ab --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/README.md @@ -0,0 +1,142 @@ +# express-session + +Setup session store with the given `options`. + +Session data is _not_ saved in the cookie itself, however +cookies are used, so we must use the [cookieParser()](cookieParser.html) +middleware _before_ `session()`. + +## Example + +```js + app.use(connect.cookieParser()) + app.use(connect.session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }})) +``` + +**Options** + + - `key` cookie name defaulting to `connect.sid` + - `store` session store instance + - `secret` session cookie is signed with this secret to prevent tampering + - `cookie` session cookie settings, defaulting to `{ path: '/', httpOnly: true, maxAge: null }` + - `proxy` trust the reverse proxy when setting secure cookies (via "x-forwarded-proto") + +**Cookie options** + +By default `cookie.maxAge` is `null`, meaning no "expires" parameter is set +so the cookie becomes a browser-session cookie. When the user closes the +browser the cookie (and session) will be removed. + +## req.session + +To store or access session data, simply use the request property `req.session`, +which is (generally) serialized as JSON by the store, so nested objects +are typically fine. For example below is a user-specific view counter: + +```js +app.use(cookieParser()) +app.use(session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }})) + +app.use(function(req, res, next){ + var sess = req.session; + if (sess.views) { + res.setHeader('Content-Type', 'text/html'); + res.write('

views: ' + sess.views + '

'); + res.write('

expires in: ' + (sess.cookie.maxAge / 1000) + 's

'); + res.end(); + sess.views++; + } else { + sess.views = 1; + res.end('welcome to the session demo. refresh!'); + } +}) +``` + +## Session#regenerate() + +To regenerate the session simply invoke the method, once complete +a new SID and `Session` instance will be initialized at `req.session`. + +```js +req.session.regenerate(function(err){ + // will have a new session here +}); +``` + +## Session#destroy() + +Destroys the session, removing `req.session`, will be re-generated next request. + +```js +req.session.destroy(function(err){ + // cannot access session here +}); +``` + +## Session#reload() + +Reloads the session data. + +```js +req.session.reload(function(err){ + // session updated +}); +``` + +## Session#save() + +Save the session. + +```js +req.session.save(function(err){ + // session saved +}); +``` + +## Session#touch() + +Updates the `.maxAge` property. Typically this is +not necessary to call, as the session middleware does this for you. + +## Session#cookie + +Each session has a unique cookie object accompany it. This allows +you to alter the session cookie per visitor. For example we can +set `req.session.cookie.expires` to `false` to enable the cookie +to remain for only the duration of the user-agent. + +## Session#maxAge + +Alternatively `req.session.cookie.maxAge` will return the time +remaining in milliseconds, which we may also re-assign a new value +to adjust the `.expires` property appropriately. The following +are essentially equivalent + +```js +var hour = 3600000; +req.session.cookie.expires = new Date(Date.now() + hour); +req.session.cookie.maxAge = hour; +``` + +For example when `maxAge` is set to `60000` (one minute), and 30 seconds +has elapsed it will return `30000` until the current request has completed, +at which time `req.session.touch()` is called to reset `req.session.maxAge` +to its original value. + +```js +req.session.cookie.maxAge; +// => 30000 +``` + +## Session Store Implementation + +Every session store _must_ implement the following methods + + - `.get(sid, callback)` + - `.set(sid, session, callback)` + - `.destroy(sid, callback)` + +Recommended methods include, but are not limited to: + + - `.length(callback)` + - `.clear(callback)` diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/.npmignore new file mode 100644 index 00000000..3c3629e6 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/cookie/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/.travis.yml similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/cookie/.travis.yml rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/cookie/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/LICENSE similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/cookie/LICENSE rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/LICENSE diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/README.md new file mode 100644 index 00000000..5187ed1c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/README.md @@ -0,0 +1,44 @@ +# cookie [![Build Status](https://secure.travis-ci.org/shtylman/node-cookie.png?branch=master)](http://travis-ci.org/shtylman/node-cookie) # + +cookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers. + +See [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies. + +## how? + +``` +npm install cookie +``` + +```javascript +var cookie = require('cookie'); + +var hdr = cookie.serialize('foo', 'bar'); +// hdr = 'foo=bar'; + +var cookies = cookie.parse('foo=bar; cat=meow; dog=ruff'); +// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' }; +``` + +## more + +The serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values. + +### path +> cookie path + +### expires +> absolute expiration date for the cookie (Date object) + +### maxAge +> relative max age of the cookie from when the client receives it (seconds) + +### domain +> domain for the cookie + +### secure +> true or false + +### httpOnly +> true or false + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/cookie/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/cookie/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/package.json new file mode 100644 index 00000000..4184aafc --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/package.json @@ -0,0 +1,78 @@ +{ + "_args": [ + [ + "cookie@0.1.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session" + ] + ], + "_from": "cookie@0.1.0", + "_id": "cookie@0.1.0", + "_inCache": true, + "_installable": true, + "_location": "/express-session/cookie", + "_npmUser": { + "email": "shtylman@gmail.com", + "name": "shtylman" + }, + "_npmVersion": "1.2.18", + "_phantomChildren": {}, + "_requested": { + "name": "cookie", + "raw": "cookie@0.1.0", + "rawSpec": "0.1.0", + "scope": null, + "spec": "0.1.0", + "type": "version" + }, + "_requiredBy": [ + "/express-session" + ], + "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz", + "_shasum": "90eb469ddce905c866de687efc43131d8801f9d0", + "_shrinkwrap": null, + "_spec": "cookie@0.1.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express-session", + "author": { + "email": "shtylman@gmail.com", + "name": "Roman Shtylman" + }, + "bugs": { + "url": "https://github.com/shtylman/node-cookie/issues" + }, + "dependencies": {}, + "description": "cookie parsing and serialization", + "devDependencies": { + "mocha": "1.x.x" + }, + "directories": {}, + "dist": { + "shasum": "90eb469ddce905c866de687efc43131d8801f9d0", + "tarball": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz" + }, + "engines": { + "node": "*" + }, + "homepage": "https://github.com/shtylman/node-cookie#readme", + "keywords": [ + "cookie", + "cookies" + ], + "main": "index.js", + "maintainers": [ + { + "email": "shtylman@gmail.com", + "name": "shtylman" + } + ], + "name": "cookie", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/shtylman/node-cookie.git" + }, + "scripts": { + "test": "mocha" + }, + "version": "0.1.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/cookie/test/mocha.opts b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/test/mocha.opts similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/cookie/test/mocha.opts rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/test/mocha.opts diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/cookie/test/parse.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/test/parse.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/cookie/test/parse.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/test/parse.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/cookie/test/serialize.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/test/serialize.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/cookie/test/serialize.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/node_modules/cookie/test/serialize.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/package.json new file mode 100644 index 00000000..2b41a451 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/package.json @@ -0,0 +1,76 @@ +{ + "_args": [ + [ + "express-session@1.0.2", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect" + ] + ], + "_from": "express-session@1.0.2", + "_id": "express-session@1.0.2", + "_inCache": true, + "_installable": true, + "_location": "/express-session", + "_npmUser": { + "email": "shtylman@gmail.com", + "name": "shtylman" + }, + "_npmVersion": "1.3.24", + "_phantomChildren": {}, + "_requested": { + "name": "express-session", + "raw": "express-session@1.0.2", + "rawSpec": "1.0.2", + "scope": null, + "spec": "1.0.2", + "type": "version" + }, + "_requiredBy": [ + "/connect" + ], + "_resolved": "https://registry.npmjs.org/express-session/-/express-session-1.0.2.tgz", + "_shasum": "004478c742561774411ceb79733155a56b6d49eb", + "_shrinkwrap": null, + "_spec": "express-session@1.0.2", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect", + "author": { + "email": "tj@vision-media.ca", + "name": "TJ Holowaychuk", + "url": "http://tjholowaychuk.com" + }, + "dependencies": { + "buffer-crc32": "0.2.1", + "cookie": "0.1.0", + "cookie-signature": "1.0.3", + "debug": "0.7.4", + "uid2": "0.0.3", + "utils-merge": "1.0.0" + }, + "description": "Setup session store with the given `options`.", + "devDependencies": { + "connect": "2.13.0", + "cookie-parser": "1.0.0", + "mocha": "~1.17.0", + "should": "3.1.2", + "supertest": "0.9.0" + }, + "directories": {}, + "dist": { + "shasum": "004478c742561774411ceb79733155a56b6d49eb", + "tarball": "https://registry.npmjs.org/express-session/-/express-session-1.0.2.tgz" + }, + "license": "MIT", + "main": "./index.js", + "maintainers": [ + { + "email": "shtylman@gmail.com", + "name": "shtylman" + } + ], + "name": "express-session", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "scripts": { + "test": "mocha --bail --ui bdd --reporter list -- test/*.js" + }, + "version": "1.0.2" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/session/cookie.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/session/cookie.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/session/cookie.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/session/cookie.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/session/memory.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/session/memory.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/session/memory.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/session/memory.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/session/session.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/session/session.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/session/session.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/session/session.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/session/store.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/session/store.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/session/store.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/session/store.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/test/session.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/test/session.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/test/session.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express-session/test/session.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/.npmignore new file mode 100644 index 00000000..5f64c32b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/.npmignore @@ -0,0 +1,10 @@ +.git* +benchmarks/ +docs/ +examples/ +support/ +test/ +testing.js +.DS_Store +coverage.html +lib-cov diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/History.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/History.md new file mode 100644 index 00000000..b2a26bfa --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/History.md @@ -0,0 +1,1283 @@ +3.5.3 / 2014-05-08 +================== + + * fix `req.host` for IPv6 literals + * fix `res.jsonp` error if callback param is object + +3.5.2 / 2014-04-24 +================== + + * update connect to 2.14.5 + * update cookie to 0.1.2 + * update mkdirp to 0.4.0 + * update send to 0.3.0 + +3.5.1 / 2014-03-25 +================== + + * pin less-middleware in generated app + +3.5.0 / 2014-03-06 +================== + + * bump deps + +3.4.8 / 2014-01-13 +================== + + * prevent incorrect automatic OPTIONS responses #1868 @dpatti + * update binary and examples for jade 1.0 #1876 @yossi, #1877 @reqshark, #1892 @matheusazzi + * throw 400 in case of malformed paths @rlidwka + +3.4.7 / 2013-12-10 +================== + + * update connect + +3.4.6 / 2013-12-01 +================== + + * update connect (raw-body) + +3.4.5 / 2013-11-27 +================== + + * update connect + * res.location: remove leading ./ #1802 @kapouer + * res.redirect: fix `res.redirect('toString') #1829 @michaelficarra + * res.send: always send ETag when content-length > 0 + * router: add Router.all() method + +3.4.4 / 2013-10-29 +================== + + * update connect + * update supertest + * update methods + * express(1): replace bodyParser() with urlencoded() and json() #1795 @chirag04 + +3.4.3 / 2013-10-23 +================== + + * update connect + +3.4.2 / 2013-10-18 +================== + + * update connect + * downgrade commander + +3.4.1 / 2013-10-15 +================== + + * update connect + * update commander + * jsonp: check if callback is a function + * router: wrap encodeURIComponent in a try/catch #1735 (@lxe) + * res.format: now includes chraset @1747 (@sorribas) + * res.links: allow multiple calls @1746 (@sorribas) + +3.4.0 / 2013-09-07 +================== + + * add res.vary(). Closes #1682 + * update connect + +3.3.8 / 2013-09-02 +================== + + * update connect + +3.3.7 / 2013-08-28 +================== + + * update connect + +3.3.6 / 2013-08-27 +================== + + * Revert "remove charset from json responses. Closes #1631" (causes issues in some clients) + * add: req.accepts take an argument list + +3.3.4 / 2013-07-08 +================== + + * update send and connect + +3.3.3 / 2013-07-04 +================== + + * update connect + +3.3.2 / 2013-07-03 +================== + + * update connect + * update send + * remove .version export + +3.3.1 / 2013-06-27 +================== + + * update connect + +3.3.0 / 2013-06-26 +================== + + * update connect + * add support for multiple X-Forwarded-Proto values. Closes #1646 + * change: remove charset from json responses. Closes #1631 + * change: return actual booleans from req.accept* functions + * fix jsonp callback array throw + +3.2.6 / 2013-06-02 +================== + + * update connect + +3.2.5 / 2013-05-21 +================== + + * update connect + * update node-cookie + * add: throw a meaningful error when there is no default engine + * change generation of ETags with res.send() to GET requests only. Closes #1619 + +3.2.4 / 2013-05-09 +================== + + * fix `req.subdomains` when no Host is present + * fix `req.host` when no Host is present, return undefined + +3.2.3 / 2013-05-07 +================== + + * update connect / qs + +3.2.2 / 2013-05-03 +================== + + * update qs + +3.2.1 / 2013-04-29 +================== + + * add app.VERB() paths array deprecation warning + * update connect + * update qs and remove all ~ semver crap + * fix: accept number as value of Signed Cookie + +3.2.0 / 2013-04-15 +================== + + * add "view" constructor setting to override view behaviour + * add req.acceptsEncoding(name) + * add req.acceptedEncodings + * revert cookie signature change causing session race conditions + * fix sorting of Accept values of the same quality + +3.1.2 / 2013-04-12 +================== + + * add support for custom Accept parameters + * update cookie-signature + +3.1.1 / 2013-04-01 +================== + + * add X-Forwarded-Host support to `req.host` + * fix relative redirects + * update mkdirp + * update buffer-crc32 + * remove legacy app.configure() method from app template. + +3.1.0 / 2013-01-25 +================== + + * add support for leading "." in "view engine" setting + * add array support to `res.set()` + * add node 0.8.x to travis.yml + * add "subdomain offset" setting for tweaking `req.subdomains` + * add `res.location(url)` implementing `res.redirect()`-like setting of Location + * use app.get() for x-powered-by setting for inheritance + * fix colons in passwords for `req.auth` + +3.0.6 / 2013-01-04 +================== + + * add http verb methods to Router + * update connect + * fix mangling of the `res.cookie()` options object + * fix jsonp whitespace escape. Closes #1132 + +3.0.5 / 2012-12-19 +================== + + * add throwing when a non-function is passed to a route + * fix: explicitly remove Transfer-Encoding header from 204 and 304 responses + * revert "add 'etag' option" + +3.0.4 / 2012-12-05 +================== + + * add 'etag' option to disable `res.send()` Etags + * add escaping of urls in text/plain in `res.redirect()` + for old browsers interpreting as html + * change crc32 module for a more liberal license + * update connect + +3.0.3 / 2012-11-13 +================== + + * update connect + * update cookie module + * fix cookie max-age + +3.0.2 / 2012-11-08 +================== + + * add OPTIONS to cors example. Closes #1398 + * fix route chaining regression. Closes #1397 + +3.0.1 / 2012-11-01 +================== + + * update connect + +3.0.0 / 2012-10-23 +================== + + * add `make clean` + * add "Basic" check to req.auth + * add `req.auth` test coverage + * add cb && cb(payload) to `res.jsonp()`. Closes #1374 + * add backwards compat for `res.redirect()` status. Closes #1336 + * add support for `res.json()` to retain previously defined Content-Types. Closes #1349 + * update connect + * change `res.redirect()` to utilize a pathname-relative Location again. Closes #1382 + * remove non-primitive string support for `res.send()` + * fix view-locals example. Closes #1370 + * fix route-separation example + +3.0.0rc5 / 2012-09-18 +================== + + * update connect + * add redis search example + * add static-files example + * add "x-powered-by" setting (`app.disable('x-powered-by')`) + * add "application/octet-stream" redirect Accept test case. Closes #1317 + +3.0.0rc4 / 2012-08-30 +================== + + * add `res.jsonp()`. Closes #1307 + * add "verbose errors" option to error-pages example + * add another route example to express(1) so people are not so confused + * add redis online user activity tracking example + * update connect dep + * fix etag quoting. Closes #1310 + * fix error-pages 404 status + * fix jsonp callback char restrictions + * remove old OPTIONS default response + +3.0.0rc3 / 2012-08-13 +================== + + * update connect dep + * fix signed cookies to work with `connect.cookieParser()` ("s:" prefix was missing) [tnydwrds] + * fix `res.render()` clobbering of "locals" + +3.0.0rc2 / 2012-08-03 +================== + + * add CORS example + * update connect dep + * deprecate `.createServer()` & remove old stale examples + * fix: escape `res.redirect()` link + * fix vhost example + +3.0.0rc1 / 2012-07-24 +================== + + * add more examples to view-locals + * add scheme-relative redirects (`res.redirect("//foo.com")`) support + * update cookie dep + * update connect dep + * update send dep + * fix `express(1)` -h flag, use -H for hogan. Closes #1245 + * fix `res.sendfile()` socket error handling regression + +3.0.0beta7 / 2012-07-16 +================== + + * update connect dep for `send()` root normalization regression + +3.0.0beta6 / 2012-07-13 +================== + + * add `err.view` property for view errors. Closes #1226 + * add "jsonp callback name" setting + * add support for "/foo/:bar*" non-greedy matches + * change `res.sendfile()` to use `send()` module + * change `res.send` to use "response-send" module + * remove `app.locals.use` and `res.locals.use`, use regular middleware + +3.0.0beta5 / 2012-07-03 +================== + + * add "make check" support + * add route-map example + * add `res.json(obj, status)` support back for BC + * add "methods" dep, remove internal methods module + * update connect dep + * update auth example to utilize cores pbkdf2 + * updated tests to use "supertest" + +3.0.0beta4 / 2012-06-25 +================== + + * Added `req.auth` + * Added `req.range(size)` + * Added `res.links(obj)` + * Added `res.send(body, status)` support back for backwards compat + * Added `.default()` support to `res.format()` + * Added 2xx / 304 check to `req.fresh` + * Revert "Added + support to the router" + * Fixed `res.send()` freshness check, respect res.statusCode + +3.0.0beta3 / 2012-06-15 +================== + + * Added hogan `--hjs` to express(1) [nullfirm] + * Added another example to content-negotiation + * Added `fresh` dep + * Changed: `res.send()` always checks freshness + * Fixed: expose connects mime module. Cloases #1165 + +3.0.0beta2 / 2012-06-06 +================== + + * Added `+` support to the router + * Added `req.host` + * Changed `req.param()` to check route first + * Update connect dep + +3.0.0beta1 / 2012-06-01 +================== + + * Added `res.format()` callback to override default 406 behaviour + * Fixed `res.redirect()` 406. Closes #1154 + +3.0.0alpha5 / 2012-05-30 +================== + + * Added `req.ip` + * Added `{ signed: true }` option to `res.cookie()` + * Removed `res.signedCookie()` + * Changed: dont reverse `req.ips` + * Fixed "trust proxy" setting check for `req.ips` + +3.0.0alpha4 / 2012-05-09 +================== + + * Added: allow `[]` in jsonp callback. Closes #1128 + * Added `PORT` env var support in generated template. Closes #1118 [benatkin] + * Updated: connect 2.2.2 + +3.0.0alpha3 / 2012-05-04 +================== + + * Added public `app.routes`. Closes #887 + * Added _view-locals_ example + * Added _mvc_ example + * Added `res.locals.use()`. Closes #1120 + * Added conditional-GET support to `res.send()` + * Added: coerce `res.set()` values to strings + * Changed: moved `static()` in generated apps below router + * Changed: `res.send()` only set ETag when not previously set + * Changed connect 2.2.1 dep + * Changed: `make test` now runs unit / acceptance tests + * Fixed req/res proto inheritance + +3.0.0alpha2 / 2012-04-26 +================== + + * Added `make benchmark` back + * Added `res.send()` support for `String` objects + * Added client-side data exposing example + * Added `res.header()` and `req.header()` aliases for BC + * Added `express.createServer()` for BC + * Perf: memoize parsed urls + * Perf: connect 2.2.0 dep + * Changed: make `expressInit()` middleware self-aware + * Fixed: use app.get() for all core settings + * Fixed redis session example + * Fixed session example. Closes #1105 + * Fixed generated express dep. Closes #1078 + +3.0.0alpha1 / 2012-04-15 +================== + + * Added `app.locals.use(callback)` + * Added `app.locals` object + * Added `app.locals(obj)` + * Added `res.locals` object + * Added `res.locals(obj)` + * Added `res.format()` for content-negotiation + * Added `app.engine()` + * Added `res.cookie()` JSON cookie support + * Added "trust proxy" setting + * Added `req.subdomains` + * Added `req.protocol` + * Added `req.secure` + * Added `req.path` + * Added `req.ips` + * Added `req.fresh` + * Added `req.stale` + * Added comma-delmited / array support for `req.accepts()` + * Added debug instrumentation + * Added `res.set(obj)` + * Added `res.set(field, value)` + * Added `res.get(field)` + * Added `app.get(setting)`. Closes #842 + * Added `req.acceptsLanguage()` + * Added `req.acceptsCharset()` + * Added `req.accepted` + * Added `req.acceptedLanguages` + * Added `req.acceptedCharsets` + * Added "json replacer" setting + * Added "json spaces" setting + * Added X-Forwarded-Proto support to `res.redirect()`. Closes #92 + * Added `--less` support to express(1) + * Added `express.response` prototype + * Added `express.request` prototype + * Added `express.application` prototype + * Added `app.path()` + * Added `app.render()` + * Added `res.type()` to replace `res.contentType()` + * Changed: `res.redirect()` to add relative support + * Changed: enable "jsonp callback" by default + * Changed: renamed "case sensitive routes" to "case sensitive routing" + * Rewrite of all tests with mocha + * Removed "root" setting + * Removed `res.redirect('home')` support + * Removed `req.notify()` + * Removed `app.register()` + * Removed `app.redirect()` + * Removed `app.is()` + * Removed `app.helpers()` + * Removed `app.dynamicHelpers()` + * Fixed `res.sendfile()` with non-GET. Closes #723 + * Fixed express(1) public dir for windows. Closes #866 + +2.5.9/ 2012-04-02 +================== + + * Added support for PURGE request method [pbuyle] + * Fixed `express(1)` generated app `app.address()` before `listening` [mmalecki] + +2.5.8 / 2012-02-08 +================== + + * Update mkdirp dep. Closes #991 + +2.5.7 / 2012-02-06 +================== + + * Fixed `app.all` duplicate DELETE requests [mscdex] + +2.5.6 / 2012-01-13 +================== + + * Updated hamljs dev dep. Closes #953 + +2.5.5 / 2012-01-08 +================== + + * Fixed: set `filename` on cached templates [matthewleon] + +2.5.4 / 2012-01-02 +================== + + * Fixed `express(1)` eol on 0.4.x. Closes #947 + +2.5.3 / 2011-12-30 +================== + + * Fixed `req.is()` when a charset is present + +2.5.2 / 2011-12-10 +================== + + * Fixed: express(1) LF -> CRLF for windows + +2.5.1 / 2011-11-17 +================== + + * Changed: updated connect to 1.8.x + * Removed sass.js support from express(1) + +2.5.0 / 2011-10-24 +================== + + * Added ./routes dir for generated app by default + * Added npm install reminder to express(1) app gen + * Added 0.5.x support + * Removed `make test-cov` since it wont work with node 0.5.x + * Fixed express(1) public dir for windows. Closes #866 + +2.4.7 / 2011-10-05 +================== + + * Added mkdirp to express(1). Closes #795 + * Added simple _json-config_ example + * Added shorthand for the parsed request's pathname via `req.path` + * Changed connect dep to 1.7.x to fix npm issue... + * Fixed `res.redirect()` __HEAD__ support. [reported by xerox] + * Fixed `req.flash()`, only escape args + * Fixed absolute path checking on windows. Closes #829 [reported by andrewpmckenzie] + +2.4.6 / 2011-08-22 +================== + + * Fixed multiple param callback regression. Closes #824 [reported by TroyGoode] + +2.4.5 / 2011-08-19 +================== + + * Added support for routes to handle errors. Closes #809 + * Added `app.routes.all()`. Closes #803 + * Added "basepath" setting to work in conjunction with reverse proxies etc. + * Refactored `Route` to use a single array of callbacks + * Added support for multiple callbacks for `app.param()`. Closes #801 +Closes #805 + * Changed: removed .call(self) for route callbacks + * Dependency: `qs >= 0.3.1` + * Fixed `res.redirect()` on windows due to `join()` usage. Closes #808 + +2.4.4 / 2011-08-05 +================== + + * Fixed `res.header()` intention of a set, even when `undefined` + * Fixed `*`, value no longer required + * Fixed `res.send(204)` support. Closes #771 + +2.4.3 / 2011-07-14 +================== + + * Added docs for `status` option special-case. Closes #739 + * Fixed `options.filename`, exposing the view path to template engines + +2.4.2. / 2011-07-06 +================== + + * Revert "removed jsonp stripping" for XSS + +2.4.1 / 2011-07-06 +================== + + * Added `res.json()` JSONP support. Closes #737 + * Added _extending-templates_ example. Closes #730 + * Added "strict routing" setting for trailing slashes + * Added support for multiple envs in `app.configure()` calls. Closes #735 + * Changed: `res.send()` using `res.json()` + * Changed: when cookie `path === null` don't default it + * Changed; default cookie path to "home" setting. Closes #731 + * Removed _pids/logs_ creation from express(1) + +2.4.0 / 2011-06-28 +================== + + * Added chainable `res.status(code)` + * Added `res.json()`, an explicit version of `res.send(obj)` + * Added simple web-service example + +2.3.12 / 2011-06-22 +================== + + * \#express is now on freenode! come join! + * Added `req.get(field, param)` + * Added links to Japanese documentation, thanks @hideyukisaito! + * Added; the `express(1)` generated app outputs the env + * Added `content-negotiation` example + * Dependency: connect >= 1.5.1 < 2.0.0 + * Fixed view layout bug. Closes #720 + * Fixed; ignore body on 304. Closes #701 + +2.3.11 / 2011-06-04 +================== + + * Added `npm test` + * Removed generation of dummy test file from `express(1)` + * Fixed; `express(1)` adds express as a dep + * Fixed; prune on `prepublish` + +2.3.10 / 2011-05-27 +================== + + * Added `req.route`, exposing the current route + * Added _package.json_ generation support to `express(1)` + * Fixed call to `app.param()` function for optional params. Closes #682 + +2.3.9 / 2011-05-25 +================== + + * Fixed bug-ish with `../' in `res.partial()` calls + +2.3.8 / 2011-05-24 +================== + + * Fixed `app.options()` + +2.3.7 / 2011-05-23 +================== + + * Added route `Collection`, ex: `app.get('/user/:id').remove();` + * Added support for `app.param(fn)` to define param logic + * Removed `app.param()` support for callback with return value + * Removed module.parent check from express(1) generated app. Closes #670 + * Refactored router. Closes #639 + +2.3.6 / 2011-05-20 +================== + + * Changed; using devDependencies instead of git submodules + * Fixed redis session example + * Fixed markdown example + * Fixed view caching, should not be enabled in development + +2.3.5 / 2011-05-20 +================== + + * Added export `.view` as alias for `.View` + +2.3.4 / 2011-05-08 +================== + + * Added `./examples/say` + * Fixed `res.sendfile()` bug preventing the transfer of files with spaces + +2.3.3 / 2011-05-03 +================== + + * Added "case sensitive routes" option. + * Changed; split methods supported per rfc [slaskis] + * Fixed route-specific middleware when using the same callback function several times + +2.3.2 / 2011-04-27 +================== + + * Fixed view hints + +2.3.1 / 2011-04-26 +================== + + * Added `app.match()` as `app.match.all()` + * Added `app.lookup()` as `app.lookup.all()` + * Added `app.remove()` for `app.remove.all()` + * Added `app.remove.VERB()` + * Fixed template caching collision issue. Closes #644 + * Moved router over from connect and started refactor + +2.3.0 / 2011-04-25 +================== + + * Added options support to `res.clearCookie()` + * Added `res.helpers()` as alias of `res.locals()` + * Added; json defaults to UTF-8 with `res.send()`. Closes #632. [Daniel * Dependency `connect >= 1.4.0` + * Changed; auto set Content-Type in res.attachement [Aaron Heckmann] + * Renamed "cache views" to "view cache". Closes #628 + * Fixed caching of views when using several apps. Closes #637 + * Fixed gotcha invoking `app.param()` callbacks once per route middleware. +Closes #638 + * Fixed partial lookup precedence. Closes #631 +Shaw] + +2.2.2 / 2011-04-12 +================== + + * Added second callback support for `res.download()` connection errors + * Fixed `filename` option passing to template engine + +2.2.1 / 2011-04-04 +================== + + * Added `layout(path)` helper to change the layout within a view. Closes #610 + * Fixed `partial()` collection object support. + Previously only anything with `.length` would work. + When `.length` is present one must still be aware of holes, + however now `{ collection: {foo: 'bar'}}` is valid, exposes + `keyInCollection` and `keysInCollection`. + + * Performance improved with better view caching + * Removed `request` and `response` locals + * Changed; errorHandler page title is now `Express` instead of `Connect` + +2.2.0 / 2011-03-30 +================== + + * Added `app.lookup.VERB()`, ex `app.lookup.put('/user/:id')`. Closes #606 + * Added `app.match.VERB()`, ex `app.match.put('/user/12')`. Closes #606 + * Added `app.VERB(path)` as alias of `app.lookup.VERB()`. + * Dependency `connect >= 1.2.0` + +2.1.1 / 2011-03-29 +================== + + * Added; expose `err.view` object when failing to locate a view + * Fixed `res.partial()` call `next(err)` when no callback is given [reported by aheckmann] + * Fixed; `res.send(undefined)` responds with 204 [aheckmann] + +2.1.0 / 2011-03-24 +================== + + * Added `/_?` partial lookup support. Closes #447 + * Added `request`, `response`, and `app` local variables + * Added `settings` local variable, containing the app's settings + * Added `req.flash()` exception if `req.session` is not available + * Added `res.send(bool)` support (json response) + * Fixed stylus example for latest version + * Fixed; wrap try/catch around `res.render()` + +2.0.0 / 2011-03-17 +================== + + * Fixed up index view path alternative. + * Changed; `res.locals()` without object returns the locals + +2.0.0rc3 / 2011-03-17 +================== + + * Added `res.locals(obj)` to compliment `res.local(key, val)` + * Added `res.partial()` callback support + * Fixed recursive error reporting issue in `res.render()` + +2.0.0rc2 / 2011-03-17 +================== + + * Changed; `partial()` "locals" are now optional + * Fixed `SlowBuffer` support. Closes #584 [reported by tyrda01] + * Fixed .filename view engine option [reported by drudge] + * Fixed blog example + * Fixed `{req,res}.app` reference when mounting [Ben Weaver] + +2.0.0rc / 2011-03-14 +================== + + * Fixed; expose `HTTPSServer` constructor + * Fixed express(1) default test charset. Closes #579 [reported by secoif] + * Fixed; default charset to utf-8 instead of utf8 for lame IE [reported by NickP] + +2.0.0beta3 / 2011-03-09 +================== + + * Added support for `res.contentType()` literal + The original `res.contentType('.json')`, + `res.contentType('application/json')`, and `res.contentType('json')` + will work now. + * Added `res.render()` status option support back + * Added charset option for `res.render()` + * Added `.charset` support (via connect 1.0.4) + * Added view resolution hints when in development and a lookup fails + * Added layout lookup support relative to the page view. + For example while rendering `./views/user/index.jade` if you create + `./views/user/layout.jade` it will be used in favour of the root layout. + * Fixed `res.redirect()`. RFC states absolute url [reported by unlink] + * Fixed; default `res.send()` string charset to utf8 + * Removed `Partial` constructor (not currently used) + +2.0.0beta2 / 2011-03-07 +================== + + * Added res.render() `.locals` support back to aid in migration process + * Fixed flash example + +2.0.0beta / 2011-03-03 +================== + + * Added HTTPS support + * Added `res.cookie()` maxAge support + * Added `req.header()` _Referrer_ / _Referer_ special-case, either works + * Added mount support for `res.redirect()`, now respects the mount-point + * Added `union()` util, taking place of `merge(clone())` combo + * Added stylus support to express(1) generated app + * Added secret to session middleware used in examples and generated app + * Added `res.local(name, val)` for progressive view locals + * Added default param support to `req.param(name, default)` + * Added `app.disabled()` and `app.enabled()` + * Added `app.register()` support for omitting leading ".", either works + * Added `res.partial()`, using the same interface as `partial()` within a view. Closes #539 + * Added `app.param()` to map route params to async/sync logic + * Added; aliased `app.helpers()` as `app.locals()`. Closes #481 + * Added extname with no leading "." support to `res.contentType()` + * Added `cache views` setting, defaulting to enabled in "production" env + * Added index file partial resolution, eg: partial('user') may try _views/user/index.jade_. + * Added `req.accepts()` support for extensions + * Changed; `res.download()` and `res.sendfile()` now utilize Connect's + static file server `connect.static.send()`. + * Changed; replaced `connect.utils.mime()` with npm _mime_ module + * Changed; allow `req.query` to be pre-defined (via middleware or other parent + * Changed view partial resolution, now relative to parent view + * Changed view engine signature. no longer `engine.render(str, options, callback)`, now `engine.compile(str, options) -> Function`, the returned function accepts `fn(locals)`. + * Fixed `req.param()` bug returning Array.prototype methods. Closes #552 + * Fixed; using `Stream#pipe()` instead of `sys.pump()` in `res.sendfile()` + * Fixed; using _qs_ module instead of _querystring_ + * Fixed; strip unsafe chars from jsonp callbacks + * Removed "stream threshold" setting + +1.0.8 / 2011-03-01 +================== + + * Allow `req.query` to be pre-defined (via middleware or other parent app) + * "connect": ">= 0.5.0 < 1.0.0". Closes #547 + * Removed the long deprecated __EXPRESS_ENV__ support + +1.0.7 / 2011-02-07 +================== + + * Fixed `render()` setting inheritance. + Mounted apps would not inherit "view engine" + +1.0.6 / 2011-02-07 +================== + + * Fixed `view engine` setting bug when period is in dirname + +1.0.5 / 2011-02-05 +================== + + * Added secret to generated app `session()` call + +1.0.4 / 2011-02-05 +================== + + * Added `qs` dependency to _package.json_ + * Fixed namespaced `require()`s for latest connect support + +1.0.3 / 2011-01-13 +================== + + * Remove unsafe characters from JSONP callback names [Ryan Grove] + +1.0.2 / 2011-01-10 +================== + + * Removed nested require, using `connect.router` + +1.0.1 / 2010-12-29 +================== + + * Fixed for middleware stacked via `createServer()` + previously the `foo` middleware passed to `createServer(foo)` + would not have access to Express methods such as `res.send()` + or props like `req.query` etc. + +1.0.0 / 2010-11-16 +================== + + * Added; deduce partial object names from the last segment. + For example by default `partial('forum/post', postObject)` will + give you the _post_ object, providing a meaningful default. + * Added http status code string representation to `res.redirect()` body + * Added; `res.redirect()` supporting _text/plain_ and _text/html_ via __Accept__. + * Added `req.is()` to aid in content negotiation + * Added partial local inheritance [suggested by masylum]. Closes #102 + providing access to parent template locals. + * Added _-s, --session[s]_ flag to express(1) to add session related middleware + * Added _--template_ flag to express(1) to specify the + template engine to use. + * Added _--css_ flag to express(1) to specify the + stylesheet engine to use (or just plain css by default). + * Added `app.all()` support [thanks aheckmann] + * Added partial direct object support. + You may now `partial('user', user)` providing the "user" local, + vs previously `partial('user', { object: user })`. + * Added _route-separation_ example since many people question ways + to do this with CommonJS modules. Also view the _blog_ example for + an alternative. + * Performance; caching view path derived partial object names + * Fixed partial local inheritance precedence. [reported by Nick Poulden] Closes #454 + * Fixed jsonp support; _text/javascript_ as per mailinglist discussion + +1.0.0rc4 / 2010-10-14 +================== + + * Added _NODE_ENV_ support, _EXPRESS_ENV_ is deprecated and will be removed in 1.0.0 + * Added route-middleware support (very helpful, see the [docs](http://expressjs.com/guide.html#Route-Middleware)) + * Added _jsonp callback_ setting to enable/disable jsonp autowrapping [Dav Glass] + * Added callback query check on response.send to autowrap JSON objects for simple webservice implementations [Dav Glass] + * Added `partial()` support for array-like collections. Closes #434 + * Added support for swappable querystring parsers + * Added session usage docs. Closes #443 + * Added dynamic helper caching. Closes #439 [suggested by maritz] + * Added authentication example + * Added basic Range support to `res.sendfile()` (and `res.download()` etc) + * Changed; `express(1)` generated app using 2 spaces instead of 4 + * Default env to "development" again [aheckmann] + * Removed _context_ option is no more, use "scope" + * Fixed; exposing _./support_ libs to examples so they can run without installs + * Fixed mvc example + +1.0.0rc3 / 2010-09-20 +================== + + * Added confirmation for `express(1)` app generation. Closes #391 + * Added extending of flash formatters via `app.flashFormatters` + * Added flash formatter support. Closes #411 + * Added streaming support to `res.sendfile()` using `sys.pump()` when >= "stream threshold" + * Added _stream threshold_ setting for `res.sendfile()` + * Added `res.send()` __HEAD__ support + * Added `res.clearCookie()` + * Added `res.cookie()` + * Added `res.render()` headers option + * Added `res.redirect()` response bodies + * Added `res.render()` status option support. Closes #425 [thanks aheckmann] + * Fixed `res.sendfile()` responding with 403 on malicious path + * Fixed `res.download()` bug; when an error occurs remove _Content-Disposition_ + * Fixed; mounted apps settings now inherit from parent app [aheckmann] + * Fixed; stripping Content-Length / Content-Type when 204 + * Fixed `res.send()` 204. Closes #419 + * Fixed multiple _Set-Cookie_ headers via `res.header()`. Closes #402 + * Fixed bug messing with error handlers when `listenFD()` is called instead of `listen()`. [thanks guillermo] + + +1.0.0rc2 / 2010-08-17 +================== + + * Added `app.register()` for template engine mapping. Closes #390 + * Added `res.render()` callback support as second argument (no options) + * Added callback support to `res.download()` + * Added callback support for `res.sendfile()` + * Added support for middleware access via `express.middlewareName()` vs `connect.middlewareName()` + * Added "partials" setting to docs + * Added default expresso tests to `express(1)` generated app. Closes #384 + * Fixed `res.sendfile()` error handling, defer via `next()` + * Fixed `res.render()` callback when a layout is used [thanks guillermo] + * Fixed; `make install` creating ~/.node_libraries when not present + * Fixed issue preventing error handlers from being defined anywhere. Closes #387 + +1.0.0rc / 2010-07-28 +================== + + * Added mounted hook. Closes #369 + * Added connect dependency to _package.json_ + + * Removed "reload views" setting and support code + development env never caches, production always caches. + + * Removed _param_ in route callbacks, signature is now + simply (req, res, next), previously (req, res, params, next). + Use _req.params_ for path captures, _req.query_ for GET params. + + * Fixed "home" setting + * Fixed middleware/router precedence issue. Closes #366 + * Fixed; _configure()_ callbacks called immediately. Closes #368 + +1.0.0beta2 / 2010-07-23 +================== + + * Added more examples + * Added; exporting `Server` constructor + * Added `Server#helpers()` for view locals + * Added `Server#dynamicHelpers()` for dynamic view locals. Closes #349 + * Added support for absolute view paths + * Added; _home_ setting defaults to `Server#route` for mounted apps. Closes #363 + * Added Guillermo Rauch to the contributor list + * Added support for "as" for non-collection partials. Closes #341 + * Fixed _install.sh_, ensuring _~/.node_libraries_ exists. Closes #362 [thanks jf] + * Fixed `res.render()` exceptions, now passed to `next()` when no callback is given [thanks guillermo] + * Fixed instanceof `Array` checks, now `Array.isArray()` + * Fixed express(1) expansion of public dirs. Closes #348 + * Fixed middleware precedence. Closes #345 + * Fixed view watcher, now async [thanks aheckmann] + +1.0.0beta / 2010-07-15 +================== + + * Re-write + - much faster + - much lighter + - Check [ExpressJS.com](http://expressjs.com) for migration guide and updated docs + +0.14.0 / 2010-06-15 +================== + + * Utilize relative requires + * Added Static bufferSize option [aheckmann] + * Fixed caching of view and partial subdirectories [aheckmann] + * Fixed mime.type() comments now that ".ext" is not supported + * Updated haml submodule + * Updated class submodule + * Removed bin/express + +0.13.0 / 2010-06-01 +================== + + * Added node v0.1.97 compatibility + * Added support for deleting cookies via Request#cookie('key', null) + * Updated haml submodule + * Fixed not-found page, now using using charset utf-8 + * Fixed show-exceptions page, now using using charset utf-8 + * Fixed view support due to fs.readFile Buffers + * Changed; mime.type() no longer accepts ".type" due to node extname() changes + +0.12.0 / 2010-05-22 +================== + + * Added node v0.1.96 compatibility + * Added view `helpers` export which act as additional local variables + * Updated haml submodule + * Changed ETag; removed inode, modified time only + * Fixed LF to CRLF for setting multiple cookies + * Fixed cookie complation; values are now urlencoded + * Fixed cookies parsing; accepts quoted values and url escaped cookies + +0.11.0 / 2010-05-06 +================== + + * Added support for layouts using different engines + - this.render('page.html.haml', { layout: 'super-cool-layout.html.ejs' }) + - this.render('page.html.haml', { layout: 'foo' }) // assumes 'foo.html.haml' + - this.render('page.html.haml', { layout: false }) // no layout + * Updated ext submodule + * Updated haml submodule + * Fixed EJS partial support by passing along the context. Issue #307 + +0.10.1 / 2010-05-03 +================== + + * Fixed binary uploads. + +0.10.0 / 2010-04-30 +================== + + * Added charset support via Request#charset (automatically assigned to 'UTF-8' when respond()'s + encoding is set to 'utf8' or 'utf-8'. + * Added "encoding" option to Request#render(). Closes #299 + * Added "dump exceptions" setting, which is enabled by default. + * Added simple ejs template engine support + * Added error reponse support for text/plain, application/json. Closes #297 + * Added callback function param to Request#error() + * Added Request#sendHead() + * Added Request#stream() + * Added support for Request#respond(304, null) for empty response bodies + * Added ETag support to Request#sendfile() + * Added options to Request#sendfile(), passed to fs.createReadStream() + * Added filename arg to Request#download() + * Performance enhanced due to pre-reversing plugins so that plugins.reverse() is not called on each request + * Performance enhanced by preventing several calls to toLowerCase() in Router#match() + * Changed; Request#sendfile() now streams + * Changed; Renamed Request#halt() to Request#respond(). Closes #289 + * Changed; Using sys.inspect() instead of JSON.encode() for error output + * Changed; run() returns the http.Server instance. Closes #298 + * Changed; Defaulting Server#host to null (INADDR_ANY) + * Changed; Logger "common" format scale of 0.4f + * Removed Logger "request" format + * Fixed; Catching ENOENT in view caching, preventing error when "views/partials" is not found + * Fixed several issues with http client + * Fixed Logger Content-Length output + * Fixed bug preventing Opera from retaining the generated session id. Closes #292 + +0.9.0 / 2010-04-14 +================== + + * Added DSL level error() route support + * Added DSL level notFound() route support + * Added Request#error() + * Added Request#notFound() + * Added Request#render() callback function. Closes #258 + * Added "max upload size" setting + * Added "magic" variables to collection partials (\_\_index\_\_, \_\_length\_\_, \_\_isFirst\_\_, \_\_isLast\_\_). Closes #254 + * Added [haml.js](http://github.com/visionmedia/haml.js) submodule; removed haml-js + * Added callback function support to Request#halt() as 3rd/4th arg + * Added preprocessing of route param wildcards using param(). Closes #251 + * Added view partial support (with collections etc) + * Fixed bug preventing falsey params (such as ?page=0). Closes #286 + * Fixed setting of multiple cookies. Closes #199 + * Changed; view naming convention is now NAME.TYPE.ENGINE (for example page.html.haml) + * Changed; session cookie is now httpOnly + * Changed; Request is no longer global + * Changed; Event is no longer global + * Changed; "sys" module is no longer global + * Changed; moved Request#download to Static plugin where it belongs + * Changed; Request instance created before body parsing. Closes #262 + * Changed; Pre-caching views in memory when "cache view contents" is enabled. Closes #253 + * Changed; Pre-caching view partials in memory when "cache view partials" is enabled + * Updated support to node --version 0.1.90 + * Updated dependencies + * Removed set("session cookie") in favour of use(Session, { cookie: { ... }}) + * Removed utils.mixin(); use Object#mergeDeep() + +0.8.0 / 2010-03-19 +================== + + * Added coffeescript example app. Closes #242 + * Changed; cache api now async friendly. Closes #240 + * Removed deprecated 'express/static' support. Use 'express/plugins/static' + +0.7.6 / 2010-03-19 +================== + + * Added Request#isXHR. Closes #229 + * Added `make install` (for the executable) + * Added `express` executable for setting up simple app templates + * Added "GET /public/*" to Static plugin, defaulting to /public + * Added Static plugin + * Fixed; Request#render() only calls cache.get() once + * Fixed; Namespacing View caches with "view:" + * Fixed; Namespacing Static caches with "static:" + * Fixed; Both example apps now use the Static plugin + * Fixed set("views"). Closes #239 + * Fixed missing space for combined log format + * Deprecated Request#sendfile() and 'express/static' + * Removed Server#running + +0.7.5 / 2010-03-16 +================== + + * Added Request#flash() support without args, now returns all flashes + * Updated ext submodule + +0.7.4 / 2010-03-16 +================== + + * Fixed session reaper + * Changed; class.js replacing js-oo Class implementation (quite a bit faster, no browser cruft) + +0.7.3 / 2010-03-16 +================== + + * Added package.json + * Fixed requiring of haml / sass due to kiwi removal + +0.7.2 / 2010-03-16 +================== + + * Fixed GIT submodules (HAH!) + +0.7.1 / 2010-03-16 +================== + + * Changed; Express now using submodules again until a PM is adopted + * Changed; chat example using millisecond conversions from ext + +0.7.0 / 2010-03-15 +================== + + * Added Request#pass() support (finds the next matching route, or the given path) + * Added Logger plugin (default "common" format replaces CommonLogger) + * Removed Profiler plugin + * Removed CommonLogger plugin + +0.6.0 / 2010-03-11 +================== + + * Added seed.yml for kiwi package management support + * Added HTTP client query string support when method is GET. Closes #205 + + * Added support for arbitrary view engines. + For example "foo.engine.html" will now require('engine'), + the exports from this module are cached after the first require(). + + * Added async plugin support + + * Removed usage of RESTful route funcs as http client + get() etc, use http.get() and friends + + * Removed custom exceptions + +0.5.0 / 2010-03-10 +================== + + * Added ext dependency (library of js extensions) + * Removed extname() / basename() utils. Use path module + * Removed toArray() util. Use arguments.values + * Removed escapeRegexp() util. Use RegExp.escape() + * Removed process.mixin() dependency. Use utils.mixin() + * Removed Collection + * Removed ElementCollection + * Shameless self promotion of ebook "Advanced JavaScript" (http://dev-mag.com) ;) + +0.4.0 / 2010-02-11 +================== + + * Added flash() example to sample upload app + * Added high level restful http client module (express/http) + * Changed; RESTful route functions double as HTTP clients. Closes #69 + * Changed; throwing error when routes are added at runtime + * Changed; defaulting render() context to the current Request. Closes #197 + * Updated haml submodule + +0.3.0 / 2010-02-11 +================== + + * Updated haml / sass submodules. Closes #200 + * Added flash message support. Closes #64 + * Added accepts() now allows multiple args. fixes #117 + * Added support for plugins to halt. Closes #189 + * Added alternate layout support. Closes #119 + * Removed Route#run(). Closes #188 + * Fixed broken specs due to use(Cookie) missing + +0.2.1 / 2010-02-05 +================== + + * Added "plot" format option for Profiler (for gnuplot processing) + * Added request number to Profiler plugin + * Fixed binary encoding for multi-part file uploads, was previously defaulting to UTF8 + * Fixed issue with routes not firing when not files are present. Closes #184 + * Fixed process.Promise -> events.Promise + +0.2.0 / 2010-02-03 +================== + + * Added parseParam() support for name[] etc. (allows for file inputs with "multiple" attr) Closes #180 + * Added Both Cache and Session option "reapInterval" may be "reapEvery". Closes #174 + * Added expiration support to cache api with reaper. Closes #133 + * Added cache Store.Memory#reap() + * Added Cache; cache api now uses first class Cache instances + * Added abstract session Store. Closes #172 + * Changed; cache Memory.Store#get() utilizing Collection + * Renamed MemoryStore -> Store.Memory + * Fixed use() of the same plugin several time will always use latest options. Closes #176 + +0.1.0 / 2010-02-03 +================== + + * Changed; Hooks (before / after) pass request as arg as well as evaluated in their context + * Updated node support to 0.1.27 Closes #169 + * Updated dirname(__filename) -> __dirname + * Updated libxmljs support to v0.2.0 + * Added session support with memory store / reaping + * Added quick uid() helper + * Added multi-part upload support + * Added Sass.js support / submodule + * Added production env caching view contents and static files + * Added static file caching. Closes #136 + * Added cache plugin with memory stores + * Added support to StaticFile so that it works with non-textual files. + * Removed dirname() helper + * Removed several globals (now their modules must be required) + +0.0.2 / 2010-01-10 +================== + + * Added view benchmarks; currently haml vs ejs + * Added Request#attachment() specs. Closes #116 + * Added use of node's parseQuery() util. Closes #123 + * Added `make init` for submodules + * Updated Haml + * Updated sample chat app to show messages on load + * Updated libxmljs parseString -> parseHtmlString + * Fixed `make init` to work with older versions of git + * Fixed specs can now run independant specs for those who cant build deps. Closes #127 + * Fixed issues introduced by the node url module changes. Closes 126. + * Fixed two assertions failing due to Collection#keys() returning strings + * Fixed faulty Collection#toArray() spec due to keys() returning strings + * Fixed `make test` now builds libxmljs.node before testing + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/Makefile new file mode 100644 index 00000000..a1f33a70 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/Makefile @@ -0,0 +1,34 @@ + +MOCHA_OPTS= --check-leaks +REPORTER = dot + +check: test + +test: test-unit test-acceptance + +test-unit: + @NODE_ENV=test ./node_modules/.bin/mocha \ + --reporter $(REPORTER) \ + --globals setImmediate,clearImmediate \ + $(MOCHA_OPTS) + +test-acceptance: + @NODE_ENV=test ./node_modules/.bin/mocha \ + --reporter $(REPORTER) \ + --bail \ + test/acceptance/*.js + +test-cov: lib-cov + @EXPRESS_COV=1 $(MAKE) test REPORTER=html-cov > coverage.html + +lib-cov: + @jscoverage lib lib-cov + +bench: + @$(MAKE) -C benchmarks + +clean: + rm -f coverage.html + rm -fr lib-cov + +.PHONY: test test-unit test-acceptance bench clean diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/Readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/Readme.md new file mode 100644 index 00000000..e1e3f7e9 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/Readme.md @@ -0,0 +1,126 @@ +[![express logo](http://f.cl.ly/items/0V2S1n0K1i3y1c122g04/Screen%20Shot%202012-04-11%20at%209.59.42%20AM.png)](http://expressjs.com/) + + Fast, unopinionated, minimalist web framework for [node](http://nodejs.org). + + [![Build Status](https://secure.travis-ci.org/visionmedia/express.png)](http://travis-ci.org/visionmedia/express) [![Gittip](http://img.shields.io/gittip/visionmedia.png)](https://www.gittip.com/visionmedia/) + +```js +var express = require('express'); +var app = express(); + +app.get('/', function(req, res){ + res.send('Hello World'); +}); + +app.listen(3000); +``` + +## Installation + + $ npm install -g express + +## Quick Start + + The quickest way to get started with express is to utilize the executable `express(1)` to generate an application as shown below: + + Create the app: + + $ npm install -g express + $ express /tmp/foo && cd /tmp/foo + + Install dependencies: + + $ npm install + + Start the server: + + $ node app + +## Features + + * Built on [Connect](http://github.com/senchalabs/connect) + * Robust routing + * HTTP helpers (redirection, caching, etc) + * View system supporting 14+ template engines + * Content negotiation + * Focus on high performance + * Environment based configuration + * Executable for generating applications quickly + * High test coverage + +## Philosophy + + The Express philosophy is to provide small, robust tooling for HTTP servers, making + it a great solution for single page applications, web sites, hybrids, or public + HTTP APIs. + + Built on Connect, you can use _only_ what you need, and nothing more. Applications + can be as big or as small as you like, even a single file. Express does + not force you to use any specific ORM or template engine. With support for over + 14 template engines via [Consolidate.js](http://github.com/visionmedia/consolidate.js), + you can quickly craft your perfect framework. + +## More Information + + * [Website and Documentation](http://expressjs.com/) stored at [visionmedia/expressjs.com](https://github.com/visionmedia/expressjs.com) + * Join #express on freenode + * [Google Group](http://groups.google.com/group/express-js) for discussion + * Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates + * Visit the [Wiki](http://github.com/visionmedia/express/wiki) + * [Русскоязычная документация](http://jsman.ru/express/) + * Run express examples [online](https://runnable.com/express) + +## Viewing Examples + +Clone the Express repo, then install the dev dependencies to install all the example / test suite dependencies: + + $ git clone git://github.com/visionmedia/express.git --depth 1 + $ cd express + $ npm install + +Then run whichever tests you want: + + $ node examples/content-negotiation + +You can also view live examples here: + + + +## Running Tests + +To run the test suite, first invoke the following command within the repo, installing the development dependencies: + + $ npm install + +Then run the tests: + + $ make test + +## Contributors + + https://github.com/visionmedia/express/graphs/contributors + +## License + +(The MIT License) + +Copyright (c) 2009-2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/.bin/mkdirp b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/.bin/mkdirp deleted file mode 100644 index 958ff644..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/.bin/mkdirp +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -basedir=`dirname "$0"` - -case `uname` in - *CYGWIN*) basedir=`cygpath -w "$basedir"`;; -esac - -if [ -x "$basedir/node" ]; then - "$basedir/node" "$basedir/../mkdirp/bin/cmd.js" "$@" - ret=$? -else - node "$basedir/../mkdirp/bin/cmd.js" "$@" - ret=$? -fi -exit $ret diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/.bin/mkdirp.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/.bin/mkdirp.cmd deleted file mode 100644 index f701d0a2..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/.bin/mkdirp.cmd +++ /dev/null @@ -1,5 +0,0 @@ -@IF EXIST "%~dp0\node.exe" ( - "%~dp0\node.exe" "%~dp0\..\mkdirp\bin\cmd.js" %* -) ELSE ( - node "%~dp0\..\mkdirp\bin\cmd.js" %* -) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/buffer-crc32/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/buffer-crc32/package.json deleted file mode 100644 index 544c98a7..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/buffer-crc32/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "author": { - "name": "Brian J. Brennan", - "email": "brianloveswords@gmail.com", - "url": "http://bjb.io" - }, - "name": "buffer-crc32", - "description": "A pure javascript CRC32 algorithm that plays nice with binary data", - "version": "0.2.1", - "contributors": [ - { - "name": "Vladimir Kuznetsov" - } - ], - "homepage": "https://github.com/brianloveswords/buffer-crc32", - "repository": { - "type": "git", - "url": "git://github.com/brianloveswords/buffer-crc32.git" - }, - "main": "index.js", - "scripts": { - "test": "tap tests/*.test.js" - }, - "dependencies": {}, - "devDependencies": { - "tap": "~0.2.5" - }, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "# buffer-crc32\n\n[![Build Status](https://secure.travis-ci.org/brianloveswords/buffer-crc32.png?branch=master)](http://travis-ci.org/brianloveswords/buffer-crc32)\n\ncrc32 that works with binary data and fancy character sets, outputs\nbuffer, signed or unsigned data and has tests.\n\nDerived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix\n\n# install\n```\nnpm install buffer-crc32\n```\n\n# example\n```js\nvar crc32 = require('buffer-crc32');\n// works with buffers\nvar buf = Buffer([0x00, 0x73, 0x75, 0x70, 0x20, 0x62, 0x72, 0x6f, 0x00])\ncrc32(buf) // -> \n\n// has convenience methods for getting signed or unsigned ints\ncrc32.signed(buf) // -> -1805997238\ncrc32.unsigned(buf) // -> 2488970058\n\n// will cast to buffer if given a string, so you can\n// directly use foreign characters safely\ncrc32('自動販売機') // -> \n\n// and works in append mode too\nvar partialCrc = crc32('hey');\nvar partialCrc = crc32(' ', partialCrc);\nvar partialCrc = crc32('sup', partialCrc);\nvar partialCrc = crc32(' ', partialCrc);\nvar finalCrc = crc32('bros', partialCrc); // -> \n```\n\n# tests\nThis was tested against the output of zlib's crc32 method. You can run\nthe tests with`npm test` (requires tap)\n\n# see also\nhttps://github.com/alexgorbatchev/node-crc, `crc.buffer.crc32` also\nsupports buffer inputs and return unsigned ints (thanks @tjholowaychuk).\n\n# license\nMIT/X11\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/brianloveswords/buffer-crc32/issues" - }, - "_id": "buffer-crc32@0.2.1", - "_shasum": "be3e5382fc02b6d6324956ac1af98aa98b08534c", - "_from": "buffer-crc32@0.2.1", - "_resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.1.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/commander/node_modules/keypress/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/commander/node_modules/keypress/package.json deleted file mode 100644 index c5462052..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/commander/node_modules/keypress/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "keypress", - "version": "0.1.0", - "description": "Make any Node ReadableStream emit \"keypress\" events", - "author": { - "name": "Nathan Rajlich", - "email": "nathan@tootallnate.net", - "url": "http://tootallnate.net" - }, - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git://github.com/TooTallNate/keypress.git" - }, - "keywords": [ - "keypress", - "readline", - "core" - ], - "license": "MIT", - "readme": "keypress\n========\n### Make any Node ReadableStream emit \"keypress\" events\n\n\nPrevious to Node `v0.8.x`, there was an undocumented `\"keypress\"` event that\n`process.stdin` would emit when it was a TTY. Some people discovered this hidden\ngem, and started using it in their own code.\n\nNow in Node `v0.8.x`, this `\"keypress\"` event does not get emitted by default,\nbut rather only when it is being used in conjuction with the `readline` (or by\nextension, the `repl`) module.\n\nThis module is the exact logic from the node `v0.8.x` releases ripped out into its\nown module.\n\n__Bonus:__ Now with mouse support!\n\nInstallation\n------------\n\nInstall with `npm`:\n\n``` bash\n$ npm install keypress\n```\n\nOr add it to the `\"dependencies\"` section of your _package.json_ file.\n\n\nExample\n-------\n\n#### Listening for \"keypress\" events\n\n``` js\nvar keypress = require('keypress');\n\n// make `process.stdin` begin emitting \"keypress\" events\nkeypress(process.stdin);\n\n// listen for the \"keypress\" event\nprocess.stdin.on('keypress', function (ch, key) {\n console.log('got \"keypress\"', key);\n if (key && key.ctrl && key.name == 'c') {\n process.stdin.pause();\n }\n});\n\nprocess.stdin.setRawMode(true);\nprocess.stdin.resume();\n```\n\n#### Listening for \"mousepress\" events\n\n``` js\nvar keypress = require('keypress');\n\n// make `process.stdin` begin emitting \"mousepress\" (and \"keypress\") events\nkeypress(process.stdin);\n\n// you must enable the mouse events before they will begin firing\nkeypress.enableMouse(process.stdout);\n\nprocess.stdin.on('mousepress', function (info) {\n console.log('got \"mousepress\" event at %d x %d', info.x, info.y);\n});\n\nprocess.on('exit', function () {\n // disable mouse on exit, so that the state\n // is back to normal for the terminal\n keypress.disableMouse(process.stdout);\n});\n```\n\n\nLicense\n-------\n\n(The MIT License)\n\nCopyright (c) 2012 Nathan Rajlich <nathan@tootallnate.net>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/TooTallNate/keypress/issues" - }, - "homepage": "https://github.com/TooTallNate/keypress", - "_id": "keypress@0.1.0", - "_from": "keypress@0.1.x" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/commander/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/commander/package.json deleted file mode 100644 index fee9ed03..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/commander/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "commander", - "version": "1.3.2", - "description": "the complete solution for node.js command-line programs", - "keywords": [ - "command", - "option", - "parser", - "prompt", - "stdin" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "repository": { - "type": "git", - "url": "https://github.com/visionmedia/commander.js.git" - }, - "dependencies": { - "keypress": "0.1.x" - }, - "devDependencies": { - "should": ">= 0.0.1" - }, - "scripts": { - "test": "make test" - }, - "main": "index", - "engines": { - "node": ">= 0.6.x" - }, - "readme": "# Commander.js\n\n The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander).\n\n [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)\n\n## Installation\n\n $ npm install commander\n\n## Option parsing\n\n Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('commander');\n\nprogram\n .version('0.0.1')\n .option('-p, --peppers', 'Add peppers')\n .option('-P, --pineapple', 'Add pineapple')\n .option('-b, --bbq', 'Add bbq sauce')\n .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')\n .parse(process.argv);\n\nconsole.log('you ordered a pizza with:');\nif (program.peppers) console.log(' - peppers');\nif (program.pineapple) console.log(' - pineapple');\nif (program.bbq) console.log(' - bbq');\nconsole.log(' - %s cheese', program.cheese);\n```\n\n Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as \"--template-engine\" are camel-cased, becoming `program.templateEngine` etc.\n\n## Automated --help\n\n The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:\n\n``` \n $ ./examples/pizza --help\n\n Usage: pizza [options]\n\n Options:\n\n -V, --version output the version number\n -p, --peppers Add peppers\n -P, --pineapple Add pineapple\n -b, --bbq Add bbq sauce\n -c, --cheese Add the specified type of cheese [marble]\n -h, --help output usage information\n\n```\n\n## Coercion\n\n```js\nfunction range(val) {\n return val.split('..').map(Number);\n}\n\nfunction list(val) {\n return val.split(',');\n}\n\nprogram\n .version('0.0.1')\n .usage('[options] ')\n .option('-i, --integer ', 'An integer argument', parseInt)\n .option('-f, --float ', 'A float argument', parseFloat)\n .option('-r, --range ..', 'A range', range)\n .option('-l, --list ', 'A list', list)\n .option('-o, --optional [value]', 'An optional value')\n .parse(process.argv);\n\nconsole.log(' int: %j', program.integer);\nconsole.log(' float: %j', program.float);\nconsole.log(' optional: %j', program.optional);\nprogram.range = program.range || [];\nconsole.log(' range: %j..%j', program.range[0], program.range[1]);\nconsole.log(' list: %j', program.list);\nconsole.log(' args: %j', program.args);\n```\n\n## Custom help\n\n You can display arbitrary `-h, --help` information\n by listening for \"--help\". Commander will automatically\n exit once you are done so that the remainder of your program\n does not execute causing undesired behaviours, for example\n in the following executable \"stuff\" will not output when\n `--help` is used.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('../');\n\nfunction list(val) {\n return val.split(',').map(Number);\n}\n\nprogram\n .version('0.0.1')\n .option('-f, --foo', 'enable some foo')\n .option('-b, --bar', 'enable some bar')\n .option('-B, --baz', 'enable some baz');\n\n// must be before .parse() since\n// node's emit() is immediate\n\nprogram.on('--help', function(){\n console.log(' Examples:');\n console.log('');\n console.log(' $ custom-help --help');\n console.log(' $ custom-help -h');\n console.log('');\n});\n\nprogram.parse(process.argv);\n\nconsole.log('stuff');\n```\n\nyielding the following help output:\n\n```\n\nUsage: custom-help [options]\n\nOptions:\n\n -h, --help output usage information\n -V, --version output the version number\n -f, --foo enable some foo\n -b, --bar enable some bar\n -B, --baz enable some baz\n\nExamples:\n\n $ custom-help --help\n $ custom-help -h\n\n```\n\n## .prompt(msg, fn)\n\n Single-line prompt:\n\n```js\nprogram.prompt('name: ', function(name){\n console.log('hi %s', name);\n});\n```\n\n Multi-line prompt:\n\n```js\nprogram.prompt('description:', function(name){\n console.log('hi %s', name);\n});\n```\n\n Coercion:\n\n```js\nprogram.prompt('Age: ', Number, function(age){\n console.log('age: %j', age);\n});\n```\n\n```js\nprogram.prompt('Birthdate: ', Date, function(date){\n console.log('date: %s', date);\n});\n```\n\n```js\nprogram.prompt('Email: ', /^.+@.+\\..+$/, function(email){\n console.log('email: %j', email);\n});\n```\n\n## .password(msg[, mask], fn)\n\nPrompt for password without echoing:\n\n```js\nprogram.password('Password: ', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\nPrompt for password with mask char \"*\":\n\n```js\nprogram.password('Password: ', '*', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\n## .confirm(msg, fn)\n\n Confirm with the given `msg`:\n\n```js\nprogram.confirm('continue? ', function(ok){\n console.log(' got %j', ok);\n});\n```\n\n## .choose(list, fn)\n\n Let the user choose from a `list`:\n\n```js\nvar list = ['tobi', 'loki', 'jane', 'manny', 'luna'];\n\nconsole.log('Choose the coolest pet:');\nprogram.choose(list, function(i){\n console.log('you chose %d \"%s\"', i, list[i]);\n});\n```\n\n## .outputHelp()\n\n Output help information without exiting.\n\n## .help()\n\n Output help information and exit immediately.\n\n## Links\n\n - [API documentation](http://visionmedia.github.com/commander.js/)\n - [ascii tables](https://github.com/LearnBoost/cli-table)\n - [progress bars](https://github.com/visionmedia/node-progress)\n - [more progress bars](https://github.com/substack/node-multimeter)\n - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/commander.js/issues" - }, - "homepage": "https://github.com/visionmedia/commander.js", - "_id": "commander@1.3.2", - "_shasum": "8a8f30ec670a6fdd64af52f1914b907d79ead5b5", - "_from": "commander@1.3.2", - "_resolved": "https://registry.npmjs.org/commander/-/commander-1.3.2.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/basic-auth-connect/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/basic-auth-connect/package.json deleted file mode 100644 index ef3b2dc5..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/basic-auth-connect/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "basic-auth-connect", - "description": "Basic auth middleware for node and connect", - "version": "1.0.0", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/expressjs/basic-auth-connect.git" - }, - "bugs": { - "url": "https://github.com/expressjs/basic-auth-connect/issues" - }, - "devDependencies": { - "mocha": "*", - "should": "*", - "supertest": "*", - "connect": "*" - }, - "scripts": { - "test": "make test" - }, - "readme": "# simgr - Simple Image Resizer [![Build Status](https://travis-ci.org/expressjs/basic-auth-connect.png)](https://travis-ci.org/expressjs/basic-auth-connect)\n\nConnect's Basic Auth middleware in its own module. This module is considered deprecated. You should instead create your own middleware with [basic-auth](https://github.com/visionmedia/node-basic-auth).\n\n## API\n\n```js\nvar basicAuth = require('basic-auth-connect');\n```\n\nSorry, couldn't think of a more clever name.\n\nSimple username and password\n\n```js\nconnect()\n.use(basicAuth('username', 'password'));\n```\n\nCallback verification\n\n```js\nconnect()\n.use(basicAuth(function(user, pass){\n return 'tj' == user && 'wahoo' == pass;\n}))\n```\n\nAsync callback verification, accepting `fn(err, user)`.\n\n```\nconnect()\n.use(basicAuth(function(user, pass, fn){\n User.authenticate({ user: user, pass: pass }, fn);\n}))\n```\n\n## License\n\nThe MIT License (MIT)\n\nCopyright (c) 2013 Jonathan Ong me@jongleberry.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.", - "readmeFilename": "README.md", - "homepage": "https://github.com/expressjs/basic-auth-connect", - "_id": "basic-auth-connect@1.0.0", - "_shasum": "fdb0b43962ca7b40456a7c2bb48fe173da2d2122", - "_from": "basic-auth-connect@1.0.0", - "_resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/bytes/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/bytes/package.json deleted file mode 100644 index dae83b32..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/bytes/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "bytes", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "description": "byte size string parser / serializer", - "repository": { - "type": "git", - "url": "https://github.com/visionmedia/bytes.js.git" - }, - "version": "0.3.0", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "component": { - "scripts": { - "bytes/index.js": "index.js" - } - }, - "readme": "# node-bytes\n\n Byte string parser / formatter.\n\n## Example:\n\n```js\nbytes('1kb')\n// => 1024\n\nbytes('2mb')\n// => 2097152\n\nbytes('1gb')\n// => 1073741824\n\nbytes(1073741824)\n// => 1gb\n\nbytes(1099511627776)\n// => 1tb\n```\n\n## Installation\n\n```\n$ npm install bytes\n$ component install visionmedia/bytes.js\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/bytes.js/issues" - }, - "homepage": "https://github.com/visionmedia/bytes.js", - "_id": "bytes@0.3.0", - "_shasum": "78e2e0e28c7f9c7b988ea8aee0db4d5fa9941935", - "_from": "bytes@0.3.0", - "_resolved": "https://registry.npmjs.org/bytes/-/bytes-0.3.0.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/bytes/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/bytes/package.json deleted file mode 100644 index abd7e87c..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/bytes/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "bytes", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "description": "byte size string parser / serializer", - "version": "0.2.1", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "component": { - "scripts": { - "bytes/index.js": "index.js" - } - }, - "readme": "# node-bytes\n\n Byte string parser / formatter.\n\n## Example:\n\n```js\nbytes('1kb')\n// => 1024\n\nbytes('2mb')\n// => 2097152\n\nbytes('1gb')\n// => 1073741824\n\nbytes(1073741824)\n// => 1gb\n```\n\n## Installation\n\n```\n$ npm install bytes\n$ component install visionmedia/bytes.js\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "Readme.md", - "_id": "bytes@0.2.1", - "_from": "bytes@~0.2.0", - "scripts": {} -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/compressible/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/compressible/package.json deleted file mode 100644 index ee249e17..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/compressible/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "compressible", - "description": "Compressible Content-Type / mime checking", - "version": "1.0.0", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "contributors": { - "name": "Jeremiah Senkpiel", - "email": "fishrock123@rocketmail.com", - "url": "https://searchbeam.jit.su", - "twitter": "https://twitter.com/fishrock123" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/expressjs/compressible.git" - }, - "bugs": { - "url": "https://github.com/expressjs/compressible/issues" - }, - "keywords": [ - "compress", - "gzip", - "mime", - "content-type" - ], - "devDependencies": { - "mocha": "*", - "benchmark": "*", - "beautify-benchmark": "~0.2.4", - "mime": "*" - }, - "scripts": { - "test": "mocha --reporter spec", - "posttest": "mocha --reporter spec bench.js" - }, - "readme": "# Compressible [![Build Status](https://travis-ci.org/expressjs/compressible.png)](https://travis-ci.org/expressjs/compressible)\n\nCompressible `Content-Type` / `mime` checking.\n\n## API\n\n### compressible(type)\n\n```js\nvar compressible = require('compressible')\ncompressible('text/html') // -> true\ncompressible('image/png') // -> false\n```\n\n### compressible.get(type)\n\nReturns the specifications object associated with the given `Content-Type`.\nGenerates an object using the regex if none is found.\n\n### compressible.specs\n\nExports `specifications.json`.\n\n### compressible.regex\n\nThe regular expression that checks the `Content-Type`.\nHowever, you should use `compressible(type)` instead of this regular expression due to additional non-regex checks.\n\n## License\n\nThe MIT License (MIT)\n\nCopyright (c) 2013 Jonathan Ong me@jongleberry.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.", - "readmeFilename": "README.md", - "homepage": "https://github.com/expressjs/compressible", - "_id": "compressible@1.0.0", - "_shasum": "f83e49c1cb61421753545125a8011d68b492427d", - "_from": "compressible@1.0.0", - "_resolved": "https://registry.npmjs.org/compressible/-/compressible-1.0.0.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/package.json deleted file mode 100644 index 45ad7c72..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/package.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "negotiator", - "description": "HTTP content negotiation", - "version": "0.3.0", - "author": { - "name": "Federico Romero", - "email": "federico.romero@outboxlabs.com" - }, - "contributors": [ - { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - } - ], - "repository": { - "type": "git", - "url": "git://github.com/federomero/negotiator.git" - }, - "keywords": [ - "http", - "content negotiation", - "accept", - "accept-language", - "accept-encoding", - "accept-charset" - ], - "engine": "node >= 0.6", - "license": "MIT", - "devDependencies": { - "nodeunit": "0.6.x" - }, - "scripts": { - "test": "nodeunit test" - }, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "main": "lib/negotiator.js", - "readme": "# Negotiator\n\nAn HTTP content negotiator for node.js written in javascript.\n\n# Accept Negotiation\n\n Negotiator = require('negotiator')\n\n availableMediaTypes = ['text/html', 'text/plain', 'application/json']\n\n // The negotiator constructor receives a request object\n negotiator = new Negotiator(request)\n\n // Let's say Accept header is 'text/html, application/*;q=0.2, image/jpeg;q=0.8'\n\n negotiator.preferredMediaTypes()\n // -> ['text/html', 'image/jpeg', 'application/*']\n\n negotiator.preferredMediaTypes(availableMediaTypes)\n // -> ['text/html', 'application/json']\n\n negotiator.preferredMediaType(availableMediaTypes)\n // -> 'text/html'\n\nYou can check a working example at `examples/accept.js`.\n\n## Methods\n\n`preferredMediaTypes(availableMediaTypes)`:\n\nReturns an array of preferred media types ordered by priority from a list of available media types.\n\n`preferredMediaType(availableMediaType)`:\n\nReturns the top preferred media type from a list of available media types.\n\n# Accept-Language Negotiation\n\n Negotiator = require('negotiator')\n\n negotiator = new Negotiator(request)\n\n availableLanguages = 'en', 'es', 'fr'\n\n // Let's say Accept-Language header is 'en;q=0.8, es, pt'\n\n negotiator.preferredLanguages()\n // -> ['es', 'pt', 'en']\n\n negotiator.preferredLanguages(availableLanguages)\n // -> ['es', 'en']\n\n language = negotiator.preferredLanguage(availableLanguages)\n // -> 'es'\n\nYou can check a working example at `examples/language.js`.\n\n## Methods\n\n`preferredLanguages(availableLanguages)`:\n\nReturns an array of preferred languages ordered by priority from a list of available languages.\n\n`preferredLanguage(availableLanguages)`:\n\nReturns the top preferred language from a list of available languages.\n\n# Accept-Charset Negotiation\n\n Negotiator = require('negotiator')\n\n availableCharsets = ['utf-8', 'iso-8859-1', 'iso-8859-5']\n\n negotiator = new Negotiator(request)\n\n // Let's say Accept-Charset header is 'utf-8, iso-8859-1;q=0.8, utf-7;q=0.2'\n\n negotiator.preferredCharsets()\n // -> ['utf-8', 'iso-8859-1', 'utf-7']\n\n negotiator.preferredCharsets(availableCharsets)\n // -> ['utf-8', 'iso-8859-1']\n\n negotiator.preferredCharset(availableCharsets)\n // -> 'utf-8'\n\nYou can check a working example at `examples/charset.js`.\n\n## Methods\n\n`preferredCharsets(availableCharsets)`:\n\nReturns an array of preferred charsets ordered by priority from a list of available charsets.\n\n`preferredCharset(availableCharsets)`:\n\nReturns the top preferred charset from a list of available charsets.\n\n# Accept-Encoding Negotiation\n\n Negotiator = require('negotiator').Negotiator\n\n availableEncodings = ['identity', 'gzip']\n\n negotiator = new Negotiator(request)\n\n // Let's say Accept-Encoding header is 'gzip, compress;q=0.2, identity;q=0.5'\n\n negotiator.preferredEncodings()\n // -> ['gzip', 'identity', 'compress']\n\n negotiator.preferredEncodings(availableEncodings)\n // -> ['gzip', 'identity']\n\n negotiator.preferredEncoding(availableEncodings)\n // -> 'gzip'\n\nYou can check a working example at `examples/encoding.js`.\n\n## Methods\n\n`preferredEncodings(availableEncodings)`:\n\nReturns an array of preferred encodings ordered by priority from a list of available encodings.\n\n`preferredEncoding(availableEncodings)`:\n\nReturns the top preferred encoding from a list of available encodings.\n\n# License\n\nMIT\n", - "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/federomero/negotiator/issues" - }, - "homepage": "https://github.com/federomero/negotiator", - "dependencies": {}, - "_id": "negotiator@0.3.0", - "_shasum": "706d692efeddf574d57ea9fb1ab89a4fa7ee8f60", - "_from": "negotiator@0.3.0", - "_resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.3.0.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/package.json deleted file mode 100644 index 2cbb9e36..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "compression", - "description": "Compression middleware for connect and node.js", - "version": "1.0.0", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/expressjs/compression.git" - }, - "bugs": { - "url": "https://github.com/expressjs/compression/issues" - }, - "dependencies": { - "bytes": "0.2.1", - "negotiator": "0.3.0", - "compressible": "1.0.0" - }, - "devDependencies": { - "supertest": "*", - "connect": "*", - "mocha": "*", - "should": "*" - }, - "scripts": { - "test": "make test" - }, - "readme": "# compression [![Build Status](https://travis-ci.org/expressjs/compression.png)](https://travis-ci.org/expressjs/compression)\n\nConnect's compress middleware as its own module. Works with and without Connect.\n\n```js\nvar compress = require('compression')()\n\nhttp.createServer(function (req, res) {\n compress(req, res, function (err) {\n if (err) throw err\n\n res.end('hello world')\n })\n})\n\nvar app = require('connect')()\napp.use(compress)\n```\n\n## API\n\n### var middleware = compress([options])\n\nIn addition to `zlib` options, additional options are:\n\n- `threshold` <1kb> - only compress the response if the byte size is at or above a threshold\n- `filter` - a filter callback function\n\n## License\n\nThe MIT License (MIT)\n\nCopyright (c) 2014 Jonathan Ong me@jongleberry.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.", - "readmeFilename": "README.md", - "homepage": "https://github.com/expressjs/compression", - "_id": "compression@1.0.0", - "_shasum": "8aeb85d48db5145d38bc8b181b6352d8eab26020", - "_from": "compression@1.0.0", - "_resolved": "https://registry.npmjs.org/compression/-/compression-1.0.0.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/connect-timeout/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/connect-timeout/package.json deleted file mode 100644 index 34684001..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/connect-timeout/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "connect-timeout", - "description": "timeout middleware", - "version": "1.0.0", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/expressjs/timeout.git" - }, - "bugs": { - "url": "https://github.com/expressjs/timeout/issues" - }, - "dependencies": { - "debug": "*" - }, - "devDependencies": { - "mocha": "^1.17.0", - "should": "^3.0.0", - "supertest": "*", - "connect": "*" - }, - "scripts": { - "test": "make test" - }, - "readme": "# Timeout\n\nPreviously `connect.timeout()`.\n\nUsage:\n\n```js\nvar app = require('connect');\napp.use(require('timeout')(300))\n```\n\n## API\n\n### fn = timeout(ms)\n\nReturns middleware that times out in `ms` milliseconds.\n\n## License\n\nThe MIT License (MIT)\n\nCopyright (c) 2014 Jonathan Ong me@jongleberry.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/expressjs/timeout", - "_id": "connect-timeout@1.0.0", - "_shasum": "12054799f90bb9566f8b274efe7842d6465d10bb", - "_from": "connect-timeout@1.0.0", - "_resolved": "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.0.0.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/node_modules/cookie/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/node_modules/cookie/package.json deleted file mode 100644 index aef4e078..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/node_modules/cookie/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "author": { - "name": "Roman Shtylman", - "email": "shtylman@gmail.com" - }, - "name": "cookie", - "description": "cookie parsing and serialization", - "version": "0.1.0", - "repository": { - "type": "git", - "url": "git://github.com/shtylman/node-cookie.git" - }, - "keywords": [ - "cookie", - "cookies" - ], - "main": "index.js", - "scripts": { - "test": "mocha" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "1.x.x" - }, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "# cookie [![Build Status](https://secure.travis-ci.org/shtylman/node-cookie.png?branch=master)](http://travis-ci.org/shtylman/node-cookie) #\n\ncookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers.\n\nSee [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies.\n\n## how?\n\n```\nnpm install cookie\n```\n\n```javascript\nvar cookie = require('cookie');\n\nvar hdr = cookie.serialize('foo', 'bar');\n// hdr = 'foo=bar';\n\nvar cookies = cookie.parse('foo=bar; cat=meow; dog=ruff');\n// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' };\n```\n\n## more\n\nThe serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values.\n\n### path\n> cookie path\n\n### expires\n> absolute expiration date for the cookie (Date object)\n\n### maxAge\n> relative max age of the cookie from when the client receives it (seconds)\n\n### domain\n> domain for the cookie\n\n### secure\n> true or false\n\n### httpOnly\n> true or false\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/shtylman/node-cookie/issues" - }, - "homepage": "https://github.com/shtylman/node-cookie", - "_id": "cookie@0.1.0", - "_from": "cookie@0.1.0" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/package.json deleted file mode 100644 index f043eb61..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/cookie-parser/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "cookie-parser", - "version": "1.0.1", - "description": "cookie parsing with signatures", - "keywords": [ - "cookie", - "middleware" - ], - "repository": { - "type": "git", - "url": "git://github.com/expressjs/cookie-parser.git" - }, - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "dependencies": { - "cookie": "0.1.0", - "cookie-signature": "1.0.3" - }, - "devDependencies": { - "mocha": "~1.17.0", - "connect": "2.13.0", - "supertest": "0.9.0" - }, - "licenses": "MIT", - "main": "./index.js", - "engines": { - "node": ">= 0.10.0" - }, - "scripts": { - "test": "mocha --ui bdd --reporter list -- test/*.js" - }, - "readme": "# cookie-parser\n\nParse _Cookie_ header and populate `req.cookies` with an object keyed by the cookie\nnames. Optionally you may enabled signed cookie support by passing a `secret` string,\nwhich assigns `req.secret` so it may be used by other middleware.\n\n```js\nvar cookieParser = require('cookie-parser');\n\nconnect()\n .use(cookieParser('optional secret string'))\n .use(function(req, res, next){\n res.end(JSON.stringify(req.cookies));\n })\n```\n\n## install\n\n```shell\nnpm install cookie-parser\n```\n\n## License\n\nMIT\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/expressjs/cookie-parser/issues" - }, - "homepage": "https://github.com/expressjs/cookie-parser", - "_id": "cookie-parser@1.0.1", - "_shasum": "17bd622c9717cd0858a912a9fef4c0362360a7b0", - "_from": "cookie-parser@1.0.1", - "_resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.0.1.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/node_modules/scmp/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/node_modules/scmp/package.json deleted file mode 100644 index 7dcf4804..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/node_modules/scmp/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "scmp", - "version": "0.0.3", - "description": "safe, constant-time string-comparison", - "main": "index.js", - "scripts": { - "test": "mocha", - "posttest": "matcha" - }, - "repository": { - "type": "git", - "url": "git://github.com/freewil/scmp.git" - }, - "keywords": [ - "safe-compare", - "compare", - "time-equivalent-comparison", - "time equivalent", - "constant-time", - "constant time" - ], - "author": { - "name": "Sean Lavine" - }, - "license": "BSD", - "readmeFilename": "README.md", - "devDependencies": { - "mocha": "~1.13.0", - "matcha": "~0.4.0" - }, - "readme": "# scmp\n\n[![Build Status](https://travis-ci.org/freewil/scmp.png)](https://travis-ci.org/freewil/scmp)\n\nSafe, constant-time comparison of strings.\n\n## Install\n\n```\nnpm install scmp\n```\n\n## Why?\n\nTo minimize vulnerability against [timing attacks](http://codahale.com/a-lesson-in-timing-attacks/).\n\n## Examples\n\n```js\nvar scmp = require('scmp');\n\nvar hash = 'e727d1464ae12436e899a726da5b2f11d8381b26';\nvar givenHash = 'e727e1b80e448a213b392049888111e1779a52db';\n\nif (scmp(hash, givenHash)) {\n console.log('good hash');\n} else {\n console.log('bad hash');\n}\n\n```\n", - "bugs": { - "url": "https://github.com/freewil/scmp/issues" - }, - "homepage": "https://github.com/freewil/scmp", - "_id": "scmp@0.0.3", - "_shasum": "3648df2d7294641e7f78673ffc29681d9bad9073", - "_from": "scmp@~0.0.3", - "_resolved": "https://registry.npmjs.org/scmp/-/scmp-0.0.3.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/node_modules/uid2/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/node_modules/uid2/package.json deleted file mode 100644 index 52b74ba2..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/node_modules/uid2/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "uid2", - "description": "strong uid", - "tags": [ - "uid" - ], - "version": "0.0.3", - "dependencies": {}, - "readme": "ERROR: No README data found!", - "_id": "uid2@0.0.3", - "_shasum": "483126e11774df2f71b8b639dcd799c376162b82", - "_from": "uid2@~0.0.2", - "_resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/package.json deleted file mode 100644 index b6bc70b7..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "csurf", - "description": "CSRF token middleware", - "version": "1.1.0", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/expressjs/csurf" - }, - "dependencies": { - "uid2": "~0.0.2", - "scmp": "~0.0.3" - }, - "devDependencies": { - "cookie-session": "*", - "body-parser": "*", - "mocha": "^1.17.0", - "should": "^3.0.0", - "supertest": "*", - "connect": "*" - }, - "scripts": { - "test": "make test" - }, - "readme": "\n# CSURF\n\nCSRF middleware for connect/express/node.\n\nIt currently has the same API as [connect-csrf](http://www.senchalabs.org/connect/csrf.html), except it is now in its own repository.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/expressjs/csurf/issues" - }, - "homepage": "https://github.com/expressjs/csurf", - "_id": "csurf@1.1.0", - "_shasum": "5dd459df40df43b9eb828284d6d03132f42cb8b2", - "_from": "csurf@1.1.0", - "_resolved": "https://registry.npmjs.org/csurf/-/csurf-1.1.0.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/errorhandler/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/errorhandler/package.json deleted file mode 100644 index 78cf9694..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/errorhandler/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "errorhandler", - "description": "connect's default error handler page", - "version": "1.0.0", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/expressjs/errorhandler.git" - }, - "bugs": { - "url": "https://github.com/expressjs/errorhandler/issues" - }, - "devDependencies": { - "mocha": "^1.17.0", - "should": "^3.0.0", - "supertest": "*", - "connect": "*" - }, - "scripts": { - "test": "make test" - }, - "readme": "# Error Handler\n\nPreviously `connect.errorHandler()`.\n\nUsage:\n\n```js\nvar app = require('connect');\napp.use(require('errorhandler')())\n```\n\n## License\n\nThe MIT License (MIT)\n\nCopyright (c) 2014 Jonathan Ong me@jongleberry.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/expressjs/errorhandler", - "_id": "errorhandler@1.0.0", - "_shasum": "d74b37e8dc38c99afb3f5a79edcebaea022d042a", - "_from": "errorhandler@1.0.0", - "_resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.0.0.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/cookie/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/cookie/package.json deleted file mode 100644 index aef4e078..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/cookie/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "author": { - "name": "Roman Shtylman", - "email": "shtylman@gmail.com" - }, - "name": "cookie", - "description": "cookie parsing and serialization", - "version": "0.1.0", - "repository": { - "type": "git", - "url": "git://github.com/shtylman/node-cookie.git" - }, - "keywords": [ - "cookie", - "cookies" - ], - "main": "index.js", - "scripts": { - "test": "mocha" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "1.x.x" - }, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "# cookie [![Build Status](https://secure.travis-ci.org/shtylman/node-cookie.png?branch=master)](http://travis-ci.org/shtylman/node-cookie) #\n\ncookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers.\n\nSee [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies.\n\n## how?\n\n```\nnpm install cookie\n```\n\n```javascript\nvar cookie = require('cookie');\n\nvar hdr = cookie.serialize('foo', 'bar');\n// hdr = 'foo=bar';\n\nvar cookies = cookie.parse('foo=bar; cat=meow; dog=ruff');\n// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' };\n```\n\n## more\n\nThe serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values.\n\n### path\n> cookie path\n\n### expires\n> absolute expiration date for the cookie (Date object)\n\n### maxAge\n> relative max age of the cookie from when the client receives it (seconds)\n\n### domain\n> domain for the cookie\n\n### secure\n> true or false\n\n### httpOnly\n> true or false\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/shtylman/node-cookie/issues" - }, - "homepage": "https://github.com/shtylman/node-cookie", - "_id": "cookie@0.1.0", - "_from": "cookie@0.1.0" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/uid2/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/uid2/LICENSE deleted file mode 100644 index bdfab69b..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/uid2/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013 Marco Aurelio - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/uid2/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/uid2/index.js deleted file mode 100644 index 6240b308..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/uid2/index.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * Module dependencies - */ - -var crypto = require('crypto'); - -/** - * 62 characters in the ascii range that can be used in URLs without special - * encoding. - */ -var UIDCHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - -/** - * Make a Buffer into a string ready for use in URLs - * - * @param {String} - * @returns {String} - * @api private - */ -function tostr(bytes) { - var chars, r, i; - - r = []; - for (i = 0; i < bytes.length; i++) { - r.push(UIDCHARS[bytes[i] % UIDCHARS.length]); - } - - return r.join(''); -} - -/** - * Generate an Unique Id - * - * @param {Number} length The number of chars of the uid - * @param {Number} cb (optional) Callback for async uid generation - * @api public - */ - -function uid(length, cb) { - - if (typeof cb === 'undefined') { - return tostr(crypto.pseudoRandomBytes(length)); - } else { - crypto.pseudoRandomBytes(length, function(err, bytes) { - if (err) return cb(err); - cb(null, tostr(bytes)); - }) - } -} - -/** - * Exports - */ - -module.exports = uid; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/uid2/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/uid2/package.json deleted file mode 100644 index 5e3456c6..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/uid2/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "uid2", - "description": "strong uid", - "tags": [ - "uid" - ], - "version": "0.0.3", - "dependencies": {}, - "readme": "ERROR: No README data found!", - "_id": "uid2@0.0.3", - "_shasum": "483126e11774df2f71b8b639dcd799c376162b82", - "_from": "uid2@~0.0.2", - "_resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", - "scripts": {} -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/utils-merge/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/utils-merge/package.json deleted file mode 100644 index 8315772e..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/node_modules/utils-merge/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "utils-merge", - "version": "1.0.0", - "description": "merge() utility function", - "keywords": [ - "util" - ], - "repository": { - "type": "git", - "url": "git://github.com/jaredhanson/utils-merge.git" - }, - "bugs": { - "url": "http://github.com/jaredhanson/utils-merge/issues" - }, - "author": { - "name": "Jared Hanson", - "email": "jaredhanson@gmail.com", - "url": "http://www.jaredhanson.net/" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://www.opensource.org/licenses/MIT" - } - ], - "main": "./index", - "dependencies": {}, - "devDependencies": { - "mocha": "1.x.x", - "chai": "1.x.x" - }, - "scripts": { - "test": "mocha --reporter spec --require test/bootstrap/node test/*.test.js" - }, - "engines": { - "node": ">= 0.4.0" - }, - "readme": "# utils-merge\n\nMerges the properties from a source object into a destination object.\n\n## Install\n\n $ npm install utils-merge\n\n## Usage\n\n```javascript\nvar a = { foo: 'bar' }\n , b = { bar: 'baz' };\n\nmerge(a, b);\n// => { foo: 'bar', bar: 'baz' }\n```\n\n## Tests\n\n $ npm install\n $ npm test\n\n[![Build Status](https://secure.travis-ci.org/jaredhanson/utils-merge.png)](http://travis-ci.org/jaredhanson/utils-merge)\n\n## Credits\n\n - [Jared Hanson](http://github.com/jaredhanson)\n\n## License\n\n[The MIT License](http://opensource.org/licenses/MIT)\n\nCopyright (c) 2013 Jared Hanson <[http://jaredhanson.net/](http://jaredhanson.net/)>\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/jaredhanson/utils-merge", - "_id": "utils-merge@1.0.0", - "_shasum": "0294fb922bb9375153541c4f7096231f287c8af8", - "_from": "utils-merge@1.0.0", - "_resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/package.json deleted file mode 100644 index 46185180..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/express-session/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "express-session", - "version": "1.0.2", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "main": "./index.js", - "dependencies": { - "utils-merge": "1.0.0", - "cookie": "0.1.0", - "cookie-signature": "1.0.3", - "uid2": "0.0.3", - "buffer-crc32": "0.2.1", - "debug": "0.7.4" - }, - "devDependencies": { - "mocha": "~1.17.0", - "connect": "2.13.0", - "supertest": "0.9.0", - "should": "3.1.2", - "cookie-parser": "1.0.0" - }, - "scripts": { - "test": "mocha --bail --ui bdd --reporter list -- test/*.js" - }, - "license": "MIT", - "readme": "# express-session\n\nSetup session store with the given `options`.\n\nSession data is _not_ saved in the cookie itself, however\ncookies are used, so we must use the [cookieParser()](cookieParser.html)\nmiddleware _before_ `session()`.\n\n## Example\n\n```js\n app.use(connect.cookieParser())\n app.use(connect.session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }}))\n```\n\n**Options**\n\n - `key` cookie name defaulting to `connect.sid`\n - `store` session store instance\n - `secret` session cookie is signed with this secret to prevent tampering\n - `cookie` session cookie settings, defaulting to `{ path: '/', httpOnly: true, maxAge: null }`\n - `proxy` trust the reverse proxy when setting secure cookies (via \"x-forwarded-proto\")\n\n**Cookie options**\n\nBy default `cookie.maxAge` is `null`, meaning no \"expires\" parameter is set\nso the cookie becomes a browser-session cookie. When the user closes the\nbrowser the cookie (and session) will be removed.\n\n## req.session\n\nTo store or access session data, simply use the request property `req.session`,\nwhich is (generally) serialized as JSON by the store, so nested objects\nare typically fine. For example below is a user-specific view counter:\n\n```js\napp.use(cookieParser())\napp.use(session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }}))\n\napp.use(function(req, res, next){\n var sess = req.session;\n if (sess.views) {\n res.setHeader('Content-Type', 'text/html');\n res.write('

views: ' + sess.views + '

');\n res.write('

expires in: ' + (sess.cookie.maxAge / 1000) + 's

');\n res.end();\n sess.views++;\n } else {\n sess.views = 1;\n res.end('welcome to the session demo. refresh!');\n }\n})\n```\n\n## Session#regenerate()\n\nTo regenerate the session simply invoke the method, once complete\na new SID and `Session` instance will be initialized at `req.session`.\n\n```js\nreq.session.regenerate(function(err){\n // will have a new session here\n});\n```\n\n## Session#destroy()\n\nDestroys the session, removing `req.session`, will be re-generated next request.\n\n```js\nreq.session.destroy(function(err){\n // cannot access session here\n});\n```\n\n## Session#reload()\n\nReloads the session data.\n\n```js\nreq.session.reload(function(err){\n // session updated\n});\n```\n\n## Session#save()\n\nSave the session.\n\n```js\nreq.session.save(function(err){\n // session saved\n});\n```\n\n## Session#touch()\n\nUpdates the `.maxAge` property. Typically this is\nnot necessary to call, as the session middleware does this for you.\n\n## Session#cookie\n\nEach session has a unique cookie object accompany it. This allows\nyou to alter the session cookie per visitor. For example we can\nset `req.session.cookie.expires` to `false` to enable the cookie\nto remain for only the duration of the user-agent.\n\n## Session#maxAge\n\nAlternatively `req.session.cookie.maxAge` will return the time\nremaining in milliseconds, which we may also re-assign a new value\nto adjust the `.expires` property appropriately. The following\nare essentially equivalent\n\n```js\nvar hour = 3600000;\nreq.session.cookie.expires = new Date(Date.now() + hour);\nreq.session.cookie.maxAge = hour;\n```\n\nFor example when `maxAge` is set to `60000` (one minute), and 30 seconds\nhas elapsed it will return `30000` until the current request has completed,\nat which time `req.session.touch()` is called to reset `req.session.maxAge`\nto its original value.\n\n```js\nreq.session.cookie.maxAge;\n// => 30000\n```\n\n## Session Store Implementation\n\nEvery session store _must_ implement the following methods\n\n - `.get(sid, callback)`\n - `.set(sid, session, callback)`\n - `.destroy(sid, callback)`\n\nRecommended methods include, but are not limited to:\n\n - `.length(callback)`\n - `.clear(callback)`\n", - "readmeFilename": "README.md", - "description": "Setup session store with the given `options`.", - "_id": "express-session@1.0.2", - "_shasum": "004478c742561774411ceb79733155a56b6d49eb", - "_from": "express-session@1.0.2", - "_resolved": "https://registry.npmjs.org/express-session/-/express-session-1.0.2.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/method-override/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/method-override/package.json deleted file mode 100644 index 87aff1a3..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/method-override/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "method-override", - "description": "method override", - "version": "1.0.0", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/expressjs/method-override.git" - }, - "bugs": { - "url": "https://github.com/expressjs/method-override/issues" - }, - "dependencies": { - "methods": "*" - }, - "devDependencies": { - "mocha": "^1.17.0", - "should": "^3.0.0", - "supertest": "*", - "connect": "*" - }, - "scripts": { - "test": "make test" - }, - "readme": "# Method Override\n\nPreviously `connect.methodOverride()`.\n\nUsage:\n\n```js\nvar app = require('connect');\napp.use(require('body-parser')());\napp.use(require('method-override')())\n```\n\n## License\n\nThe MIT License (MIT)\n\nCopyright (c) 2014 Jonathan Ong me@jongleberry.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/expressjs/method-override", - "_id": "method-override@1.0.0", - "_shasum": "9e5bfbd80f3b9e043801dd3fe60bbab0f15b5f61", - "_from": "method-override@1.0.0", - "_resolved": "https://registry.npmjs.org/method-override/-/method-override-1.0.0.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/morgan/node_modules/bytes/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/morgan/node_modules/bytes/package.json deleted file mode 100644 index 9f8fd6a4..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/morgan/node_modules/bytes/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "bytes", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "description": "byte size string parser / serializer", - "version": "0.2.1", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "component": { - "scripts": { - "bytes/index.js": "index.js" - } - }, - "readme": "# node-bytes\n\n Byte string parser / formatter.\n\n## Example:\n\n```js\nbytes('1kb')\n// => 1024\n\nbytes('2mb')\n// => 2097152\n\nbytes('1gb')\n// => 1073741824\n\nbytes(1073741824)\n// => 1gb\n```\n\n## Installation\n\n```\n$ npm install bytes\n$ component install visionmedia/bytes.js\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "Readme.md", - "_id": "bytes@0.2.1", - "_from": "bytes@~0.2.0" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/morgan/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/morgan/package.json deleted file mode 100644 index 0ccf89c8..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/morgan/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "morgan", - "description": "connect's logger for node.js", - "version": "1.0.0", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/expressjs/morgan.git" - }, - "bugs": { - "url": "https://github.com/expressjs/morgan/issues" - }, - "dependencies": { - "bytes": "~0.2.0" - }, - "devDependencies": { - "connect": "*", - "mocha": "*", - "should": "*", - "supertest": "*" - }, - "scripts": { - "test": "make test" - }, - "readme": "# Connect Logger\n\nConnect's logging middleware. Named after [Dexter](http://en.wikipedia.org/wiki/Dexter_Morgan), a show you should not watch until completion. You may view the old docs at http://www.senchalabs.org/connect/logger.html. Otherwise, view the source code's JSDocs.\n\n## License\n\nThe MIT License (MIT)\n\nCopyright (c) 2014 Jonathan Ong me@jongleberry.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "README.md", - "homepage": "https://github.com/expressjs/morgan", - "_id": "morgan@1.0.0", - "_shasum": "83cf74b9f2d841901f1a9a6b8fa7a468d2e47a8d", - "_from": "morgan@1.0.0", - "_resolved": "https://registry.npmjs.org/morgan/-/morgan-1.0.0.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/lib/util.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/lib/util.js deleted file mode 100644 index 9074e8eb..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/lib/util.js +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -function isBuffer(arg) { - return Buffer.isBuffer(arg); -} -exports.isBuffer = isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/package.json deleted file mode 100644 index 5f6c88ef..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "core-util-is", - "version": "1.0.1", - "description": "The `util.is*` functions introduced in Node v0.12.", - "main": "lib/util.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/core-util-is" - }, - "keywords": [ - "util", - "isBuffer", - "isArray", - "isNumber", - "isString", - "isRegExp", - "isThis", - "isThat", - "polyfill" - ], - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/isaacs/core-util-is/issues" - }, - "readme": "# core-util-is\n\nThe `util.is*` functions introduced in Node v0.12.\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/isaacs/core-util-is", - "_id": "core-util-is@1.0.1", - "_shasum": "6b07085aef9a3ccac6ee53bf9d3df0c1521a5538", - "_from": "core-util-is@~1.0.0", - "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/util.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/util.js deleted file mode 100644 index 007fa105..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/util.js +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && objectToString(e) === '[object Error]'; -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -function isBuffer(arg) { - return arg instanceof Buffer; -} -exports.isBuffer = isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/package.json deleted file mode 100644 index e685e9fb..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "inherits", - "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", - "version": "2.0.1", - "keywords": [ - "inheritance", - "class", - "klass", - "oop", - "object-oriented", - "inherits", - "browser", - "browserify" - ], - "main": "./inherits.js", - "browser": "./inherits_browser.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/inherits" - }, - "license": "ISC", - "scripts": { - "test": "node test" - }, - "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "homepage": "https://github.com/isaacs/inherits", - "_id": "inherits@2.0.1", - "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", - "_from": "inherits@~2.0.1", - "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/isarray/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/isarray/package.json deleted file mode 100644 index e77e2cc0..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/isarray/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "isarray", - "description": "Array#isArray for older browsers", - "version": "0.0.1", - "repository": { - "type": "git", - "url": "git://github.com/juliangruber/isarray.git" - }, - "homepage": "https://github.com/juliangruber/isarray", - "main": "index.js", - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": {}, - "devDependencies": { - "tap": "*" - }, - "keywords": [ - "browser", - "isarray", - "array" - ], - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "license": "MIT", - "readme": "\n# isarray\n\n`Array#isArray` for older browsers.\n\n## Usage\n\n```js\nvar isArray = require('isarray');\n\nconsole.log(isArray([])); // => true\nconsole.log(isArray({})); // => false\n```\n\n## Installation\n\nWith [npm](http://npmjs.org) do\n\n```bash\n$ npm install isarray\n```\n\nThen bundle for the browser with\n[browserify](https://github.com/substack/browserify).\n\nWith [component](http://component.io) do\n\n```bash\n$ component install juliangruber/isarray\n```\n\n## License\n\n(MIT)\n\nCopyright (c) 2013 Julian Gruber <julian@juliangruber.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/juliangruber/isarray/issues" - }, - "_id": "isarray@0.0.1", - "_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "_from": "isarray@0.0.1", - "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/string_decoder/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/string_decoder/index.js deleted file mode 100644 index 2e44a03e..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/string_decoder/index.js +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -var Buffer = require('buffer').Buffer; - -var isBufferEncoding = Buffer.isEncoding - || function(encoding) { - switch (encoding && encoding.toLowerCase()) { - case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true; - default: return false; - } - } - - -function assertEncoding(encoding) { - if (encoding && !isBufferEncoding(encoding)) { - throw new Error('Unknown encoding: ' + encoding); - } -} - -var StringDecoder = exports.StringDecoder = function(encoding) { - this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); - assertEncoding(encoding); - switch (this.encoding) { - case 'utf8': - // CESU-8 represents each of Surrogate Pair by 3-bytes - this.surrogateSize = 3; - break; - case 'ucs2': - case 'utf16le': - // UTF-16 represents each of Surrogate Pair by 2-bytes - this.surrogateSize = 2; - this.detectIncompleteChar = utf16DetectIncompleteChar; - break; - case 'base64': - // Base-64 stores 3 bytes in 4 chars, and pads the remainder. - this.surrogateSize = 3; - this.detectIncompleteChar = base64DetectIncompleteChar; - break; - default: - this.write = passThroughWrite; - return; - } - - this.charBuffer = new Buffer(6); - this.charReceived = 0; - this.charLength = 0; -}; - - -StringDecoder.prototype.write = function(buffer) { - var charStr = ''; - var offset = 0; - - // if our last write ended with an incomplete multibyte character - while (this.charLength) { - // determine how many remaining bytes this buffer has to offer for this char - var i = (buffer.length >= this.charLength - this.charReceived) ? - this.charLength - this.charReceived : - buffer.length; - - // add the new bytes to the char buffer - buffer.copy(this.charBuffer, this.charReceived, offset, i); - this.charReceived += (i - offset); - offset = i; - - if (this.charReceived < this.charLength) { - // still not enough chars in this buffer? wait for more ... - return ''; - } - - // get the character that was split - charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); - - // lead surrogate (D800-DBFF) is also the incomplete character - var charCode = charStr.charCodeAt(charStr.length - 1); - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - this.charLength += this.surrogateSize; - charStr = ''; - continue; - } - this.charReceived = this.charLength = 0; - - // if there are no more bytes in this buffer, just emit our char - if (i == buffer.length) return charStr; - - // otherwise cut off the characters end from the beginning of this buffer - buffer = buffer.slice(i, buffer.length); - break; - } - - var lenIncomplete = this.detectIncompleteChar(buffer); - - var end = buffer.length; - if (this.charLength) { - // buffer the incomplete character bytes we got - buffer.copy(this.charBuffer, 0, buffer.length - lenIncomplete, end); - this.charReceived = lenIncomplete; - end -= lenIncomplete; - } - - charStr += buffer.toString(this.encoding, 0, end); - - var end = charStr.length - 1; - var charCode = charStr.charCodeAt(end); - // lead surrogate (D800-DBFF) is also the incomplete character - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - var size = this.surrogateSize; - this.charLength += size; - this.charReceived += size; - this.charBuffer.copy(this.charBuffer, size, 0, size); - this.charBuffer.write(charStr.charAt(charStr.length - 1), this.encoding); - return charStr.substring(0, end); - } - - // or just emit the charStr - return charStr; -}; - -StringDecoder.prototype.detectIncompleteChar = function(buffer) { - // determine how many bytes we have to check at the end of this buffer - var i = (buffer.length >= 3) ? 3 : buffer.length; - - // Figure out if one of the last i bytes of our buffer announces an - // incomplete char. - for (; i > 0; i--) { - var c = buffer[buffer.length - i]; - - // See http://en.wikipedia.org/wiki/UTF-8#Description - - // 110XXXXX - if (i == 1 && c >> 5 == 0x06) { - this.charLength = 2; - break; - } - - // 1110XXXX - if (i <= 2 && c >> 4 == 0x0E) { - this.charLength = 3; - break; - } - - // 11110XXX - if (i <= 3 && c >> 3 == 0x1E) { - this.charLength = 4; - break; - } - } - - return i; -}; - -StringDecoder.prototype.end = function(buffer) { - var res = ''; - if (buffer && buffer.length) - res = this.write(buffer); - - if (this.charReceived) { - var cr = this.charReceived; - var buf = this.charBuffer; - var enc = this.encoding; - res += buf.slice(0, cr).toString(enc); - } - - return res; -}; - -function passThroughWrite(buffer) { - return buffer.toString(this.encoding); -} - -function utf16DetectIncompleteChar(buffer) { - var incomplete = this.charReceived = buffer.length % 2; - this.charLength = incomplete ? 2 : 0; - return incomplete; -} - -function base64DetectIncompleteChar(buffer) { - var incomplete = this.charReceived = buffer.length % 3; - this.charLength = incomplete ? 3 : 0; - return incomplete; -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/string_decoder/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/string_decoder/package.json deleted file mode 100644 index 246b7be1..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/string_decoder/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "string_decoder", - "version": "0.10.25-1", - "description": "The string_decoder module from Node core", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "tap": "~0.4.8" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/rvagg/string_decoder.git" - }, - "homepage": "https://github.com/rvagg/string_decoder", - "keywords": [ - "string", - "decoder", - "browser", - "browserify" - ], - "license": "MIT", - "readme": "**string_decoder.js** (`require('string_decoder')`) from Node.js core\n\nCopyright Joyent, Inc. and other Node contributors. See LICENCE file for details.\n\nVersion numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.**\n\nThe *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version.", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/rvagg/string_decoder/issues" - }, - "_id": "string_decoder@0.10.25-1", - "_shasum": "f387babd95d23a2bb73b1fbf2cb3efab6f78baab", - "_from": "string_decoder@~0.10.x", - "_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.25-1.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/package.json deleted file mode 100644 index 370bf670..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "readable-stream", - "version": "1.1.13-1", - "description": "Streams3, a user-land copy of the stream library from Node.js v0.11.x", - "main": "readable.js", - "dependencies": { - "core-util-is": "~1.0.0", - "isarray": "0.0.1", - "string_decoder": "~0.10.x", - "inherits": "~2.0.1" - }, - "devDependencies": { - "tap": "~0.2.6" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/readable-stream" - }, - "keywords": [ - "readable", - "stream", - "pipe" - ], - "browser": { - "util": false - }, - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "MIT", - "readme": "# readable-stream\n\n***Node-core streams for userland***\n\n[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true)](https://nodei.co/npm/readable-stream/)\n[![NPM](https://nodei.co/npm-dl/readable-stream.png)](https://nodei.co/npm/readable-stream/)\n\nThis package is a mirror of the Streams2 and Streams3 implementations in Node-core.\n\nIf you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *\"stream\"* module in Node-core.\n\n**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12.\n\n**readable-stream** uses proper patch-level versioning so if you pin to `\"~1.0.0\"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `\"~1.1.0\"`\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/readable-stream/issues" - }, - "homepage": "https://github.com/isaacs/readable-stream", - "_id": "readable-stream@1.1.13-1", - "_shasum": "fc6f04f3366bf37bae21bec2e411c1b4d2cf1a46", - "_from": "readable-stream@~1.1.9", - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13-1.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/stream-counter/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/stream-counter/package.json deleted file mode 100644 index 1453933a..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/stream-counter/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "stream-counter", - "version": "0.2.0", - "description": "keeps track of how many bytes have been written to a stream", - "main": "index.js", - "scripts": { - "test": "node test/test.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/superjoe30/node-stream-counter.git" - }, - "author": { - "name": "Andrew Kelley", - "email": "superjoe30@gmail.com" - }, - "license": "BSD", - "engines": { - "node": ">=0.8.0" - }, - "dependencies": { - "readable-stream": "~1.1.8" - }, - "readme": "# stream-counter\n\nKeep track of how many bytes have been written to a stream.\n\n## Usage\n\n```js\nvar StreamCounter = require('stream-counter');\nvar counter = new StreamCounter();\ncounter.on('progress', function() {\n console.log(\"progress\", counter.bytes);\n});\nfs.createReadStream('foo.txt').pipe(counter);\n```\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/superjoe30/node-stream-counter/issues" - }, - "homepage": "https://github.com/superjoe30/node-stream-counter", - "_id": "stream-counter@0.2.0", - "_from": "stream-counter@~0.2.0" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/package.json deleted file mode 100644 index 0ffea981..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "multiparty", - "version": "2.2.0", - "description": "multipart/form-data parser which supports streaming", - "repository": { - "type": "git", - "url": "git@github.com:superjoe30/node-multiparty.git" - }, - "keywords": [ - "file", - "upload", - "formidable", - "stream", - "s3" - ], - "devDependencies": { - "findit": "0.1.1", - "hashish": "0.0.4", - "mocha": "~1.8.2", - "request": "~2.16.6", - "mkdirp": "~0.3.5", - "superagent": "~0.14.1" - }, - "scripts": { - "test": "ulimit -n 500 && mocha --timeout 4000 --reporter spec --recursive test/test.js" - }, - "engines": { - "node": ">=0.8.0" - }, - "license": "MIT", - "dependencies": { - "readable-stream": "~1.1.9", - "stream-counter": "~0.2.0" - }, - "readme": "[![Build Status](https://travis-ci.org/superjoe30/node-multiparty.png?branch=master)](https://travis-ci.org/superjoe30/node-multiparty)\n# multiparty\n\nParse http requests with content-type `multipart/form-data`, also known as file uploads.\n\nSee also [busboy](https://github.com/mscdex/busboy) - a\n[faster](https://github.com/mscdex/dicer/wiki/Benchmarks) alternative\nwhich may be worth looking into.\n\n### Why the fork?\n\n * This module uses the Node.js v0.10 streams properly, *even in Node.js v0.8*\n * It will not create a temp file for you unless you want it to.\n * Counts bytes and does math to help you figure out the `Content-Length` of\n each part.\n * You can easily stream uploads to s3 with\n [knox](https://github.com/LearnBoost/knox), for [example](examples/s3.js).\n * Less bugs. This code is simpler, has all deprecated functionality removed,\n has cleaner tests, and does not try to do anything beyond multipart stream\n parsing.\n\n## Installation\n\n```\nnpm install multiparty\n```\n\n## Usage\n\n * See [examples](examples).\n\nParse an incoming `multipart/form-data` request.\n\n```js\nvar multiparty = require('multiparty')\n , http = require('http')\n , util = require('util')\n\nhttp.createServer(function(req, res) {\n if (req.url === '/upload' && req.method === 'POST') {\n // parse a file upload\n var form = new multiparty.Form();\n\n form.parse(req, function(err, fields, files) {\n res.writeHead(200, {'content-type': 'text/plain'});\n res.write('received upload:\\n\\n');\n res.end(util.inspect({fields: fields, files: files}));\n });\n\n return;\n }\n\n // show a file upload form\n res.writeHead(200, {'content-type': 'text/html'});\n res.end(\n '
'+\n '
'+\n '
'+\n ''+\n '
'\n );\n}).listen(8080);\n```\n\n## API\n\n### multiparty.Form\n```js\nvar form = new multiparty.Form(options)\n```\nCreates a new form. Options:\n\n * `encoding` - sets encoding for the incoming form fields. Defaults to `utf8`.\n * `maxFieldSize` - Limits the amount of memory a field (not a file) can\n allocate in bytes. If this value is exceeded, an `error` event is emitted.\n The default size is 2MB.\n * `maxFields` - Limits the number of fields that will be parsed before\n emitting an `error` event. A file counts as a field in this case.\n Defaults to 1000.\n * `autoFields` - Enables `field` events. This is automatically set to `true`\n if you add a `field` listener.\n * `autoFiles` - Enables `file` events. This is automatically set to `true`\n if you add a `file` listener.\n * `uploadDir` - Only relevant when `autoFiles` is `true`. The directory for\n placing file uploads in. You can move them later using `fs.rename()`.\n Defaults to `os.tmpDir()`.\n * `hash` - Only relevant when `autoFiles` is `true`. If you want checksums\n calculated for incoming files, set this to either `sha1` or `md5`.\n Defaults to off.\n\n#### form.parse(request, [cb])\n\nParses an incoming node.js `request` containing form data. If `cb` is\nprovided, `autoFields` and `autoFiles` are set to `true` and all fields and\nfiles are collected and passed to the callback:\n\n```js\nform.parse(req, function(err, fieldsObject, filesObject, fieldsList, filesList) {\n // ...\n});\n```\n\nIt is often convenient to access a field or file by name. In this situation,\nuse `fieldsObject` or `filesObject`. However sometimes, as in the case of a\n`` the multipart stream will contain\nmultiple files of the same input name, and you are interested in all of them.\nIn this case, use `filesList`.\n\nAnother example is when you do not care what the field name of a file is; you\nare merely interested in a single upload. In this case, set `maxFields` to 1\n(assuming no other fields expected besides the file) and use `filesList[0]`.\n\n#### form.bytesReceived\n\nThe amount of bytes received for this form so far.\n\n#### form.bytesExpected\n\nThe expected number of bytes in this form.\n\n### Events\n\n#### 'error' (err)\n\nYou definitely want to handle this event. If not your server *will* crash when\nusers submit bogus multipart requests!\n\n#### 'part' (part)\n\nEmitted when a part is encountered in the request. `part` is a\n`ReadableStream`. It also has the following properties:\n\n * `headers` - the headers for this part. For example, you may be interested\n in `content-type`.\n * `name` - the field name for this part\n * `filename` - only if the part is an incoming file\n * `byteOffset` - the byte offset of this part in the request body\n * `byteCount` - assuming that this is the last part in the request,\n this is the size of this part in bytes. You could use this, for\n example, to set the `Content-Length` header if uploading to S3.\n If the part had a `Content-Length` header then that value is used\n here instead.\n\n#### 'aborted'\n\nEmitted when the request is aborted. This event will be followed shortly\nby an `error` event. In practice you do not need to handle this event.\n\n#### 'progress' (bytesReceived, bytesExpected)\n\n#### 'close'\n\nEmitted after all parts have been parsed and emitted. Not emitted if an `error`\nevent is emitted. This is typically when you would send your response.\n\n#### 'file' (name, file)\n\n**By default multiparty will not touch your hard drive.** But if you add this\nlistener, multiparty automatically sets `form.autoFiles` to `true` and will\nstream uploads to disk for you. \n\n * `name` - the field name for this file\n * `file` - an object with these properties:\n - `fieldName` - same as `name` - the field name for this file\n - `originalFilename` - the filename that the user reports for the file\n - `path` - the absolute path of the uploaded file on disk\n - `headers` - the HTTP headers that were sent along with this file\n - `size` - size of the file in bytes\n\nIf you set the `form.hash` option, then `file` will also contain a `hash`\nproperty which is the checksum of the file.\n\n#### 'field' (name, value)\n\n * `name` - field name\n * `value` - string field value\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/superjoe30/node-multiparty/issues" - }, - "homepage": "https://github.com/superjoe30/node-multiparty", - "_id": "multiparty@2.2.0", - "_shasum": "a567c2af000ad22dc8f2a653d91978ae1f5316f4", - "_from": "multiparty@2.2.0", - "_resolved": "https://registry.npmjs.org/multiparty/-/multiparty-2.2.0.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/pause/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/pause/package.json deleted file mode 100644 index 6801f2a4..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/pause/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "pause", - "version": "0.0.1", - "description": "Pause streams...", - "keywords": [], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "main": "index", - "readme": "\n# pause\n\n Pause streams...\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "_id": "pause@0.0.1", - "_shasum": "1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d", - "_from": "pause@0.0.1", - "_resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/qs/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/qs/package.json deleted file mode 100644 index 46ddecbf..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/qs/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "qs", - "description": "querystring parser", - "version": "0.6.6", - "keywords": [ - "query string", - "parser", - "component" - ], - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/node-querystring.git" - }, - "devDependencies": { - "mocha": "*", - "expect.js": "*" - }, - "scripts": { - "test": "make test" - }, - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "main": "index", - "engines": { - "node": "*" - }, - "readme": "# node-querystring\n\n query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others.\n\n## Installation\n\n $ npm install qs\n\n## Examples\n\n```js\nvar qs = require('qs');\n\nqs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com');\n// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } }\n\nqs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }})\n// => user[name]=Tobi&user[email]=tobi%40learnboost.com\n```\n\n## Testing\n\nInstall dev dependencies:\n\n $ npm install -d\n\nand execute:\n\n $ make test\n\nbrowser:\n\n $ open test/browser/index.html\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/node-querystring/issues" - }, - "homepage": "https://github.com/visionmedia/node-querystring", - "_id": "qs@0.6.6", - "_shasum": "6e015098ff51968b8a3c819001d5f2c89bc4b107", - "_from": "qs@0.6.6", - "_resolved": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/raw-body/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/raw-body/package.json deleted file mode 100644 index 136bd6b3..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/raw-body/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "raw-body", - "description": "Get and validate the raw body of a readable stream.", - "version": "1.1.4", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/stream-utils/raw-body.git" - }, - "bugs": { - "url": "https://github.com/stream-utils/raw-body/issues" - }, - "dependencies": { - "bytes": "~0.3.0" - }, - "devDependencies": { - "readable-stream": "~1.0.17", - "co": "3", - "gnode": "~0.0.4", - "mocha": "^1.14.0", - "through2": "~0.4.1", - "request": "^2.27.0", - "assert-tap": "~0.1.4" - }, - "scripts": { - "test": "NODE=gnode make test && node ./test/acceptance.js" - }, - "engines": { - "node": ">= 0.8.0" - }, - "readme": "# Raw Body [![Build Status](https://travis-ci.org/stream-utils/raw-body.svg?branch=master)](https://travis-ci.org/stream-utils/raw-body)\n\nGets the entire buffer of a stream either as a `Buffer` or a string.\nValidates the stream's length against an expected length and maximum limit.\nIdeal for parsing request bodies.\n\n## API\n\n```js\nvar getRawBody = require('raw-body')\n\napp.use(function (req, res, next) {\n getRawBody(req, {\n length: req.headers['content-length'],\n limit: '1mb',\n encoding: 'utf8'\n }, function (err, string) {\n if (err)\n return next(err)\n\n req.text = string\n next()\n })\n})\n```\n\nor in a Koa generator:\n\n```js\napp.use(function* (next) {\n var string = yield getRawBody(this.req, {\n length: this.length,\n limit: '1mb',\n encoding: 'utf8'\n })\n})\n```\n\n### getRawBody(stream, [options], [callback])\n\nReturns a thunk for yielding with generators.\n\nOptions:\n\n- `length` - The length length of the stream.\n If the contents of the stream do not add up to this length,\n an `400` error code is returned.\n- `limit` - The byte limit of the body.\n If the body ends up being larger than this limit,\n a `413` error code is returned.\n- `encoding` - The requested encoding.\n By default, a `Buffer` instance will be returned.\n Most likely, you want `utf8`.\n You can use any type of encoding supported by [StringDecoder](http://nodejs.org/api/string_decoder.html).\n You can also pass `true` which sets it to the default `utf8`\n\n`callback(err, res)`:\n\n- `err` - the following attributes will be defined if applicable:\n\n - `limit` - the limit in bytes\n - `length` and `expected` - the expected length of the stream\n - `received` - the received bytes\n - `status` and `statusCode` - the corresponding status code for the error\n - `type` - either `entity.too.large`, `request.size.invalid`, or `stream.encoding.set`\n\n- `res` - the result, either as a `String` if an encoding was set or a `Buffer` otherwise.\n\nIf an error occurs, the stream will be paused,\nand you are responsible for correctly disposing the stream.\nFor HTTP requests, no handling is required if you send a response.\nFor streams that use file descriptors, you should `stream.destroy()` or `stream.close()` to prevent leaks.\n\n## License\n\nThe MIT License (MIT)\n\nCopyright (c) 2013 Jonathan Ong me@jongleberry.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/stream-utils/raw-body", - "_id": "raw-body@1.1.4", - "_shasum": "f0b5624388d031f63da07f870c86cb9ccadcb67d", - "_from": "raw-body@1.1.4", - "_resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.4.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/response-time/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/response-time/package.json deleted file mode 100644 index 7cf3fe93..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/response-time/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "response-time", - "description": "X-Response-Time header for node.js", - "version": "1.0.0", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/expressjs/response-time.git" - }, - "bugs": { - "url": "https://github.com/expressjs/response-time/issues" - }, - "devDependencies": { - "mocha": "*", - "should": "*", - "supertest": "*" - }, - "scripts": { - "test": "make test" - }, - "readme": "# Response Time\n\nResponse time middleware extracted from connect.\n\nUsage:\n\n```js\nvar responseTime = require('response-time');\n\napp.use(responseTime());\n```\n\n## License\n\nThe MIT License (MIT)\n\nCopyright (c) 2014 Jonathan Ong me@jongleberry.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "README.md", - "homepage": "https://github.com/expressjs/response-time", - "_id": "response-time@1.0.0", - "_shasum": "c2bc8d08f3c359f97eae1d6da86eead175fabdc9", - "_from": "response-time@1.0.0", - "_resolved": "https://registry.npmjs.org/response-time/-/response-time-1.0.0.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/batch/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/batch/package.json deleted file mode 100644 index edae0ff2..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/batch/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "batch", - "version": "0.5.0", - "description": "Simple async batch", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "main": "index", - "readme": "\n# batch\n\n Simple async batch with concurrency control and progress reporting.\n\n## Installation\n\n```\n$ npm install batch\n```\n\n## API\n\n```js\nvar Batch = require('batch')\n , batch = new Batch;\n\nbatch.concurrency(4);\n\nids.forEach(function(id){\n batch.push(function(done){\n User.get(id, done);\n });\n});\n\nbatch.on('progress', function(e){\n\n});\n\nbatch.end(function(err, users){\n\n});\n```\n\n### Progress events\n\n Contain the \"job\" index, response value, duration information, and completion data.\n\n```js\n{ index: 1,\n value: 'bar',\n pending: 2,\n total: 3,\n complete: 2,\n percent: 66,\n start: Thu Oct 04 2012 12:25:53 GMT-0700 (PDT),\n end: Thu Oct 04 2012 12:25:53 GMT-0700 (PDT),\n duration: 0 }\n```\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2013 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "Readme.md", - "_id": "batch@0.5.0", - "_shasum": "fd2e05a7a5d696b4db9314013e285d8ff3557ec3", - "_from": "batch@0.5.0", - "_resolved": "https://registry.npmjs.org/batch/-/batch-0.5.0.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/package.json deleted file mode 100644 index 10b60bd3..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/package.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "negotiator", - "description": "HTTP content negotiation", - "version": "0.4.2", - "author": { - "name": "Federico Romero", - "email": "federico.romero@outboxlabs.com" - }, - "contributors": [ - { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - } - ], - "repository": { - "type": "git", - "url": "git://github.com/federomero/negotiator.git" - }, - "keywords": [ - "http", - "content negotiation", - "accept", - "accept-language", - "accept-encoding", - "accept-charset" - ], - "engine": "node >= 0.6", - "license": "MIT", - "devDependencies": { - "nodeunit": "0.8.x" - }, - "scripts": { - "test": "nodeunit test" - }, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "main": "lib/negotiator.js", - "readme": "# Negotiator [![Build Status](https://travis-ci.org/federomero/negotiator.png)](https://travis-ci.org/federomero/negotiator)\n\nAn HTTP content negotiator for node.js written in javascript.\n\n# Accept Negotiation\n\n Negotiator = require('negotiator')\n\n availableMediaTypes = ['text/html', 'text/plain', 'application/json']\n\n // The negotiator constructor receives a request object\n negotiator = new Negotiator(request)\n\n // Let's say Accept header is 'text/html, application/*;q=0.2, image/jpeg;q=0.8'\n\n negotiator.mediaTypes()\n // -> ['text/html', 'image/jpeg', 'application/*']\n\n negotiator.mediaTypes(availableMediaTypes)\n // -> ['text/html', 'application/json']\n\n negotiator.mediaType(availableMediaTypes)\n // -> 'text/html'\n\nYou can check a working example at `examples/accept.js`.\n\n## Methods\n\n`mediaTypes(availableMediaTypes)`:\n\nReturns an array of preferred media types ordered by priority from a list of available media types.\n\n`mediaType(availableMediaType)`:\n\nReturns the top preferred media type from a list of available media types.\n\n# Accept-Language Negotiation\n\n Negotiator = require('negotiator')\n\n negotiator = new Negotiator(request)\n\n availableLanguages = 'en', 'es', 'fr'\n\n // Let's say Accept-Language header is 'en;q=0.8, es, pt'\n\n negotiator.languages()\n // -> ['es', 'pt', 'en']\n\n negotiator.languages(availableLanguages)\n // -> ['es', 'en']\n\n language = negotiator.language(availableLanguages)\n // -> 'es'\n\nYou can check a working example at `examples/language.js`.\n\n## Methods\n\n`languages(availableLanguages)`:\n\nReturns an array of preferred languages ordered by priority from a list of available languages.\n\n`language(availableLanguages)`:\n\nReturns the top preferred language from a list of available languages.\n\n# Accept-Charset Negotiation\n\n Negotiator = require('negotiator')\n\n availableCharsets = ['utf-8', 'iso-8859-1', 'iso-8859-5']\n\n negotiator = new Negotiator(request)\n\n // Let's say Accept-Charset header is 'utf-8, iso-8859-1;q=0.8, utf-7;q=0.2'\n\n negotiator.charsets()\n // -> ['utf-8', 'iso-8859-1', 'utf-7']\n\n negotiator.charsets(availableCharsets)\n // -> ['utf-8', 'iso-8859-1']\n\n negotiator.charset(availableCharsets)\n // -> 'utf-8'\n\nYou can check a working example at `examples/charset.js`.\n\n## Methods\n\n`charsets(availableCharsets)`:\n\nReturns an array of preferred charsets ordered by priority from a list of available charsets.\n\n`charset(availableCharsets)`:\n\nReturns the top preferred charset from a list of available charsets.\n\n# Accept-Encoding Negotiation\n\n Negotiator = require('negotiator').Negotiator\n\n availableEncodings = ['identity', 'gzip']\n\n negotiator = new Negotiator(request)\n\n // Let's say Accept-Encoding header is 'gzip, compress;q=0.2, identity;q=0.5'\n\n negotiator.encodings()\n // -> ['gzip', 'identity', 'compress']\n\n negotiator.encodings(availableEncodings)\n // -> ['gzip', 'identity']\n\n negotiator.encoding(availableEncodings)\n // -> 'gzip'\n\nYou can check a working example at `examples/encoding.js`.\n\n## Methods\n\n`encodings(availableEncodings)`:\n\nReturns an array of preferred encodings ordered by priority from a list of available encodings.\n\n`encoding(availableEncodings)`:\n\nReturns the top preferred encoding from a list of available encodings.\n\n# License\n\nMIT\n", - "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/federomero/negotiator/issues" - }, - "homepage": "https://github.com/federomero/negotiator", - "dependencies": {}, - "_id": "negotiator@0.4.2", - "_shasum": "8c43ea7e4c40ddfe40c3c0234c4ef77500b8fd37", - "_from": "negotiator@0.4.2", - "_resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.2.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/package.json deleted file mode 100644 index 42549c8e..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "serve-index", - "description": "Serve directory listings", - "version": "1.0.1", - "author": { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/expressjs/serve-index.git" - }, - "bugs": { - "url": "https://github.com/expressjs/serve-index/issues" - }, - "dependencies": { - "batch": "0.5.0", - "negotiator": "0.4.2" - }, - "devDependencies": { - "connect": "^2.13.0", - "mocha": "^1.17.0", - "should": "^3.0.0", - "supertest": "~0.9.0" - }, - "engines": { - "node": ">= 0.8.0" - }, - "scripts": { - "test": "mocha --reporter spec --require should" - }, - "readme": "# Serve Index\n\nPreviously `connect.directory()`.\n\nUsage:\n\n```js\nvar connect = require('connect');\nvar serveIndex = require('serve-index');\n\nvar app = connect();\n\napp.use(serveIndex('public/ftp', {'icons': true}));\napp.listen();\n```\n\n## License\n\nThe MIT License (MIT)\n\nCopyright (c) 2014 Douglas Christopher Wilson\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\nThe [Silk](http://www.famfamfam.com/lab/icons/silk/) icons are created\nby/copyright of [FAMFAMFAM](http://www.famfamfam.com/).\n", - "readmeFilename": "Readme.md", - "homepage": "https://github.com/expressjs/serve-index", - "_id": "serve-index@1.0.1", - "_shasum": "2782ee8ede6cccaae54957962c4715e8ce1921a6", - "_from": "serve-index@1.0.1", - "_resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.0.1.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-static/node_modules/parseurl/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-static/node_modules/parseurl/package.json deleted file mode 100644 index 46f36abc..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-static/node_modules/parseurl/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "parseurl", - "description": "parse a url with memoization", - "version": "1.0.1", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "repository": { - "type": "git", - "url": "https://github.com/expressjs/parseurl.git" - }, - "bugs": { - "url": "https://github.com/expressjs/parseurl/issues", - "email": "me@jongleberry.com" - }, - "license": "MIT", - "readme": "# parseurl\n\nParse a URL with memoization.\n\n## API\n\n### var pathname = parseurl(req)\n\n`pathname` can then be passed to a router or something.\n\n## LICENSE\n\n(The MIT License)\n\nCopyright (c) 2014 Jonathan Ong \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "README.md", - "homepage": "https://github.com/expressjs/parseurl", - "_id": "parseurl@1.0.1", - "_shasum": "2e57dce6efdd37c3518701030944c22bf388b7b4", - "_from": "parseurl@1.0.1", - "_resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.0.1.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-static/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-static/package.json deleted file mode 100644 index 33d1e394..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-static/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "serve-static", - "description": "Serve static files", - "version": "1.1.0", - "author": { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/expressjs/serve-static.git" - }, - "bugs": { - "url": "https://github.com/expressjs/serve-static/issues" - }, - "dependencies": { - "parseurl": "1.0.1", - "send": "0.3.0" - }, - "devDependencies": { - "connect": "~2.14.1", - "mocha": "~1.18.2", - "should": "~3.3.0", - "supertest": "~0.11.0" - }, - "engines": { - "node": ">= 0.8.0" - }, - "scripts": { - "test": "mocha --reporter spec --require should" - }, - "readme": "# Serve Static\n\nPreviously `connect.static()`.\n\n[![Build Status](https://travis-ci.org/expressjs/serve-static.svg?branch=master)](https://travis-ci.org/expressjs/serve-static)\n\nUsage:\n\n```js\nvar connect = require('connect');\nvar serveStatic = require('serve-static');\n\nvar app = connect();\n\napp.use(serveStatic('public/ftp', {'index': ['default.html', 'default.htm']}));\napp.listen();\n```\n\n## License\n\nThe MIT License (MIT)\n\nCopyright (c) 2014 Douglas Christopher Wilson\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n", - "readmeFilename": "Readme.md", - "homepage": "https://github.com/expressjs/serve-static", - "_id": "serve-static@1.1.0", - "_shasum": "454dfa05bb3ddd4e701a8915b83a278aa91c5643", - "_from": "serve-static@1.1.0", - "_resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.1.0.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/setimmediate/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/setimmediate/package.json deleted file mode 100644 index e8b0c0c7..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/setimmediate/package.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "name": "setimmediate", - "description": "A shim for the setImmediate efficient script yielding API", - "version": "1.0.1", - "author": { - "name": "NobleJS" - }, - "contributors": [ - { - "name": "Domenic Denicola", - "email": "domenic@domenicdenicola.com", - "url": "http://domenicdenicola.com" - }, - { - "name": "Donavon West" - }, - { - "name": "Yaffle" - } - ], - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/NobleJS/setImmediate.git" - }, - "bugs": { - "url": "http://github.com/NobleJS/setImmediate/issues" - }, - "main": "setImmediate.js", - "scripts": { - "lint": "jshint setImmediate.js", - "test": "mocha test/tests.js", - "test-browser": "opener http://localhost:9000 && zuul --server 9000 test/tests.js --wwwroot test/", - "test-browser-only": "opener http://localhost:9007/test/browserOnly/index.html && http-server . -p 9007" - }, - "devDependencies": { - "jshint": ">= 0.9.1", - "mocha": ">= 1.7.4", - "zuul": ">= 0.0.1", - "http-server": ">= 0.5.3", - "opener": ">= 1.1.0" - }, - "testling": { - "browsers": { - "ie": [ - 6, - 7, - 8, - 9 - ], - "chrome": [ - 4, - 23, - "canary" - ], - "firefox": [ - 3, - 3.5, - 3.6, - 4, - 17, - "nightly" - ], - "opera": [ - 10, - 10.5, - 11, - 11.5, - 11.6, - 12, - "next" - ], - "safari": [ - "5.0.5", - 5.1 - ] - }, - "harness": "mocha", - "files": "test/tests.js" - }, - "readme": "
\n \"Testling-CI\n\n\n# setImmediate.js\n**A NobleJS production**\n\n## Introduction\n\n**setImmediate.js** is a highly cross-browser implementation of the `setImmediate` and `clearImmediate` APIs, currently\na [W3C draft spec][spec] from the Web Performance Working Group. `setImmediate` allows scripts to yield to the browser,\nexecuting a given operation asynchronously, in a manner that is typically more efficient and consumes less power than\nthe usual `setTimeout(..., 0)` pattern.\n\nsetImmediate.js runs at “full speed” in the following browsers and environments, using various clever tricks:\n\n * Internet Explorer 6+\n * Firefox 3+\n * WebKit\n * Opera 9.5+\n * Node.js\n * Web workers in browsers that support `MessageChannel`, which I can't find solid info on.\n\nIn all other browsers we fall back to using `setTimeout`, so it's always safe to use.\n\n## The Tricks\n\n### `process.nextTick`\n\nIn Node.js versions below 0.9, `setImmediate` is not available, but [`process.nextTick`][nextTIck] is, so we use it to\nshim support for a global `setImmediate`. In Node.js 0.9 and above, `setImmediate` is available.\n\nNote that we check for *actual* Node.js environments, not emulated ones like those produced by browserify or similar.\nSuch emulated environments often already include a `process.nextTick` shim that's not as browser-compatible as\nsetImmediate.js.\n\n### `postMessage`\n\nIn Firefox 3+, Internet Explorer 9+, all modern WebKit browsers, and Opera 9.5+, [`postMessage`][postMessage] is\navailable and provides a good way to queue tasks on the event loop. It's quite the abuse, using a cross-document\nmessaging protocol within the same document simply to get access to the event loop task queue, but until there are\nnative implementations, this is the best option.\n\nNote that Internet Explorer 8 includes a synchronous version of `postMessage`. We detect this, or any other such\nsynchronous implementation, and fall back to another trick.\n\n### `MessageChannel`\n\nUnfortunately, `postMessage` has completely different semantics inside web workers, and so cannot be used there. So we\nturn to [`MessageChannel`][MessageChannel], which has worse browser support, but does work inside a web worker.\n\n### `

", + "expected": [ + { + "event": "opentagname", + "data": [ + "p" + ] + }, + { + "event": "opentag", + "data": [ + "p", + {} + ] + }, + { + "event": "opentagname", + "data": [ + "script" + ] + }, + { + "event": "attribute", + "data": [ + "type", + "text/template" + ] + }, + { + "event": "opentag", + "data": [ + "script", + { + "type": "text/template" + } + ] + }, + { + "event": "text", + "data": [ + "

Heading1

" + ] + }, + { + "event": "closetag", + "data": [ + "script" + ] + }, + { + "event": "closetag", + "data": [ + "p" + ] + } + ] +} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/03-lowercase_tags.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/03-lowercase_tags.json new file mode 100644 index 00000000..9b58c599 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/03-lowercase_tags.json @@ -0,0 +1,46 @@ +{ + "name": "Lowercase tags", + "options": { + "handler": {}, + "parser": { + "lowerCaseTags": true + } + }, + "html": "

adsf

", + "expected": [ + { + "event": "opentagname", + "data": [ + "h1" + ] + }, + { + "event": "attribute", + "data": [ + "class", + "test" + ] + }, + { + "event": "opentag", + "data": [ + "h1", + { + "class": "test" + } + ] + }, + { + "event": "text", + "data": [ + "adsf" + ] + }, + { + "event": "closetag", + "data": [ + "h1" + ] + } + ] +} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/04-cdata.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/04-cdata.json new file mode 100644 index 00000000..6032b688 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/04-cdata.json @@ -0,0 +1,50 @@ +{ + "name": "CDATA", + "options": { + "handler": {}, + "parser": {"xmlMode": true} + }, + "html": "<> fo]]>", + "expected": [ + { + "event": "opentagname", + "data": [ + "tag" + ] + }, + { + "event": "opentag", + "data": [ + "tag", + {} + ] + }, + { + "event": "cdatastart", + "data": [] + }, + { + "event": "text", + "data": [ + " asdf ><> fo" + ] + }, + { + "event": "cdataend", + "data": [] + }, + { + "event": "closetag", + "data": [ + "tag" + ] + }, + { + "event": "processinginstruction", + "data": [ + "![CD", + "![CD" + ] + } + ] +} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/05-cdata-special.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/05-cdata-special.json new file mode 100644 index 00000000..686cb1a2 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/05-cdata-special.json @@ -0,0 +1,35 @@ +{ + "name": "CDATA (inside special)", + "options": { + "handler": {}, + "parser": {} + }, + "html": "", + "expected": [ + { + "event": "opentagname", + "data": [ + "script" + ] + }, + { + "event": "opentag", + "data": [ + "script", + {} + ] + }, + { + "event": "text", + "data": [ + "/*<> fo/*]]>*/" + ] + }, + { + "event": "closetag", + "data": [ + "script" + ] + } + ] +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/06-leading-lt.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/06-leading-lt.json new file mode 100644 index 00000000..fcec8528 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/06-leading-lt.json @@ -0,0 +1,16 @@ +{ + "name": "leading lt", + "options": { + "handler": {}, + "parser": {} + }, + "html": ">a>", + "expected": [ + { + "event": "text", + "data": [ + ">a>" + ] + } + ] +} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/07-self-closing.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/07-self-closing.json new file mode 100644 index 00000000..49ed93b8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/07-self-closing.json @@ -0,0 +1,67 @@ +{ + "name": "Self-closing tags", + "options": { + "handler": { + + }, + "parser": { + + } + }, + "html": "Foo
", + "expected": [ + { + "event": "opentagname", + "data": [ + "a" + ] + }, + { + "event": "attribute", + "data": [ + "href", + "http://test.com/" + ] + }, + { + "event": "opentag", + "data": [ + "a", + { + "href": "http://test.com/" + } + ] + }, + { + "event": "text", + "data": [ + "Foo" + ] + }, + { + "event": "closetag", + "data": [ + "a" + ] + }, + { + "event": "opentagname", + "data": [ + "hr" + ] + }, + { + "event": "opentag", + "data": [ + "hr", + {} + ] + }, + { + "event": "closetag", + "data": [ + "hr" + ] + } + ] +} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/08-implicit-close-tags.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/08-implicit-close-tags.json new file mode 100644 index 00000000..331e7856 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/08-implicit-close-tags.json @@ -0,0 +1,71 @@ +{ + "name": "Implicit close tags", + "options": {}, + "html": "
  1. TH

    Heading

    Div
    Div2
  2. Heading 2

Para

Heading 4

", + "expected": [ + { "event": "opentagname", "data": [ "ol" ] }, + { "event": "opentag", "data": [ "ol", {} ] }, + { "event": "opentagname", "data": [ "li" ] }, + { "event": "attribute", "data": [ "class", "test" ] }, + { "event": "opentag", "data": [ "li", { "class": "test" } ] }, + { "event": "opentagname", "data": [ "div" ] }, + { "event": "opentag", "data": [ "div", {} ] }, + { "event": "opentagname", "data": [ "table" ] }, + { "event": "attribute", "data": [ "style", "width:100%" ] }, + { "event": "opentag", "data": [ "table", { "style": "width:100%" } ] }, + { "event": "opentagname", "data": [ "tr" ] }, + { "event": "opentag", "data": [ "tr", {} ] }, + { "event": "opentagname", "data": [ "th" ] }, + { "event": "opentag", "data": [ "th", {} ] }, + { "event": "text", "data": [ "TH" ] }, + { "event": "closetag", "data": [ "th" ] }, + { "event": "opentagname", "data": [ "td" ] }, + { "event": "attribute", "data": [ "colspan", "2" ] }, + { "event": "opentag", "data": [ "td", { "colspan": "2" } ] }, + { "event": "opentagname", "data": [ "h3" ] }, + { "event": "opentag", "data": [ "h3", {} ] }, + { "event": "text", "data": [ "Heading" ] }, + { "event": "closetag", "data": [ "h3" ] }, + { "event": "closetag", "data": [ "td" ] }, + { "event": "closetag", "data": [ "tr" ] }, + { "event": "opentagname", "data": [ "tr" ] }, + { "event": "opentag", "data": [ "tr", {} ] }, + { "event": "opentagname", "data": [ "td" ] }, + { "event": "opentag", "data": [ "td", {} ] }, + { "event": "opentagname", "data": [ "div" ] }, + { "event": "opentag", "data": [ "div", {} ] }, + { "event": "text", "data": [ "Div" ] }, + { "event": "closetag", "data": [ "div" ] }, + { "event": "closetag", "data": [ "td" ] }, + { "event": "opentagname", "data": [ "td" ] }, + { "event": "opentag", "data": [ "td", {} ] }, + { "event": "opentagname", "data": [ "div" ] }, + { "event": "opentag", "data": [ "div", {} ] }, + { "event": "text", "data": [ "Div2" ] }, + { "event": "closetag", "data": [ "div" ] }, + { "event": "closetag", "data": [ "td" ] }, + { "event": "closetag", "data": [ "tr" ] }, + { "event": "closetag", "data": [ "table" ] }, + { "event": "closetag", "data": [ "div" ] }, + { "event": "closetag", "data": [ "li" ] }, + { "event": "opentagname", "data": [ "li" ] }, + { "event": "opentag", "data": [ "li", {} ] }, + { "event": "opentagname", "data": [ "div" ] }, + { "event": "opentag", "data": [ "div", {} ] }, + { "event": "opentagname", "data": [ "h3" ] }, + { "event": "opentag", "data": [ "h3", {} ] }, + { "event": "text", "data": [ "Heading 2" ] }, + { "event": "closetag", "data": [ "h3" ] }, + { "event": "closetag", "data": [ "div" ] }, + { "event": "closetag", "data": [ "li" ] }, + { "event": "closetag", "data": [ "ol" ] }, + { "event": "opentagname", "data": [ "p" ] }, + { "event": "opentag", "data": [ "p", {} ] }, + { "event": "text", "data": [ "Para" ] }, + { "event": "closetag", "data": [ "p" ] }, + { "event": "opentagname", "data": [ "h4" ] }, + { "event": "opentag", "data": [ "h4", {} ] }, + { "event": "text", "data": [ "Heading 4" ] }, + { "event": "closetag", "data": [ "h4" ] } + ] +} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/09-attributes.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/09-attributes.json new file mode 100644 index 00000000..afa6e4a9 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/09-attributes.json @@ -0,0 +1,68 @@ +{ + "name": "attributes (no white space, no value, no quotes)", + "options": { + "handler": {}, + "parser": {} + }, + "html": "", + "expected": [ + { + "event": "opentagname", + "data": [ + "button" + ] + }, + { + "event": "attribute", + "data": [ + "class", + "test0" + ] + }, + { + "event": "attribute", + "data": [ + "title", + "test1" + ] + }, + { + "event": "attribute", + "data": [ + "disabled", + "" + ] + }, + { + "event": "attribute", + "data": [ + "value", + "test2" + ] + }, + { + "event": "opentag", + "data": [ + "button", + { + "class": "test0", + "title": "test1", + "disabled": "", + "value": "test2" + } + ] + }, + { + "event": "text", + "data": [ + "adsf" + ] + }, + { + "event": "closetag", + "data": [ + "button" + ] + } + ] +} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/10-crazy-attrib.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/10-crazy-attrib.json new file mode 100644 index 00000000..00bad5f7 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/10-crazy-attrib.json @@ -0,0 +1,52 @@ +{ + "name": "crazy attribute", + "options": { + "handler": {}, + "parser": {} + }, + "html": "

stuff

", + "expected": [ + { + "event": "opentagname", + "data": [ + "p" + ] + }, + { + "event": "opentag", + "data": [ + "p", + {} + ] + }, + { + "event": "opentagname", + "data": [ + "script" + ] + }, + { + "event": "opentag", + "data": [ + "script", + {} + ] + }, + { + "event": "text", + "data": [ + "var str = '", + "expected": [ + { + "event": "opentagname", + "data": [ + "script" + ] + }, + { + "event": "opentag", + "data": [ + "script", + {} + ] + }, + { + "event": "text", + "data": [ + "", + "expected": [ + { + "event": "text", + "data": [ + "< >" + ] + } + ] +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/26-not-quite-closed.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/26-not-quite-closed.json new file mode 100644 index 00000000..85044401 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/26-not-quite-closed.json @@ -0,0 +1,35 @@ +{ + "name": "Not quite closed", + "options": {}, + "html": "", + "expected": [ + { + "event": "opentagname", + "data": [ + "foo" + ] + }, + { + "event": "attribute", + "data": [ + "bar", + "" + ] + }, + { + "event": "opentag", + "data": [ + "foo", + { + "bar": "" + } + ] + }, + { + "event": "closetag", + "data": [ + "foo" + ] + } + ] +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/27-entities_in_attributes.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/27-entities_in_attributes.json new file mode 100644 index 00000000..b03cbdf5 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/27-entities_in_attributes.json @@ -0,0 +1,62 @@ +{ + "name": "Entities in attributes", + "options": { + "handler": {}, + "parser": {"decodeEntities": true} + }, + "html": "", + "expected": [ + { + "event": "opentagname", + "data": [ + "foo" + ] + }, + { + "event": "attribute", + "data": [ + "bar", + "&" + ] + }, + { + "event": "attribute", + "data": [ + "baz", + "&" + ] + }, + { + "event": "attribute", + "data": [ + "boo", + "&" + ] + }, + { + "event": "attribute", + "data": [ + "noo", + "" + ] + }, + { + "event": "opentag", + "data": [ + "foo", + { + "bar": "&", + "baz": "&", + "boo": "&", + "noo": "" + } + ] + }, + { + "event": "closetag", + "data": [ + "foo" + ] + } + ] +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/28-cdata_in_html.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/28-cdata_in_html.json new file mode 100644 index 00000000..80c033b3 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/28-cdata_in_html.json @@ -0,0 +1,9 @@ +{ + "name": "CDATA in HTML", + "options": {}, + "html": "", + "expected": [ + { "event": "comment", "data": [ "[CDATA[ foo ]]" ] }, + { "event": "commentend", "data": [] } + ] +} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/29-comment_edge-cases.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/29-comment_edge-cases.json new file mode 100644 index 00000000..9d9709ab --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Events/29-comment_edge-cases.json @@ -0,0 +1,18 @@ +{ + "name": "Comment edge-cases", + "options": {}, + "html": "", + "expected": [ + { "event": "comment", "data": [ " a-b-> " ] }, + { "event": "commentend", "data": [] } + ] +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Feeds/01-rss.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Feeds/01-rss.js new file mode 100644 index 00000000..a3aae479 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Feeds/01-rss.js @@ -0,0 +1,34 @@ +exports.name = "RSS (2.0)"; +exports.file = "/RSS_Example.xml"; +exports.expected = { + type: "rss", + id: "", + title: "Liftoff News", + link: "http://liftoff.msfc.nasa.gov/", + description: "Liftoff to Space Exploration.", + updated: new Date("Tue, 10 Jun 2003 09:41:01 GMT"), + author: "editor@example.com", + items: [{ + id: "http://liftoff.msfc.nasa.gov/2003/06/03.html#item573", + title: "Star City", + link: "http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp", + description: "How do Americans get ready to work with Russians aboard the International Space Station? They take a crash course in culture, language and protocol at Russia's <a href=\"http://howe.iki.rssi.ru/GCTC/gctc_e.htm\">Star City</a>.", + pubDate: new Date("Tue, 03 Jun 2003 09:39:21 GMT") + }, { + id: "http://liftoff.msfc.nasa.gov/2003/05/30.html#item572", + description: "Sky watchers in Europe, Asia, and parts of Alaska and Canada will experience a <a href=\"http://science.nasa.gov/headlines/y2003/30may_solareclipse.htm\">partial eclipse of the Sun</a> on Saturday, May 31st.", + pubDate: new Date("Fri, 30 May 2003 11:06:42 GMT") + }, { + id: "http://liftoff.msfc.nasa.gov/2003/05/27.html#item571", + title: "The Engine That Does More", + link: "http://liftoff.msfc.nasa.gov/news/2003/news-VASIMR.asp", + description: "Before man travels to Mars, NASA hopes to design new engines that will let us fly through the Solar System more quickly. The proposed VASIMR engine would do that.", + pubDate: new Date("Tue, 27 May 2003 08:37:32 GMT") + }, { + id: "http://liftoff.msfc.nasa.gov/2003/05/20.html#item570", + title: "Astronauts' Dirty Laundry", + link: "http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp", + description: "Compared to earlier spacecraft, the International Space Station has many luxuries, but laundry facilities are not one of them. Instead, astronauts have other options.", + pubDate: new Date("Tue, 20 May 2003 08:56:02 GMT") + }] +}; \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Feeds/02-atom.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Feeds/02-atom.js new file mode 100644 index 00000000..5b5d88eb --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Feeds/02-atom.js @@ -0,0 +1,18 @@ +exports.name = "Atom (1.0)"; +exports.file = "/Atom_Example.xml"; +exports.expected = { + type: "atom", + id: "urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6", + title: "Example Feed", + link: "http://example.org/feed/", + description: "A subtitle.", + updated: new Date("2003-12-13T18:30:02Z"), + author: "johndoe@example.com", + items: [{ + id: "urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a", + title: "Atom-Powered Robots Run Amok", + link: "http://example.org/2003/12/13/atom03", + description: "Some content.", + pubDate: new Date("2003-12-13T18:30:02Z") + }] +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Feeds/03-rdf.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Feeds/03-rdf.js new file mode 100644 index 00000000..b38ee131 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Feeds/03-rdf.js @@ -0,0 +1,20 @@ +exports.name = "RDF test"; +exports.file = "/RDF_Example.xml"; +exports.expected = { + "type": "rdf", + "id": "", + "title": "craigslist | all community in SF bay area", + "link": "http://sfbay.craigslist.org/ccc/", + "items": [ + { + "title": "Music Equipment Repair and Consignment", + "link": "http://sfbay.craigslist.org/sby/muc/2681301534.html", + "description": "San Jose Rock Shop offers musical instrument repair and consignment! (408) 215-2065

We are pleased to announce our NEW LOCATION: 1199 N 5th st. San Jose, ca 95112. Please call ahead, by appointment only.

Recently featured by Metro Newspaper in their 2011 Best of the Silicon Valley edition see it online here:
http://www.metroactive.com/best-of-silicon-valley/2011/music-nightlife/editor-picks.html

Guitar Set up (acoustic and electronic) $40!" + }, + { + "title": "Ride Offered - Oakland/BART to LA/SFV - TODAY 3PM 11/04 (oakland north / temescal)", + "link": "http://sfbay.craigslist.org/eby/rid/2685010755.html", + "description": "Im offering a lift for up to two people from Oakland (or near any BART station in the East Bay/580/880 Corridor, or San Jose/Morgan Hill, Gilroy) to the San Fernando Valley / Los Angeles area. Specifically, Im leaving from Oakland between 2:30 and 3:00pm (this is flexible, but if I leave too late my girlfriend will kill me), and heading to Woodland Hills via the 580, I-5, 405, and 101." + } + ] +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Stream/01-basic.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Stream/01-basic.json new file mode 100644 index 00000000..e0766e79 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Stream/01-basic.json @@ -0,0 +1,83 @@ +{ + "name": "Basic html", + "options": {}, + "file": "Basic.html", + "expected": [ + { + "event": "processinginstruction", + "data": [ + "!doctype", + "!DOCTYPE html" + ] + }, + { + "event": "opentagname", + "data": [ + "html" + ] + }, + { + "event": "opentag", + "data": [ + "html", + {} + ] + }, + { + "event": "opentagname", + "data": [ + "title" + ] + }, + { + "event": "opentag", + "data": [ + "title", + {} + ] + }, + { + "event": "text", + "data": [ + "The Title" + ] + }, + { + "event": "closetag", + "data": [ + "title" + ] + }, + { + "event": "opentagname", + "data": [ + "body" + ] + }, + { + "event": "opentag", + "data": [ + "body", + {} + ] + }, + { + "event": "text", + "data": [ + "Hello world" + ] + }, + { + "event": "closetag", + "data": [ + "body" + ] + }, + { + "event": "closetag", + "data": [ + "html" + ] + } + ] +} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Stream/02-RSS.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Stream/02-RSS.json new file mode 100644 index 00000000..0d5921ce --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Stream/02-RSS.json @@ -0,0 +1,1093 @@ +{ + "name": "RSS feed", + "options": {"xmlMode": true}, + "file": "RSS_Example.xml", + "expected": [ + { + "event": "processinginstruction", + "data": [ + "?xml", + "?xml version=\"1.0\"?" + ] + }, + { + "event": "text", + "data": [ + "\n" + ] + }, + { + "event": "comment", + "data": [ + " http://cyber.law.harvard.edu/rss/examples/rss2sample.xml " + ] + }, + { + "event": "commentend", + "data": [] + }, + { + "event": "text", + "data": [ + "\n" + ] + }, + { + "event": "opentagname", + "data": [ + "rss" + ] + }, + { + "event": "attribute", + "data": [ + "version", + "2.0" + ] + }, + { + "event": "opentag", + "data": [ + "rss", + { + "version": "2.0" + } + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "channel" + ] + }, + { + "event": "opentag", + "data": [ + "channel", + {} + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "title" + ] + }, + { + "event": "opentag", + "data": [ + "title", + {} + ] + }, + { + "event": "text", + "data": [ + "Liftoff News" + ] + }, + { + "event": "closetag", + "data": [ + "title" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "link" + ] + }, + { + "event": "opentag", + "data": [ + "link", + {} + ] + }, + { + "event": "text", + "data": [ + "http://liftoff.msfc.nasa.gov/" + ] + }, + { + "event": "closetag", + "data": [ + "link" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "description" + ] + }, + { + "event": "opentag", + "data": [ + "description", + {} + ] + }, + { + "event": "text", + "data": [ + "Liftoff to Space Exploration." + ] + }, + { + "event": "closetag", + "data": [ + "description" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "language" + ] + }, + { + "event": "opentag", + "data": [ + "language", + {} + ] + }, + { + "event": "text", + "data": [ + "en-us" + ] + }, + { + "event": "closetag", + "data": [ + "language" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "pubDate" + ] + }, + { + "event": "opentag", + "data": [ + "pubDate", + {} + ] + }, + { + "event": "text", + "data": [ + "Tue, 10 Jun 2003 04:00:00 GMT" + ] + }, + { + "event": "closetag", + "data": [ + "pubDate" + ] + }, + { + "event": "text", + "data": [ + "\n\n " + ] + }, + { + "event": "opentagname", + "data": [ + "lastBuildDate" + ] + }, + { + "event": "opentag", + "data": [ + "lastBuildDate", + {} + ] + }, + { + "event": "text", + "data": [ + "Tue, 10 Jun 2003 09:41:01 GMT" + ] + }, + { + "event": "closetag", + "data": [ + "lastBuildDate" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "docs" + ] + }, + { + "event": "opentag", + "data": [ + "docs", + {} + ] + }, + { + "event": "text", + "data": [ + "http://blogs.law.harvard.edu/tech/rss" + ] + }, + { + "event": "closetag", + "data": [ + "docs" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "generator" + ] + }, + { + "event": "opentag", + "data": [ + "generator", + {} + ] + }, + { + "event": "text", + "data": [ + "Weblog Editor 2.0" + ] + }, + { + "event": "closetag", + "data": [ + "generator" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "managingEditor" + ] + }, + { + "event": "opentag", + "data": [ + "managingEditor", + {} + ] + }, + { + "event": "text", + "data": [ + "editor@example.com" + ] + }, + { + "event": "closetag", + "data": [ + "managingEditor" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "webMaster" + ] + }, + { + "event": "opentag", + "data": [ + "webMaster", + {} + ] + }, + { + "event": "text", + "data": [ + "webmaster@example.com" + ] + }, + { + "event": "closetag", + "data": [ + "webMaster" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "item" + ] + }, + { + "event": "opentag", + "data": [ + "item", + {} + ] + }, + { + "event": "text", + "data": [ + "\n\n " + ] + }, + { + "event": "opentagname", + "data": [ + "title" + ] + }, + { + "event": "opentag", + "data": [ + "title", + {} + ] + }, + { + "event": "text", + "data": [ + "Star City" + ] + }, + { + "event": "closetag", + "data": [ + "title" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "link" + ] + }, + { + "event": "opentag", + "data": [ + "link", + {} + ] + }, + { + "event": "text", + "data": [ + "http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp" + ] + }, + { + "event": "closetag", + "data": [ + "link" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "description" + ] + }, + { + "event": "opentag", + "data": [ + "description", + {} + ] + }, + { + "event": "text", + "data": [ + "How do Americans get ready to work with Russians aboard the International Space Station? They take a crash course in culture, language and protocol at Russia's <a href=\"http://howe.iki.rssi.ru/GCTC/gctc_e.htm\">Star City</a>." + ] + }, + { + "event": "closetag", + "data": [ + "description" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "pubDate" + ] + }, + { + "event": "opentag", + "data": [ + "pubDate", + {} + ] + }, + { + "event": "text", + "data": [ + "Tue, 03 Jun 2003 09:39:21 GMT" + ] + }, + { + "event": "closetag", + "data": [ + "pubDate" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "guid" + ] + }, + { + "event": "opentag", + "data": [ + "guid", + {} + ] + }, + { + "event": "text", + "data": [ + "http://liftoff.msfc.nasa.gov/2003/06/03.html#item573" + ] + }, + { + "event": "closetag", + "data": [ + "guid" + ] + }, + { + "event": "text", + "data": [ + "\n\n " + ] + }, + { + "event": "closetag", + "data": [ + "item" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "item" + ] + }, + { + "event": "opentag", + "data": [ + "item", + {} + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "description" + ] + }, + { + "event": "opentag", + "data": [ + "description", + {} + ] + }, + { + "event": "text", + "data": [ + "Sky watchers in Europe, Asia, and parts of Alaska and Canada will experience a <a href=\"http://science.nasa.gov/headlines/y2003/30may_solareclipse.htm\">partial eclipse of the Sun</a> on Saturday, May 31st." + ] + }, + { + "event": "closetag", + "data": [ + "description" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "pubDate" + ] + }, + { + "event": "opentag", + "data": [ + "pubDate", + {} + ] + }, + { + "event": "text", + "data": [ + "Fri, 30 May 2003 11:06:42 GMT" + ] + }, + { + "event": "closetag", + "data": [ + "pubDate" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "guid" + ] + }, + { + "event": "opentag", + "data": [ + "guid", + {} + ] + }, + { + "event": "text", + "data": [ + "http://liftoff.msfc.nasa.gov/2003/05/30.html#item572" + ] + }, + { + "event": "closetag", + "data": [ + "guid" + ] + }, + { + "event": "text", + "data": [ + "\n\n " + ] + }, + { + "event": "closetag", + "data": [ + "item" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "item" + ] + }, + { + "event": "opentag", + "data": [ + "item", + {} + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "title" + ] + }, + { + "event": "opentag", + "data": [ + "title", + {} + ] + }, + { + "event": "text", + "data": [ + "The Engine That Does More" + ] + }, + { + "event": "closetag", + "data": [ + "title" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "link" + ] + }, + { + "event": "opentag", + "data": [ + "link", + {} + ] + }, + { + "event": "text", + "data": [ + "http://liftoff.msfc.nasa.gov/news/2003/news-VASIMR.asp" + ] + }, + { + "event": "closetag", + "data": [ + "link" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "description" + ] + }, + { + "event": "opentag", + "data": [ + "description", + {} + ] + }, + { + "event": "text", + "data": [ + "Before man travels to Mars, NASA hopes to design new engines that will let us fly through the Solar System more quickly. The proposed VASIMR engine would do that." + ] + }, + { + "event": "closetag", + "data": [ + "description" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "pubDate" + ] + }, + { + "event": "opentag", + "data": [ + "pubDate", + {} + ] + }, + { + "event": "text", + "data": [ + "Tue, 27 May 2003 08:37:32 GMT" + ] + }, + { + "event": "closetag", + "data": [ + "pubDate" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "guid" + ] + }, + { + "event": "opentag", + "data": [ + "guid", + {} + ] + }, + { + "event": "text", + "data": [ + "http://liftoff.msfc.nasa.gov/2003/05/27.html#item571" + ] + }, + { + "event": "closetag", + "data": [ + "guid" + ] + }, + { + "event": "text", + "data": [ + "\n\n " + ] + }, + { + "event": "closetag", + "data": [ + "item" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "item" + ] + }, + { + "event": "opentag", + "data": [ + "item", + {} + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "title" + ] + }, + { + "event": "opentag", + "data": [ + "title", + {} + ] + }, + { + "event": "text", + "data": [ + "Astronauts' Dirty Laundry" + ] + }, + { + "event": "closetag", + "data": [ + "title" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "link" + ] + }, + { + "event": "opentag", + "data": [ + "link", + {} + ] + }, + { + "event": "text", + "data": [ + "http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp" + ] + }, + { + "event": "closetag", + "data": [ + "link" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "description" + ] + }, + { + "event": "opentag", + "data": [ + "description", + {} + ] + }, + { + "event": "text", + "data": [ + "Compared to earlier spacecraft, the International Space Station has many luxuries, but laundry facilities are not one of them. Instead, astronauts have other options." + ] + }, + { + "event": "closetag", + "data": [ + "description" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "pubDate" + ] + }, + { + "event": "opentag", + "data": [ + "pubDate", + {} + ] + }, + { + "event": "text", + "data": [ + "Tue, 20 May 2003 08:56:02 GMT" + ] + }, + { + "event": "closetag", + "data": [ + "pubDate" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "opentagname", + "data": [ + "guid" + ] + }, + { + "event": "opentag", + "data": [ + "guid", + {} + ] + }, + { + "event": "text", + "data": [ + "http://liftoff.msfc.nasa.gov/2003/05/20.html#item570" + ] + }, + { + "event": "closetag", + "data": [ + "guid" + ] + }, + { + "event": "text", + "data": [ + "\n\n " + ] + }, + { + "event": "closetag", + "data": [ + "item" + ] + }, + { + "event": "text", + "data": [ + "\n " + ] + }, + { + "event": "closetag", + "data": [ + "channel" + ] + }, + { + "event": "text", + "data": [ + "\n" + ] + }, + { + "event": "closetag", + "data": [ + "rss" + ] + } + ] +} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Stream/03-Atom.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Stream/03-Atom.json new file mode 100644 index 00000000..0cbf24ee --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Stream/03-Atom.json @@ -0,0 +1,678 @@ +{ + "name": "Atom feed", + "options": {"xmlMode": true}, + "file": "Atom_Example.xml", + "expected": [ + { + "event": "processinginstruction", + "data": [ + "?xml", + "?xml version=\"1.0\" encoding=\"utf-8\"?" + ] + }, + { + "event": "text", + "data": [ + "\n" + ] + }, + { + "event": "comment", + "data": [ + " http://en.wikipedia.org/wiki/Atom_%28standard%29 " + ] + }, + { + "event": "commentend", + "data": [] + }, + { + "event": "text", + "data": [ + "\n" + ] + }, + { + "event": "opentagname", + "data": [ + "feed" + ] + }, + { + "event": "attribute", + "data": [ + "xmlns", + "http://www.w3.org/2005/Atom" + ] + }, + { + "event": "opentag", + "data": [ + "feed", + { + "xmlns": "http://www.w3.org/2005/Atom" + } + ] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "opentagname", + "data": [ + "title" + ] + }, + { + "event": "opentag", + "data": [ + "title", + {} + ] + }, + { + "event": "text", + "data": [ + "Example Feed" + ] + }, + { + "event": "closetag", + "data": [ + "title" + ] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "opentagname", + "data": [ + "subtitle" + ] + }, + { + "event": "opentag", + "data": [ + "subtitle", + {} + ] + }, + { + "event": "text", + "data": [ + "A subtitle." + ] + }, + { + "event": "closetag", + "data": [ + "subtitle" + ] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "opentagname", + "data": [ + "link" + ] + }, + { + "event": "attribute", + "data": [ + "href", + "http://example.org/feed/" + ] + }, + { + "event": "attribute", + "data": [ + "rel", + "self" + ] + }, + { + "event": "opentag", + "data": [ + "link", + { + "href": "http://example.org/feed/", + "rel": "self" + } + ] + }, + { + "event": "closetag", + "data": [ + "link" + ] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "opentagname", + "data": [ + "link" + ] + }, + { + "event": "attribute", + "data": [ + "href", + "http://example.org/" + ] + }, + { + "event": "opentag", + "data": [ + "link", + { + "href": "http://example.org/" + } + ] + }, + { + "event": "closetag", + "data": [ + "link" + ] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "opentagname", + "data": [ + "id" + ] + }, + { + "event": "opentag", + "data": [ + "id", + {} + ] + }, + { + "event": "text", + "data": [ + "urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6" + ] + }, + { + "event": "closetag", + "data": [ + "id" + ] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "opentagname", + "data": [ + "updated" + ] + }, + { + "event": "opentag", + "data": [ + "updated", + {} + ] + }, + { + "event": "text", + "data": [ + "2003-12-13T18:30:02Z" + ] + }, + { + "event": "closetag", + "data": [ + "updated" + ] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "opentagname", + "data": [ + "author" + ] + }, + { + "event": "opentag", + "data": [ + "author", + {} + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "name" + ] + }, + { + "event": "opentag", + "data": [ + "name", + {} + ] + }, + { + "event": "text", + "data": [ + "John Doe" + ] + }, + { + "event": "closetag", + "data": [ + "name" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "email" + ] + }, + { + "event": "opentag", + "data": [ + "email", + {} + ] + }, + { + "event": "text", + "data": [ + "johndoe@example.com" + ] + }, + { + "event": "closetag", + "data": [ + "email" + ] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "closetag", + "data": [ + "author" + ] + }, + { + "event": "text", + "data": [ + "\n\n\t" + ] + }, + { + "event": "opentagname", + "data": [ + "entry" + ] + }, + { + "event": "opentag", + "data": [ + "entry", + {} + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "title" + ] + }, + { + "event": "opentag", + "data": [ + "title", + {} + ] + }, + { + "event": "text", + "data": [ + "Atom-Powered Robots Run Amok" + ] + }, + { + "event": "closetag", + "data": [ + "title" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "link" + ] + }, + { + "event": "attribute", + "data": [ + "href", + "http://example.org/2003/12/13/atom03" + ] + }, + { + "event": "opentag", + "data": [ + "link", + { + "href": "http://example.org/2003/12/13/atom03" + } + ] + }, + { + "event": "closetag", + "data": [ + "link" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "link" + ] + }, + { + "event": "attribute", + "data": [ + "rel", + "alternate" + ] + }, + { + "event": "attribute", + "data": [ + "type", + "text/html" + ] + }, + { + "event": "attribute", + "data": [ + "href", + "http://example.org/2003/12/13/atom03.html" + ] + }, + { + "event": "opentag", + "data": [ + "link", + { + "rel": "alternate", + "type": "text/html", + "href": "http://example.org/2003/12/13/atom03.html" + } + ] + }, + { + "event": "closetag", + "data": [ + "link" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "link" + ] + }, + { + "event": "attribute", + "data": [ + "rel", + "edit" + ] + }, + { + "event": "attribute", + "data": [ + "href", + "http://example.org/2003/12/13/atom03/edit" + ] + }, + { + "event": "opentag", + "data": [ + "link", + { + "rel": "edit", + "href": "http://example.org/2003/12/13/atom03/edit" + } + ] + }, + { + "event": "closetag", + "data": [ + "link" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "id" + ] + }, + { + "event": "opentag", + "data": [ + "id", + {} + ] + }, + { + "event": "text", + "data": [ + "urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a" + ] + }, + { + "event": "closetag", + "data": [ + "id" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "updated" + ] + }, + { + "event": "opentag", + "data": [ + "updated", + {} + ] + }, + { + "event": "text", + "data": [ + "2003-12-13T18:30:02Z" + ] + }, + { + "event": "closetag", + "data": [ + "updated" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "content" + ] + }, + { + "event": "attribute", + "data": [ + "type", + "html" + ] + }, + { + "event": "opentag", + "data": [ + "content", + { + "type": "html" + } + ] + }, + { + "event": "opentagname", + "data": [ + "p" + ] + }, + { + "event": "opentag", + "data": [ + "p", + {} + ] + }, + { + "event": "text", + "data": [ + "Some content." + ] + }, + { + "event": "closetag", + "data": [ + "p" + ] + }, + { + "event": "closetag", + "data": [ + "content" + ] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "closetag", + "data": [ + "entry" + ] + }, + { + "event": "text", + "data": [ + "\n\n" + ] + }, + { + "event": "closetag", + "data": [ + "feed" + ] + }, + { + "event": "text", + "data": [ + "\n" + ] + } + ] +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Stream/04-RDF.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Stream/04-RDF.json new file mode 100644 index 00000000..7ebf5161 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Stream/04-RDF.json @@ -0,0 +1,1399 @@ +{ + "name": "RDF feed", + "options": {"xmlMode": true}, + "file": "RDF_Example.xml", + "expected": [ + { + "event": "processinginstruction", + "data": [ + "?xml", + "?xml version=\"1.0\" encoding=\"UTF-8\"?" + ] + }, + { + "event": "text", + "data": [ + "\n" + ] + }, + { + "event": "opentagname", + "data": [ + "rdf:RDF" + ] + }, + { + "event": "attribute", + "data": [ + "xmlns:rdf", + "http://www.w3.org/1999/02/22-rdf-syntax-ns#" + ] + }, + { + "event": "attribute", + "data": [ + "xmlns", + "http://purl.org/rss/1.0/" + ] + }, + { + "event": "attribute", + "data": [ + "xmlns:ev", + "http://purl.org/rss/1.0/modules/event/" + ] + }, + { + "event": "attribute", + "data": [ + "xmlns:content", + "http://purl.org/rss/1.0/modules/content/" + ] + }, + { + "event": "attribute", + "data": [ + "xmlns:taxo", + "http://purl.org/rss/1.0/modules/taxonomy/" + ] + }, + { + "event": "attribute", + "data": [ + "xmlns:dc", + "http://purl.org/dc/elements/1.1/" + ] + }, + { + "event": "attribute", + "data": [ + "xmlns:syn", + "http://purl.org/rss/1.0/modules/syndication/" + ] + }, + { + "event": "attribute", + "data": [ + "xmlns:dcterms", + "http://purl.org/dc/terms/" + ] + }, + { + "event": "attribute", + "data": [ + "xmlns:admin", + "http://webns.net/mvcb/" + ] + }, + { + "event": "opentag", + "data": [ + "rdf:RDF", + { + "xmlns:rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + "xmlns": "http://purl.org/rss/1.0/", + "xmlns:ev": "http://purl.org/rss/1.0/modules/event/", + "xmlns:content": "http://purl.org/rss/1.0/modules/content/", + "xmlns:taxo": "http://purl.org/rss/1.0/modules/taxonomy/", + "xmlns:dc": "http://purl.org/dc/elements/1.1/", + "xmlns:syn": "http://purl.org/rss/1.0/modules/syndication/", + "xmlns:dcterms": "http://purl.org/dc/terms/", + "xmlns:admin": "http://webns.net/mvcb/" + } + ] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "opentagname", + "data": [ + "channel" + ] + }, + { + "event": "attribute", + "data": [ + "rdf:about", + "http://sfbay.craigslist.org/ccc/" + ] + }, + { + "event": "opentag", + "data": [ + "channel", + { + "rdf:about": "http://sfbay.craigslist.org/ccc/" + } + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "title" + ] + }, + { + "event": "opentag", + "data": [ + "title", + {} + ] + }, + { + "event": "text", + "data": [ + "craigslist | all community in SF bay area" + ] + }, + { + "event": "closetag", + "data": [ + "title" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "link" + ] + }, + { + "event": "opentag", + "data": [ + "link", + {} + ] + }, + { + "event": "text", + "data": [ + "http://sfbay.craigslist.org/ccc/" + ] + }, + { + "event": "closetag", + "data": [ + "link" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "description" + ] + }, + { + "event": "opentag", + "data": [ + "description", + {} + ] + }, + { + "event": "closetag", + "data": [ + "description" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:language" + ] + }, + { + "event": "opentag", + "data": [ + "dc:language", + {} + ] + }, + { + "event": "text", + "data": [ + "en-us" + ] + }, + { + "event": "closetag", + "data": [ + "dc:language" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:rights" + ] + }, + { + "event": "opentag", + "data": [ + "dc:rights", + {} + ] + }, + { + "event": "text", + "data": [ + "Copyright 2011 craigslist, inc." + ] + }, + { + "event": "closetag", + "data": [ + "dc:rights" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:publisher" + ] + }, + { + "event": "opentag", + "data": [ + "dc:publisher", + {} + ] + }, + { + "event": "text", + "data": [ + "webmaster@craigslist.org" + ] + }, + { + "event": "closetag", + "data": [ + "dc:publisher" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:creator" + ] + }, + { + "event": "opentag", + "data": [ + "dc:creator", + {} + ] + }, + { + "event": "text", + "data": [ + "webmaster@craigslist.org" + ] + }, + { + "event": "closetag", + "data": [ + "dc:creator" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:source" + ] + }, + { + "event": "opentag", + "data": [ + "dc:source", + {} + ] + }, + { + "event": "text", + "data": [ + "http://sfbay.craigslist.org/ccc//" + ] + }, + { + "event": "closetag", + "data": [ + "dc:source" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:title" + ] + }, + { + "event": "opentag", + "data": [ + "dc:title", + {} + ] + }, + { + "event": "text", + "data": [ + "craigslist | all community in SF bay area" + ] + }, + { + "event": "closetag", + "data": [ + "dc:title" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:type" + ] + }, + { + "event": "opentag", + "data": [ + "dc:type", + {} + ] + }, + { + "event": "text", + "data": [ + "Collection" + ] + }, + { + "event": "closetag", + "data": [ + "dc:type" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "syn:updateBase" + ] + }, + { + "event": "opentag", + "data": [ + "syn:updateBase", + {} + ] + }, + { + "event": "text", + "data": [ + "2011-11-04T09:39:10-07:00" + ] + }, + { + "event": "closetag", + "data": [ + "syn:updateBase" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "syn:updateFrequency" + ] + }, + { + "event": "opentag", + "data": [ + "syn:updateFrequency", + {} + ] + }, + { + "event": "text", + "data": [ + "4" + ] + }, + { + "event": "closetag", + "data": [ + "syn:updateFrequency" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "syn:updatePeriod" + ] + }, + { + "event": "opentag", + "data": [ + "syn:updatePeriod", + {} + ] + }, + { + "event": "text", + "data": [ + "hourly" + ] + }, + { + "event": "closetag", + "data": [ + "syn:updatePeriod" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "items" + ] + }, + { + "event": "opentag", + "data": [ + "items", + {} + ] + }, + { + "event": "text", + "data": [ + "\n\t\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "rdf:Seq" + ] + }, + { + "event": "opentag", + "data": [ + "rdf:Seq", + {} + ] + }, + { + "event": "text", + "data": [ + "\n\t\t\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "rdf:li" + ] + }, + { + "event": "attribute", + "data": [ + "rdf:resource", + "http://sfbay.craigslist.org/sby/muc/2681301534.html" + ] + }, + { + "event": "opentag", + "data": [ + "rdf:li", + { + "rdf:resource": "http://sfbay.craigslist.org/sby/muc/2681301534.html" + } + ] + }, + { + "event": "closetag", + "data": [ + "rdf:li" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t\t" + ] + }, + { + "event": "closetag", + "data": [ + "rdf:Seq" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "closetag", + "data": [ + "items" + ] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "closetag", + "data": [ + "channel" + ] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "opentagname", + "data": [ + "item" + ] + }, + { + "event": "attribute", + "data": [ + "rdf:about", + "http://sfbay.craigslist.org/sby/muc/2681301534.html" + ] + }, + { + "event": "opentag", + "data": [ + "item", + { + "rdf:about": "http://sfbay.craigslist.org/sby/muc/2681301534.html" + } + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "title" + ] + }, + { + "event": "opentag", + "data": [ + "title", + {} + ] + }, + { + "event": "cdatastart", + "data": [] + }, + { + "event": "text", + "data": [ + " Music Equipment Repair and Consignment " + ] + }, + { + "event": "cdataend", + "data": [] + }, + { + "event": "closetag", + "data": [ + "title" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "link" + ] + }, + { + "event": "opentag", + "data": [ + "link", + {} + ] + }, + { + "event": "text", + "data": [ + "\nhttp://sfbay.craigslist.org/sby/muc/2681301534.html\n" + ] + }, + { + "event": "closetag", + "data": [ + "link" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "description" + ] + }, + { + "event": "opentag", + "data": [ + "description", + {} + ] + }, + { + "event": "cdatastart", + "data": [] + }, + { + "event": "text", + "data": [ + "\nSan Jose Rock Shop offers musical instrument repair and consignment! (408) 215-2065

We are pleased to announce our NEW LOCATION: 1199 N 5th st. San Jose, ca 95112. Please call ahead, by appointment only.

Recently featured by Metro Newspaper in their 2011 Best of the Silicon Valley edition see it online here:
http://www.metroactive.com/best-of-silicon-valley/2011/music-nightlife/editor-picks.html

Guitar Set up (acoustic and electronic) $40!\n" + ] + }, + { + "event": "cdataend", + "data": [] + }, + { + "event": "closetag", + "data": [ + "description" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:date" + ] + }, + { + "event": "opentag", + "data": [ + "dc:date", + {} + ] + }, + { + "event": "text", + "data": [ + "2011-11-04T09:35:17-07:00" + ] + }, + { + "event": "closetag", + "data": [ + "dc:date" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:language" + ] + }, + { + "event": "opentag", + "data": [ + "dc:language", + {} + ] + }, + { + "event": "text", + "data": [ + "en-us" + ] + }, + { + "event": "closetag", + "data": [ + "dc:language" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:rights" + ] + }, + { + "event": "opentag", + "data": [ + "dc:rights", + {} + ] + }, + { + "event": "text", + "data": [ + "Copyright 2011 craigslist, inc." + ] + }, + { + "event": "closetag", + "data": [ + "dc:rights" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:source" + ] + }, + { + "event": "opentag", + "data": [ + "dc:source", + {} + ] + }, + { + "event": "text", + "data": [ + "\nhttp://sfbay.craigslist.org/sby/muc/2681301534.html\n" + ] + }, + { + "event": "closetag", + "data": [ + "dc:source" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:title" + ] + }, + { + "event": "opentag", + "data": [ + "dc:title", + {} + ] + }, + { + "event": "cdatastart", + "data": [] + }, + { + "event": "text", + "data": [ + " Music Equipment Repair and Consignment " + ] + }, + { + "event": "cdataend", + "data": [] + }, + { + "event": "closetag", + "data": [ + "dc:title" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:type" + ] + }, + { + "event": "opentag", + "data": [ + "dc:type", + {} + ] + }, + { + "event": "text", + "data": [ + "text" + ] + }, + { + "event": "closetag", + "data": [ + "dc:type" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dcterms:issued" + ] + }, + { + "event": "opentag", + "data": [ + "dcterms:issued", + {} + ] + }, + { + "event": "text", + "data": [ + "2011-11-04T09:35:17-07:00" + ] + }, + { + "event": "closetag", + "data": [ + "dcterms:issued" + ] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "closetag", + "data": [ + "item" + ] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "opentagname", + "data": [ + "item" + ] + }, + { + "event": "attribute", + "data": [ + "rdf:about", + "http://sfbay.craigslist.org/eby/rid/2685010755.html" + ] + }, + { + "event": "opentag", + "data": [ + "item", + { + "rdf:about": "http://sfbay.craigslist.org/eby/rid/2685010755.html" + } + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "title" + ] + }, + { + "event": "opentag", + "data": [ + "title", + {} + ] + }, + { + "event": "cdatastart", + "data": [] + }, + { + "event": "text", + "data": [ + "\nRide Offered - Oakland/BART to LA/SFV - TODAY 3PM 11/04 (oakland north / temescal)\n" + ] + }, + { + "event": "cdataend", + "data": [] + }, + { + "event": "closetag", + "data": [ + "title" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "link" + ] + }, + { + "event": "opentag", + "data": [ + "link", + {} + ] + }, + { + "event": "text", + "data": [ + "\nhttp://sfbay.craigslist.org/eby/rid/2685010755.html\n" + ] + }, + { + "event": "closetag", + "data": [ + "link" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "description" + ] + }, + { + "event": "opentag", + "data": [ + "description", + {} + ] + }, + { + "event": "cdatastart", + "data": [] + }, + { + "event": "text", + "data": [ + "\nIm offering a lift for up to two people from Oakland (or near any BART station in the East Bay/580/880 Corridor, or San Jose/Morgan Hill, Gilroy) to the San Fernando Valley / Los Angeles area. Specifically, Im leaving from Oakland between 2:30 and 3:00pm (this is flexible, but if I leave too late my girlfriend will kill me), and heading to Woodland Hills via the 580, I-5, 405, and 101.\n" + ] + }, + { + "event": "cdataend", + "data": [] + }, + { + "event": "closetag", + "data": [ + "description" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:date" + ] + }, + { + "event": "opentag", + "data": [ + "dc:date", + {} + ] + }, + { + "event": "text", + "data": [ + "2011-11-04T09:34:54-07:00" + ] + }, + { + "event": "closetag", + "data": [ + "dc:date" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:language" + ] + }, + { + "event": "opentag", + "data": [ + "dc:language", + {} + ] + }, + { + "event": "text", + "data": [ + "en-us" + ] + }, + { + "event": "closetag", + "data": [ + "dc:language" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:rights" + ] + }, + { + "event": "opentag", + "data": [ + "dc:rights", + {} + ] + }, + { + "event": "text", + "data": [ + "Copyright 2011 craigslist, inc." + ] + }, + { + "event": "closetag", + "data": [ + "dc:rights" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:source" + ] + }, + { + "event": "opentag", + "data": [ + "dc:source", + {} + ] + }, + { + "event": "text", + "data": [ + "\nhttp://sfbay.craigslist.org/eby/rid/2685010755.html\n" + ] + }, + { + "event": "closetag", + "data": [ + "dc:source" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:title" + ] + }, + { + "event": "opentag", + "data": [ + "dc:title", + {} + ] + }, + { + "event": "cdatastart", + "data": [] + }, + { + "event": "text", + "data": [ + "\nRide Offered - Oakland/BART to LA/SFV - TODAY 3PM 11/04 (oakland north / temescal)\n" + ] + }, + { + "event": "cdataend", + "data": [] + }, + { + "event": "closetag", + "data": [ + "dc:title" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dc:type" + ] + }, + { + "event": "opentag", + "data": [ + "dc:type", + {} + ] + }, + { + "event": "text", + "data": [ + "text" + ] + }, + { + "event": "closetag", + "data": [ + "dc:type" + ] + }, + { + "event": "text", + "data": [ + "\n\t\t" + ] + }, + { + "event": "opentagname", + "data": [ + "dcterms:issued" + ] + }, + { + "event": "opentag", + "data": [ + "dcterms:issued", + {} + ] + }, + { + "event": "text", + "data": [ + "2011-11-04T09:34:54-07:00" + ] + }, + { + "event": "closetag", + "data": [ + "dcterms:issued" + ] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "closetag", + "data": [ + "item" + ] + }, + { + "event": "text", + "data": [ + "\n" + ] + }, + { + "event": "closetag", + "data": [ + "rdf:RDF" + ] + } + ] +} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Stream/05-Attributes.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Stream/05-Attributes.json new file mode 100644 index 00000000..ad364c04 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/Stream/05-Attributes.json @@ -0,0 +1,354 @@ +{ + "name": "Attributes", + "options": {}, + "file": "Attributes.html", + "expected": [ + { + "event": "processinginstruction", + "data": [ + "!doctype", + "!doctype html" + ] + }, + { + "event": "text", + "data": [ + "\n" + ] + }, + { + "event": "opentagname", + "data": [ + "html" + ] + }, + { + "event": "opentag", + "data": [ + "html", + {} + ] + }, + { + "event": "text", + "data": [ + "\n" + ] + }, + { + "event": "opentagname", + "data": [ + "head" + ] + }, + { + "event": "opentag", + "data": [ + "head", + {} + ] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "opentagname", + "data": [ + "title" + ] + }, + { + "event": "opentag", + "data": [ + "title", + {} + ] + }, + { + "event": "text", + "data": [ + "Attributes test" + ] + }, + { + "event": "closetag", + "data": [ + "title" + ] + }, + { + "event": "text", + "data": [ + "\n" + ] + }, + { + "event": "closetag", + "data": [ + "head" + ] + }, + { + "event": "text", + "data": [ + "\n" + ] + }, + { + "event": "opentagname", + "data": [ + "body" + ] + }, + { + "event": "opentag", + "data": [ + "body", + {} + ] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "comment", + "data": [ + " Normal attributes " + ] + }, + { + "event": "commentend", + "data": [] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "opentagname", + "data": [ + "button" + ] + }, + { + "event": "attribute", + "data": [ + "id", + "test0" + ] + }, + { + "event": "attribute", + "data": [ + "class", + "value0" + ] + }, + { + "event": "attribute", + "data": [ + "title", + "value1" + ] + }, + { + "event": "opentag", + "data": [ + "button", + { + "id": "test0", + "class": "value0", + "title": "value1" + } + ] + }, + { + "event": "text", + "data": [ + "class=\"value0\" title=\"value1\"" + ] + }, + { + "event": "closetag", + "data": [ + "button" + ] + }, + { + "event": "text", + "data": [ + "\n\n\t" + ] + }, + { + "event": "comment", + "data": [ + " Attributes with no quotes or value " + ] + }, + { + "event": "commentend", + "data": [] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "opentagname", + "data": [ + "button" + ] + }, + { + "event": "attribute", + "data": [ + "id", + "test1" + ] + }, + { + "event": "attribute", + "data": [ + "class", + "value2" + ] + }, + { + "event": "attribute", + "data": [ + "disabled", + "" + ] + }, + { + "event": "opentag", + "data": [ + "button", + { + "id": "test1", + "class": "value2", + "disabled": "" + } + ] + }, + { + "event": "text", + "data": [ + "class=value2 disabled" + ] + }, + { + "event": "closetag", + "data": [ + "button" + ] + }, + { + "event": "text", + "data": [ + "\n\n\t" + ] + }, + { + "event": "comment", + "data": [ + " Attributes with no space between them. No valid, but accepted by the browser " + ] + }, + { + "event": "commentend", + "data": [] + }, + { + "event": "text", + "data": [ + "\n\t" + ] + }, + { + "event": "opentagname", + "data": [ + "button" + ] + }, + { + "event": "attribute", + "data": [ + "id", + "test2" + ] + }, + { + "event": "attribute", + "data": [ + "class", + "value4" + ] + }, + { + "event": "attribute", + "data": [ + "title", + "value5" + ] + }, + { + "event": "opentag", + "data": [ + "button", + { + "id": "test2", + "class": "value4", + "title": "value5" + } + ] + }, + { + "event": "text", + "data": [ + "class=\"value4\"title=\"value5\"" + ] + }, + { + "event": "closetag", + "data": [ + "button" + ] + }, + { + "event": "text", + "data": [ + "\n" + ] + }, + { + "event": "closetag", + "data": [ + "body" + ] + }, + { + "event": "text", + "data": [ + "\n" + ] + }, + { + "event": "closetag", + "data": [ + "html" + ] + } + ] +} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/api.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/api.js new file mode 100644 index 00000000..49b31962 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/api.js @@ -0,0 +1,75 @@ +var htmlparser2 = require(".."), + assert = require("assert"); + +describe("API", function(){ + + it("should load all modules", function(){ + var Stream = require("../lib/Stream.js"); + assert.strictEqual(htmlparser2.Stream, Stream, "should load module"); + assert.strictEqual(htmlparser2.Stream, Stream, "should load it again (cache)"); + + var ProxyHandler = require("../lib/ProxyHandler.js"); + assert.strictEqual(htmlparser2.ProxyHandler, ProxyHandler, "should load module"); + assert.strictEqual(htmlparser2.ProxyHandler, ProxyHandler, "should load it again (cache)"); + }); + + it("should work without callbacks", function(){ + var p = new htmlparser2.Parser(null, {xmlMode: true, lowerCaseAttributeNames: true}); + + p.end("boohay"); + p.write("foo"); + + //check for an error + p.end(); + var err = false; + p._cbs.onerror = function(){ err = true; }; + p.write("foo"); + assert(err); + err = false; + p.end(); + assert(err); + + p.reset(); + + //remove method + p._cbs.onopentag = function(){}; + p.write(""); + + //pause/resume + var processed = false; + p._cbs.ontext = function(t){ + assert.equal(t, "foo"); + processed = true; + }; + p.pause(); + p.write("foo"); + assert(!processed); + p.resume(); + assert(processed); + processed = false; + p.pause(); + assert(!processed); + p.resume(); + assert(!processed); + p.pause(); + p.end("foo"); + assert(!processed); + p.resume(); + assert(processed); + + }); + + it("should update the position", function(){ + var p = new htmlparser2.Parser(null); + + p.write("foo"); + + assert.equal(p.startIndex, 0); + + p.write(""); + + assert.equal(p.startIndex, 3); + }); +}); \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/test-helper.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/test-helper.js new file mode 100644 index 00000000..90a9907c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/htmlparser2/test/test-helper.js @@ -0,0 +1,83 @@ +var htmlparser2 = require(".."), + fs = require("fs"), + path = require("path"), + assert = require("assert"), + Parser = htmlparser2.Parser, + CollectingHandler = htmlparser2.CollectingHandler; + +exports.writeToParser = function(handler, options, data){ + var parser = new Parser(handler, options); + //first, try to run the test via chunks + for(var i = 0; i < data.length; i++){ + parser.write(data.charAt(i)); + } + parser.end(); + //then parse everything + parser.parseComplete(data); +}; + +//returns a tree structure +exports.getEventCollector = function(cb){ + var handler = new CollectingHandler({onerror: cb, onend: onend}); + + return handler; + + function onend(){ + cb(null, handler.events.reduce(eventReducer, [])); + } +}; + +function eventReducer(events, arr){ + if(arr[0] === "onerror" || arr[0] === "onend"); + else if(arr[0] === "ontext" && events.length && events[events.length - 1].event === "text"){ + events[events.length - 1].data[0] += arr[1]; + } else { + events.push({ + event: arr[0].substr(2), + data: arr.slice(1) + }); + } + + return events; +} + +function getCallback(expected, done){ + var repeated = false; + + return function(err, actual){ + assert.ifError(err); + try { + assert.deepEqual(expected, actual, "didn't get expected output"); + } catch(e){ + e.expected = JSON.stringify(expected, null, 2); + e.actual = JSON.stringify(actual, null, 2); + throw e; + } + + if(repeated) done(); + else repeated = true; + }; +} + +exports.mochaTest = function(name, root, test){ + describe(name, readDir); + + function readDir(){ + var dir = path.join(root, name); + + fs + .readdirSync(dir) + .filter(RegExp.prototype.test, /^[^\._]/) //ignore all files with a leading dot or underscore + .map(function(name){ + return path.join(dir, name); + }) + .map(require) + .forEach(runTest); + } + + function runTest(file){ + it(file.name, function(done){ + test(file, getCallback(file.expected, done)); + }); + } +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/inherits/LICENSE similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/LICENSE rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/inherits/LICENSE diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/inherits/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/inherits/README.md new file mode 100644 index 00000000..b1c56658 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/inherits/README.md @@ -0,0 +1,42 @@ +Browser-friendly inheritance fully compatible with standard node.js +[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). + +This package exports standard `inherits` from node.js `util` module in +node environment, but also provides alternative browser-friendly +implementation through [browser +field](https://gist.github.com/shtylman/4339901). Alternative +implementation is a literal copy of standard one located in standalone +module to avoid requiring of `util`. It also has a shim for old +browsers with no `Object.create` support. + +While keeping you sure you are using standard `inherits` +implementation in node.js environment, it allows bundlers such as +[browserify](https://github.com/substack/node-browserify) to not +include full `util` package to your client code if all you need is +just `inherits` function. It worth, because browser shim for `util` +package is large and `inherits` is often the single function you need +from it. + +It's recommended to use this package instead of +`require('util').inherits` for any code that has chances to be used +not only in node.js but in browser too. + +## usage + +```js +var inherits = require('inherits'); +// then use exactly as the standard one +``` + +## note on version ~1.0 + +Version ~1.0 had completely different motivation and is not compatible +neither with 2.0 nor with standard node.js `inherits`. + +If you are using version ~1.0 and planning to switch to ~2.0, be +careful: + +* new version uses `super_` instead of `super` for referencing + superclass +* new version overwrites current prototype while old one preserves any + existing fields on it diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/inherits.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/inherits/inherits.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/inherits.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/inherits/inherits.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/inherits_browser.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/inherits/inherits_browser.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/inherits_browser.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/inherits/inherits_browser.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/inherits/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/inherits/package.json new file mode 100644 index 00000000..43c6952d --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/inherits/package.json @@ -0,0 +1,79 @@ +{ + "_args": [ + [ + "inherits@~2.0.1", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream" + ] + ], + "_from": "inherits@>=2.0.1 <2.1.0", + "_id": "inherits@2.0.1", + "_inCache": true, + "_installable": true, + "_location": "/inherits", + "_npmUser": { + "email": "i@izs.me", + "name": "isaacs" + }, + "_npmVersion": "1.3.8", + "_phantomChildren": {}, + "_requested": { + "name": "inherits", + "raw": "inherits@~2.0.1", + "rawSpec": "~2.0.1", + "scope": null, + "spec": ">=2.0.1 <2.1.0", + "type": "range" + }, + "_requiredBy": [ + "/glob", + "/mocha/glob", + "/readable-stream" + ], + "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", + "_shrinkwrap": null, + "_spec": "inherits@~2.0.1", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream", + "browser": "./inherits_browser.js", + "bugs": { + "url": "https://github.com/isaacs/inherits/issues" + }, + "dependencies": {}, + "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", + "devDependencies": {}, + "directories": {}, + "dist": { + "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", + "tarball": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "homepage": "https://github.com/isaacs/inherits#readme", + "keywords": [ + "inheritance", + "class", + "klass", + "oop", + "object-oriented", + "inherits", + "browser", + "browserify" + ], + "license": "ISC", + "main": "./inherits.js", + "maintainers": [ + { + "email": "i@izs.me", + "name": "isaacs" + } + ], + "name": "inherits", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/inherits.git" + }, + "scripts": { + "test": "node test" + }, + "version": "2.0.1" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/inherits/test.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/test.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/inherits/test.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/glob/node_modules/minimatch/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ini/LICENSE similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/glob/node_modules/minimatch/LICENSE rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ini/LICENSE diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ini/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ini/README.md new file mode 100644 index 00000000..acbe8ec8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ini/README.md @@ -0,0 +1,79 @@ +An ini format parser and serializer for node. + +Sections are treated as nested objects. Items before the first heading +are saved on the object directly. + +## Usage + +Consider an ini-file `config.ini` that looks like this: + + ; this comment is being ignored + scope = global + + [database] + user = dbuser + password = dbpassword + database = use_this_database + + [paths.default] + datadir = /var/lib/data + array[] = first value + array[] = second value + array[] = third value + +You can read, manipulate and write the ini-file like so: + + var fs = require('fs') + , ini = require('ini') + + var config = ini.parse(fs.readFileSync('./config.ini', 'utf-8')) + + config.scope = 'local' + config.database.database = 'use_another_database' + config.paths.default.tmpdir = '/tmp' + delete config.paths.default.datadir + config.paths.default.array.push('fourth value') + + fs.writeFileSync('./config_modified.ini', ini.stringify(config, 'section')) + +This will result in a file called `config_modified.ini` being written to the filesystem with the following content: + + [section] + scope = local + [section.database] + user = dbuser + password = dbpassword + database = use_another_database + [section.paths.default] + tmpdir = /tmp + array[] = first value + array[] = second value + array[] = third value + array[] = fourth value + + +## API + +### decode(inistring) +Decode the ini-style formatted `inistring` into a nested object. + +### parse(inistring) +Alias for `decode(inistring)` + +### encode(object, [section]) +Encode the object `object` into an ini-style formatted string. If the optional parameter `section` is given, then all top-level properties of the object are put into this section and the `section`-string is prepended to all sub-sections, see the usage example above. + +### stringify(object, [section]) +Alias for `encode(object, [section])` + +### safe(val) +Escapes the string `val` such that it is safe to be used as a key or value in an ini-file. Basically escapes quotes. For example + + ini.safe('"unsafe string"') + +would result in + + "\"unsafe string\"" + +### unsafe(val) +Unescapes the string `val` diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/ini/ini.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ini/ini.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/ini/ini.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ini/ini.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ini/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ini/package.json new file mode 100644 index 00000000..005160dc --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ini/package.json @@ -0,0 +1,75 @@ +{ + "_args": [ + [ + "ini@~1.1.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc" + ] + ], + "_from": "ini@>=1.1.0 <1.2.0", + "_id": "ini@1.1.0", + "_inCache": true, + "_installable": true, + "_location": "/ini", + "_npmUser": { + "email": "i@izs.me", + "name": "isaacs" + }, + "_npmVersion": "1.2.2", + "_phantomChildren": {}, + "_requested": { + "name": "ini", + "raw": "ini@~1.1.0", + "rawSpec": "~1.1.0", + "scope": null, + "spec": ">=1.1.0 <1.2.0", + "type": "range" + }, + "_requiredBy": [ + "/rc" + ], + "_resolved": "https://registry.npmjs.org/ini/-/ini-1.1.0.tgz", + "_shasum": "4e808c2ce144c6c1788918e034d6797bc6cf6281", + "_shrinkwrap": null, + "_spec": "ini@~1.1.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\rc", + "author": { + "email": "i@izs.me", + "name": "Isaac Z. Schlueter", + "url": "http://blog.izs.me/" + }, + "bugs": { + "url": "https://github.com/isaacs/ini/issues" + }, + "dependencies": {}, + "description": "An ini encoder/decoder for node", + "devDependencies": { + "tap": "~0.0.9" + }, + "directories": {}, + "dist": { + "shasum": "4e808c2ce144c6c1788918e034d6797bc6cf6281", + "tarball": "https://registry.npmjs.org/ini/-/ini-1.1.0.tgz" + }, + "engines": { + "node": "*" + }, + "homepage": "https://github.com/isaacs/ini#readme", + "main": "ini.js", + "maintainers": [ + { + "email": "i@izs.me", + "name": "isaacs" + } + ], + "name": "ini", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/ini.git" + }, + "scripts": { + "test": "tap test/*.js" + }, + "version": "1.1.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/ini/test/bar.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ini/test/bar.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/ini/test/bar.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ini/test/bar.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/ini/test/fixtures/foo.ini b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ini/test/fixtures/foo.ini similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/ini/test/fixtures/foo.ini rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ini/test/fixtures/foo.ini diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/ini/test/foo.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ini/test/foo.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/ini/test/foo.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ini/test/foo.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/isarray/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/isarray/README.md new file mode 100644 index 00000000..052a62b8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/isarray/README.md @@ -0,0 +1,54 @@ + +# isarray + +`Array#isArray` for older browsers. + +## Usage + +```js +var isArray = require('isarray'); + +console.log(isArray([])); // => true +console.log(isArray({})); // => false +``` + +## Installation + +With [npm](http://npmjs.org) do + +```bash +$ npm install isarray +``` + +Then bundle for the browser with +[browserify](https://github.com/substack/browserify). + +With [component](http://component.io) do + +```bash +$ component install juliangruber/isarray +``` + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/isarray/build/build.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/isarray/build/build.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/isarray/build/build.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/isarray/build/build.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/isarray/component.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/isarray/component.json similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/isarray/component.json rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/isarray/component.json diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/isarray/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/isarray/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/isarray/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/isarray/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/isarray/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/isarray/package.json new file mode 100644 index 00000000..2ef3697c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/isarray/package.json @@ -0,0 +1,78 @@ +{ + "_args": [ + [ + "isarray@0.0.1", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream" + ] + ], + "_from": "isarray@0.0.1", + "_id": "isarray@0.0.1", + "_inCache": true, + "_installable": true, + "_location": "/isarray", + "_npmUser": { + "email": "julian@juliangruber.com", + "name": "juliangruber" + }, + "_npmVersion": "1.2.18", + "_phantomChildren": {}, + "_requested": { + "name": "isarray", + "raw": "isarray@0.0.1", + "rawSpec": "0.0.1", + "scope": null, + "spec": "0.0.1", + "type": "version" + }, + "_requiredBy": [ + "/readable-stream" + ], + "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", + "_shrinkwrap": null, + "_spec": "isarray@0.0.1", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\readable-stream", + "author": { + "email": "mail@juliangruber.com", + "name": "Julian Gruber", + "url": "http://juliangruber.com" + }, + "bugs": { + "url": "https://github.com/juliangruber/isarray/issues" + }, + "dependencies": {}, + "description": "Array#isArray for older browsers", + "devDependencies": { + "tap": "*" + }, + "directories": {}, + "dist": { + "shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", + "tarball": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "homepage": "https://github.com/juliangruber/isarray", + "keywords": [ + "browser", + "isarray", + "array" + ], + "license": "MIT", + "main": "index.js", + "maintainers": [ + { + "email": "julian@juliangruber.com", + "name": "juliangruber" + } + ], + "name": "isarray", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/isarray.git" + }, + "scripts": { + "test": "tap test/*.js" + }, + "version": "0.0.1" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/.npmignore new file mode 100644 index 00000000..b9af3d4b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/.npmignore @@ -0,0 +1,15 @@ +test +support +benchmarks +examples +lib-cov +coverage.html +.gitmodules +.travis.yml +History.md +Readme.md +Makefile +test/ +support/ +benchmarks/ +examples/ diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/LICENSE new file mode 100644 index 00000000..8ad0e0d3 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2009-2010 TJ Holowaychuk + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/bin/jade b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/bin/jade new file mode 100644 index 00000000..7e6002f9 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/bin/jade @@ -0,0 +1,147 @@ +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var fs = require('fs') + , program = require('commander') + , path = require('path') + , basename = path.basename + , dirname = path.dirname + , resolve = path.resolve + , join = path.join + , mkdirp = require('mkdirp') + , jade = require('../'); + +// jade options + +var options = {}; + +// options + +program + .version(jade.version) + .usage('[options] [dir|file ...]') + .option('-o, --obj ', 'javascript options object') + .option('-O, --out ', 'output the compiled html to ') + .option('-p, --path ', 'filename used to resolve includes') + .option('-P, --pretty', 'compile pretty html output') + .option('-c, --client', 'compile for client-side runtime.js') + .option('-D, --no-debug', 'compile without debugging (smaller functions)') + +program.on('--help', function(){ + console.log(' Examples:'); + console.log(''); + console.log(' # translate jade the templates dir'); + console.log(' $ jade templates'); + console.log(''); + console.log(' # create {foo,bar}.html'); + console.log(' $ jade {foo,bar}.jade'); + console.log(''); + console.log(' # jade over stdio'); + console.log(' $ jade < my.jade > my.html'); + console.log(''); + console.log(' # jade over stdio'); + console.log(' $ echo "h1 Jade!" | jade'); + console.log(''); + console.log(' # foo, bar dirs rendering to /tmp'); + console.log(' $ jade foo bar --out /tmp '); + console.log(''); +}); + +program.parse(process.argv); + +// options given, parse them + +if (program.obj) options = eval('(' + program.obj + ')'); + +// --filename + +if (program.path) options.filename = program.path; + +// --no-debug + +options.compileDebug = program.debug; + +// --client + +options.client = program.client; + +// --pretty + +options.pretty = program.pretty; + +// left-over args are file paths + +var files = program.args; + +// compile files + +if (files.length) { + console.log(); + files.forEach(renderFile); + process.on('exit', console.log); +// stdio +} else { + stdin(); +} + +/** + * Compile from stdin. + */ + +function stdin() { + var buf = ''; + process.stdin.setEncoding('utf8'); + process.stdin.on('data', function(chunk){ buf += chunk; }); + process.stdin.on('end', function(){ + var fn = jade.compile(buf, options); + var output = options.client + ? fn.toString() + : fn(options); + process.stdout.write(output); + }).resume(); +} + +/** + * Process the given path, compiling the jade files found. + * Always walk the subdirectories. + */ + +function renderFile(path) { + var re = /\.jade$/; + fs.lstat(path, function(err, stat) { + if (err) throw err; + // Found jade file + if (stat.isFile() && re.test(path)) { + fs.readFile(path, 'utf8', function(err, str){ + if (err) throw err; + options.filename = path; + var fn = jade.compile(str, options); + var extname = options.client ? '.js' : '.html'; + path = path.replace(re, extname); + if (program.out) path = join(program.out, basename(path)); + var dir = resolve(dirname(path)); + mkdirp(dir, 0755, function(err){ + if (err) throw err; + var output = options.client + ? fn.toString() + : fn(options); + fs.writeFile(path, output, function(err){ + if (err) throw err; + console.log(' \033[90mrendered \033[36m%s\033[0m', path); + }); + }); + }); + // Found directory + } else if (stat.isDirectory()) { + fs.readdir(path, function(err, files) { + if (err) throw err; + files.map(function(filename) { + return path + '/' + filename; + }).forEach(renderFile); + }); + } + }); +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/index.js new file mode 100644 index 00000000..8ad059f7 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/index.js @@ -0,0 +1,4 @@ + +module.exports = process.env.JADE_COV + ? require('./lib-cov/jade') + : require('./lib/jade'); \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/jade.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/jade.js new file mode 100644 index 00000000..1983a203 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/jade.js @@ -0,0 +1,3586 @@ +(function() { + +// CommonJS require() + +function require(p){ + var path = require.resolve(p) + , mod = require.modules[path]; + if (!mod) throw new Error('failed to require "' + p + '"'); + if (!mod.exports) { + mod.exports = {}; + mod.call(mod.exports, mod, mod.exports, require.relative(path)); + } + return mod.exports; + } + +require.modules = {}; + +require.resolve = function (path){ + var orig = path + , reg = path + '.js' + , index = path + '/index.js'; + return require.modules[reg] && reg + || require.modules[index] && index + || orig; + }; + +require.register = function (path, fn){ + require.modules[path] = fn; + }; + +require.relative = function (parent) { + return function(p){ + if ('.' != p.charAt(0)) return require(p); + + var path = parent.split('/') + , segs = p.split('/'); + path.pop(); + + for (var i = 0; i < segs.length; i++) { + var seg = segs[i]; + if ('..' == seg) path.pop(); + else if ('.' != seg) path.push(seg); + } + + return require(path.join('/')); + }; + }; + + +require.register("compiler.js", function(module, exports, require){ + +/*! + * Jade - Compiler + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var nodes = require('./nodes') + , filters = require('./filters') + , doctypes = require('./doctypes') + , selfClosing = require('./self-closing') + , runtime = require('./runtime') + , utils = require('./utils'); + + + if (!Object.keys) { + Object.keys = function(obj){ + var arr = []; + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + arr.push(key); + } + } + return arr; + } + } + + if (!String.prototype.trimLeft) { + String.prototype.trimLeft = function(){ + return this.replace(/^\s+/, ''); + } + } + + + +/** + * Initialize `Compiler` with the given `node`. + * + * @param {Node} node + * @param {Object} options + * @api public + */ + +var Compiler = module.exports = function Compiler(node, options) { + this.options = options = options || {}; + this.node = node; + this.hasCompiledDoctype = false; + this.hasCompiledTag = false; + this.pp = options.pretty || false; + this.debug = false !== options.compileDebug; + this.indents = 0; + this.parentIndents = 0; + if (options.doctype) this.setDoctype(options.doctype); +}; + +/** + * Compiler prototype. + */ + +Compiler.prototype = { + + /** + * Compile parse tree to JavaScript. + * + * @api public + */ + + compile: function(){ + this.buf = ['var interp;']; + if (this.pp) this.buf.push("var __indent = [];"); + this.lastBufferedIdx = -1; + this.visit(this.node); + return this.buf.join('\n'); + }, + + /** + * Sets the default doctype `name`. Sets terse mode to `true` when + * html 5 is used, causing self-closing tags to end with ">" vs "/>", + * and boolean attributes are not mirrored. + * + * @param {string} name + * @api public + */ + + setDoctype: function(name){ + var doctype = doctypes[(name || 'default').toLowerCase()]; + doctype = doctype || ''; + this.doctype = doctype; + this.terse = '5' == name || 'html' == name; + this.xml = 0 == this.doctype.indexOf(' 1 && !escape && block.nodes[0].isText && block.nodes[1].isText) + this.prettyIndent(1, true); + + for (var i = 0; i < len; ++i) { + // Pretty print text + if (pp && i > 0 && !escape && block.nodes[i].isText && block.nodes[i-1].isText) + this.prettyIndent(1, false); + + this.visit(block.nodes[i]); + // Multiple text nodes are separated by newlines + if (block.nodes[i+1] && block.nodes[i].isText && block.nodes[i+1].isText) + this.buffer('\\n'); + } + }, + + /** + * Visit `doctype`. Sets terse mode to `true` when html 5 + * is used, causing self-closing tags to end with ">" vs "/>", + * and boolean attributes are not mirrored. + * + * @param {Doctype} doctype + * @api public + */ + + visitDoctype: function(doctype){ + if (doctype && (doctype.val || !this.doctype)) { + this.setDoctype(doctype.val || 'default'); + } + + if (this.doctype) this.buffer(this.doctype); + this.hasCompiledDoctype = true; + }, + + /** + * Visit `mixin`, generating a function that + * may be called within the template. + * + * @param {Mixin} mixin + * @api public + */ + + visitMixin: function(mixin){ + var name = mixin.name.replace(/-/g, '_') + '_mixin' + , args = mixin.args || '' + , block = mixin.block + , attrs = mixin.attrs + , pp = this.pp; + + if (mixin.call) { + if (pp) this.buf.push("__indent.push('" + Array(this.indents + 1).join(' ') + "');") + if (block || attrs.length) { + + this.buf.push(name + '.call({'); + + if (block) { + this.buf.push('block: function(){'); + + // Render block with no indents, dynamically added when rendered + this.parentIndents++; + var _indents = this.indents; + this.indents = 0; + this.visit(mixin.block); + this.indents = _indents; + this.parentIndents--; + + if (attrs.length) { + this.buf.push('},'); + } else { + this.buf.push('}'); + } + } + + if (attrs.length) { + var val = this.attrs(attrs); + if (val.inherits) { + this.buf.push('attributes: merge({' + val.buf + + '}, attributes), escaped: merge(' + val.escaped + ', escaped, true)'); + } else { + this.buf.push('attributes: {' + val.buf + '}, escaped: ' + val.escaped); + } + } + + if (args) { + this.buf.push('}, ' + args + ');'); + } else { + this.buf.push('});'); + } + + } else { + this.buf.push(name + '(' + args + ');'); + } + if (pp) this.buf.push("__indent.pop();") + } else { + this.buf.push('var ' + name + ' = function(' + args + '){'); + this.buf.push('var block = this.block, attributes = this.attributes || {}, escaped = this.escaped || {};'); + this.parentIndents++; + this.visit(block); + this.parentIndents--; + this.buf.push('};'); + } + }, + + /** + * Visit `tag` buffering tag markup, generating + * attributes, visiting the `tag`'s code and block. + * + * @param {Tag} tag + * @api public + */ + + visitTag: function(tag){ + this.indents++; + var name = tag.name + , pp = this.pp; + + if (tag.buffer) name = "' + (" + name + ") + '"; + + if (!this.hasCompiledTag) { + if (!this.hasCompiledDoctype && 'html' == name) { + this.visitDoctype(); + } + this.hasCompiledTag = true; + } + + // pretty print + if (pp && !tag.isInline()) + this.prettyIndent(0, true); + + if ((~selfClosing.indexOf(name) || tag.selfClosing) && !this.xml) { + this.buffer('<' + name); + this.visitAttributes(tag.attrs); + this.terse + ? this.buffer('>') + : this.buffer('/>'); + } else { + // Optimize attributes buffering + if (tag.attrs.length) { + this.buffer('<' + name); + if (tag.attrs.length) this.visitAttributes(tag.attrs); + this.buffer('>'); + } else { + this.buffer('<' + name + '>'); + } + if (tag.code) this.visitCode(tag.code); + this.escape = 'pre' == tag.name; + this.visit(tag.block); + + // pretty print + if (pp && !tag.isInline() && 'pre' != tag.name && !tag.canInline()) + this.prettyIndent(0, true); + + this.buffer(''); + } + this.indents--; + }, + + /** + * Visit `filter`, throwing when the filter does not exist. + * + * @param {Filter} filter + * @api public + */ + + visitFilter: function(filter){ + var fn = filters[filter.name]; + + // unknown filter + if (!fn) { + if (filter.isASTFilter) { + throw new Error('unknown ast filter "' + filter.name + ':"'); + } else { + throw new Error('unknown filter ":' + filter.name + '"'); + } + } + + if (filter.isASTFilter) { + this.buf.push(fn(filter.block, this, filter.attrs)); + } else { + var text = filter.block.nodes.map(function(node){ return node.val }).join('\n'); + filter.attrs = filter.attrs || {}; + filter.attrs.filename = this.options.filename; + this.buffer(utils.text(fn(text, filter.attrs))); + } + }, + + /** + * Visit `text` node. + * + * @param {Text} text + * @api public + */ + + visitText: function(text){ + text = utils.text(text.val.replace(/\\/g, '\\\\')); + if (this.escape) text = escape(text); + this.buffer(text); + }, + + /** + * Visit a `comment`, only buffering when the buffer flag is set. + * + * @param {Comment} comment + * @api public + */ + + visitComment: function(comment){ + if (!comment.buffer) return; + if (this.pp) this.prettyIndent(1, true); + this.buffer(''); + }, + + /** + * Visit a `BlockComment`. + * + * @param {Comment} comment + * @api public + */ + + visitBlockComment: function(comment){ + if (!comment.buffer) return; + if (0 == comment.val.trim().indexOf('if')) { + this.buffer(''); + } else { + this.buffer(''); + } + }, + + /** + * Visit `code`, respecting buffer / escape flags. + * If the code is followed by a block, wrap it in + * a self-calling function. + * + * @param {Code} code + * @api public + */ + + visitCode: function(code){ + // Wrap code blocks with {}. + // we only wrap unbuffered code blocks ATM + // since they are usually flow control + + // Buffer code + if (code.buffer) { + var val = code.val.trimLeft(); + this.buf.push('var __val__ = ' + val); + val = 'null == __val__ ? "" : __val__'; + if (code.escape) val = 'escape(' + val + ')'; + this.buf.push("buf.push(" + val + ");"); + } else { + this.buf.push(code.val); + } + + // Block support + if (code.block) { + if (!code.buffer) this.buf.push('{'); + this.visit(code.block); + if (!code.buffer) this.buf.push('}'); + } + }, + + /** + * Visit `each` block. + * + * @param {Each} each + * @api public + */ + + visitEach: function(each){ + this.buf.push('' + + '// iterate ' + each.obj + '\n' + + ';(function(){\n' + + ' if (\'number\' == typeof ' + each.obj + '.length) {\n' + + ' for (var ' + each.key + ' = 0, $$l = ' + each.obj + '.length; ' + each.key + ' < $$l; ' + each.key + '++) {\n' + + ' var ' + each.val + ' = ' + each.obj + '[' + each.key + '];\n'); + + this.visit(each.block); + + this.buf.push('' + + ' }\n' + + ' } else {\n' + + ' for (var ' + each.key + ' in ' + each.obj + ') {\n' + + ' if (' + each.obj + '.hasOwnProperty(' + each.key + ')){' + + ' var ' + each.val + ' = ' + each.obj + '[' + each.key + '];\n'); + + this.visit(each.block); + + this.buf.push(' }\n'); + + this.buf.push(' }\n }\n}).call(this);\n'); + }, + + /** + * Visit `attrs`. + * + * @param {Array} attrs + * @api public + */ + + visitAttributes: function(attrs){ + var val = this.attrs(attrs); + if (val.inherits) { + this.buf.push("buf.push(attrs(merge({ " + val.buf + + " }, attributes), merge(" + val.escaped + ", escaped, true)));"); + } else if (val.constant) { + eval('var buf={' + val.buf + '};'); + this.buffer(runtime.attrs(buf, JSON.parse(val.escaped)), true); + } else { + this.buf.push("buf.push(attrs({ " + val.buf + " }, " + val.escaped + "));"); + } + }, + + /** + * Compile attributes. + */ + + attrs: function(attrs){ + var buf = [] + , classes = [] + , escaped = {} + , constant = attrs.every(function(attr){ return isConstant(attr.val) }) + , inherits = false; + + if (this.terse) buf.push('terse: true'); + + attrs.forEach(function(attr){ + if (attr.name == 'attributes') return inherits = true; + escaped[attr.name] = attr.escaped; + if (attr.name == 'class') { + classes.push('(' + attr.val + ')'); + } else { + var pair = "'" + attr.name + "':(" + attr.val + ')'; + buf.push(pair); + } + }); + + if (classes.length) { + classes = classes.join(" + ' ' + "); + buf.push("class: " + classes); + } + + return { + buf: buf.join(', ').replace('class:', '"class":'), + escaped: JSON.stringify(escaped), + inherits: inherits, + constant: constant + }; + } +}; + +/** + * Check if expression can be evaluated to a constant + * + * @param {String} expression + * @return {Boolean} + * @api private + */ + +function isConstant(val){ + // Check strings/literals + if (/^ *("([^"\\]*(\\.[^"\\]*)*)"|'([^'\\]*(\\.[^'\\]*)*)'|true|false|null|undefined) *$/i.test(val)) + return true; + + // Check numbers + if (!isNaN(Number(val))) + return true; + + // Check arrays + var matches; + if (matches = /^ *\[(.*)\] *$/.exec(val)) + return matches[1].split(',').every(isConstant); + + return false; +} + +/** + * Escape the given string of `html`. + * + * @param {String} html + * @return {String} + * @api private + */ + +function escape(html){ + return String(html) + .replace(/&(?!\w+;)/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); +} +}); // module: compiler.js + +require.register("doctypes.js", function(module, exports, require){ + +/*! + * Jade - doctypes + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +module.exports = { + '5': '' + , 'default': '' + , 'xml': '' + , 'transitional': '' + , 'strict': '' + , 'frameset': '' + , '1.1': '' + , 'basic': '' + , 'mobile': '' +}; +}); // module: doctypes.js + +require.register("filters.js", function(module, exports, require){ + +/*! + * Jade - filters + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +module.exports = { + + /** + * Wrap text with CDATA block. + */ + + cdata: function(str){ + return ''; + }, + + /** + * Transform sass to css, wrapped in style tags. + */ + + sass: function(str){ + str = str.replace(/\\n/g, '\n'); + var sass = require('sass').render(str).replace(/\n/g, '\\n'); + return ''; + }, + + /** + * Transform stylus to css, wrapped in style tags. + */ + + stylus: function(str, options){ + var ret; + str = str.replace(/\\n/g, '\n'); + var stylus = require('stylus'); + stylus(str, options).render(function(err, css){ + if (err) throw err; + ret = css.replace(/\n/g, '\\n'); + }); + return ''; + }, + + /** + * Transform less to css, wrapped in style tags. + */ + + less: function(str){ + var ret; + str = str.replace(/\\n/g, '\n'); + require('less').render(str, function(err, css){ + if (err) throw err; + ret = ''; + }); + return ret; + }, + + /** + * Transform markdown to html. + */ + + markdown: function(str){ + var md; + + // support markdown / discount + try { + md = require('markdown'); + } catch (err){ + try { + md = require('discount'); + } catch (err) { + try { + md = require('markdown-js'); + } catch (err) { + try { + md = require('marked'); + } catch (err) { + throw new + Error('Cannot find markdown library, install markdown, discount, or marked.'); + } + } + } + } + + str = str.replace(/\\n/g, '\n'); + return md.parse(str).replace(/\n/g, '\\n').replace(/'/g,'''); + }, + + /** + * Transform coffeescript to javascript. + */ + + coffeescript: function(str){ + str = str.replace(/\\n/g, '\n'); + var js = require('coffee-script').compile(str).replace(/\\/g, '\\\\').replace(/\n/g, '\\n'); + return ''; + } +}; + +}); // module: filters.js + +require.register("inline-tags.js", function(module, exports, require){ + +/*! + * Jade - inline tags + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +module.exports = [ + 'a' + , 'abbr' + , 'acronym' + , 'b' + , 'br' + , 'code' + , 'em' + , 'font' + , 'i' + , 'img' + , 'ins' + , 'kbd' + , 'map' + , 'samp' + , 'small' + , 'span' + , 'strong' + , 'sub' + , 'sup' +]; +}); // module: inline-tags.js + +require.register("jade.js", function(module, exports, require){ +/*! + * Jade + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Parser = require('./parser') + , Lexer = require('./lexer') + , Compiler = require('./compiler') + , runtime = require('./runtime') + +/** + * Library version. + */ + +exports.version = '0.26.1'; + +/** + * Expose self closing tags. + */ + +exports.selfClosing = require('./self-closing'); + +/** + * Default supported doctypes. + */ + +exports.doctypes = require('./doctypes'); + +/** + * Text filters. + */ + +exports.filters = require('./filters'); + +/** + * Utilities. + */ + +exports.utils = require('./utils'); + +/** + * Expose `Compiler`. + */ + +exports.Compiler = Compiler; + +/** + * Expose `Parser`. + */ + +exports.Parser = Parser; + +/** + * Expose `Lexer`. + */ + +exports.Lexer = Lexer; + +/** + * Nodes. + */ + +exports.nodes = require('./nodes'); + +/** + * Jade runtime helpers. + */ + +exports.runtime = runtime; + +/** + * Template function cache. + */ + +exports.cache = {}; + +/** + * Parse the given `str` of jade and return a function body. + * + * @param {String} str + * @param {Object} options + * @return {String} + * @api private + */ + +function parse(str, options){ + try { + // Parse + var parser = new Parser(str, options.filename, options); + + // Compile + var compiler = new (options.compiler || Compiler)(parser.parse(), options) + , js = compiler.compile(); + + // Debug compiler + if (options.debug) { + console.error('\nCompiled Function:\n\n\033[90m%s\033[0m', js.replace(/^/gm, ' ')); + } + + return '' + + 'var buf = [];\n' + + (options.self + ? 'var self = locals || {};\n' + js + : 'with (locals || {}) {\n' + js + '\n}\n') + + 'return buf.join("");'; + } catch (err) { + parser = parser.context(); + runtime.rethrow(err, parser.filename, parser.lexer.lineno); + } +} + +/** + * Compile a `Function` representation of the given jade `str`. + * + * Options: + * + * - `compileDebug` when `false` debugging code is stripped from the compiled template + * - `client` when `true` the helper functions `escape()` etc will reference `jade.escape()` + * for use with the Jade client-side runtime.js + * + * @param {String} str + * @param {Options} options + * @return {Function} + * @api public + */ + +exports.compile = function(str, options){ + var options = options || {} + , client = options.client + , filename = options.filename + ? JSON.stringify(options.filename) + : 'undefined' + , fn; + + if (options.compileDebug !== false) { + fn = [ + 'var __jade = [{ lineno: 1, filename: ' + filename + ' }];' + , 'try {' + , parse(String(str), options) + , '} catch (err) {' + , ' rethrow(err, __jade[0].filename, __jade[0].lineno);' + , '}' + ].join('\n'); + } else { + fn = parse(String(str), options); + } + + if (client) { + fn = 'attrs = attrs || jade.attrs; escape = escape || jade.escape; rethrow = rethrow || jade.rethrow; merge = merge || jade.merge;\n' + fn; + } + + fn = new Function('locals, attrs, escape, rethrow, merge', fn); + + if (client) return fn; + + return function(locals){ + return fn(locals, runtime.attrs, runtime.escape, runtime.rethrow, runtime.merge); + }; +}; + +/** + * Render the given `str` of jade and invoke + * the callback `fn(err, str)`. + * + * Options: + * + * - `cache` enable template caching + * - `filename` filename required for `include` / `extends` and caching + * + * @param {String} str + * @param {Object|Function} options or fn + * @param {Function} fn + * @api public + */ + +exports.render = function(str, options, fn){ + // swap args + if ('function' == typeof options) { + fn = options, options = {}; + } + + // cache requires .filename + if (options.cache && !options.filename) { + return fn(new Error('the "filename" option is required for caching')); + } + + try { + var path = options.filename; + var tmpl = options.cache + ? exports.cache[path] || (exports.cache[path] = exports.compile(str, options)) + : exports.compile(str, options); + fn(null, tmpl(options)); + } catch (err) { + fn(err); + } +}; + +/** + * Render a Jade file at the given `path` and callback `fn(err, str)`. + * + * @param {String} path + * @param {Object|Function} options or callback + * @param {Function} fn + * @api public + */ + +exports.renderFile = function(path, options, fn){ + var key = path + ':string'; + + if ('function' == typeof options) { + fn = options, options = {}; + } + + try { + options.filename = path; + var str = options.cache + ? exports.cache[key] || (exports.cache[key] = fs.readFileSync(path, 'utf8')) + : fs.readFileSync(path, 'utf8'); + exports.render(str, options, fn); + } catch (err) { + fn(err); + } +}; + +/** + * Express support. + */ + +exports.__express = exports.renderFile; + +}); // module: jade.js + +require.register("lexer.js", function(module, exports, require){ + +/*! + * Jade - Lexer + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Initialize `Lexer` with the given `str`. + * + * Options: + * + * - `colons` allow colons for attr delimiters + * + * @param {String} str + * @param {Object} options + * @api private + */ + +var Lexer = module.exports = function Lexer(str, options) { + options = options || {}; + this.input = str.replace(/\r\n|\r/g, '\n'); + this.colons = options.colons; + this.deferredTokens = []; + this.lastIndents = 0; + this.lineno = 1; + this.stash = []; + this.indentStack = []; + this.indentRe = null; + this.pipeless = false; +}; + +/** + * Lexer prototype. + */ + +Lexer.prototype = { + + /** + * Construct a token with the given `type` and `val`. + * + * @param {String} type + * @param {String} val + * @return {Object} + * @api private + */ + + tok: function(type, val){ + return { + type: type + , line: this.lineno + , val: val + } + }, + + /** + * Consume the given `len` of input. + * + * @param {Number} len + * @api private + */ + + consume: function(len){ + this.input = this.input.substr(len); + }, + + /** + * Scan for `type` with the given `regexp`. + * + * @param {String} type + * @param {RegExp} regexp + * @return {Object} + * @api private + */ + + scan: function(regexp, type){ + var captures; + if (captures = regexp.exec(this.input)) { + this.consume(captures[0].length); + return this.tok(type, captures[1]); + } + }, + + /** + * Defer the given `tok`. + * + * @param {Object} tok + * @api private + */ + + defer: function(tok){ + this.deferredTokens.push(tok); + }, + + /** + * Lookahead `n` tokens. + * + * @param {Number} n + * @return {Object} + * @api private + */ + + lookahead: function(n){ + var fetch = n - this.stash.length; + while (fetch-- > 0) this.stash.push(this.next()); + return this.stash[--n]; + }, + + /** + * Return the indexOf `start` / `end` delimiters. + * + * @param {String} start + * @param {String} end + * @return {Number} + * @api private + */ + + indexOfDelimiters: function(start, end){ + var str = this.input + , nstart = 0 + , nend = 0 + , pos = 0; + for (var i = 0, len = str.length; i < len; ++i) { + if (start == str.charAt(i)) { + ++nstart; + } else if (end == str.charAt(i)) { + if (++nend == nstart) { + pos = i; + break; + } + } + } + return pos; + }, + + /** + * Stashed token. + */ + + stashed: function() { + return this.stash.length + && this.stash.shift(); + }, + + /** + * Deferred token. + */ + + deferred: function() { + return this.deferredTokens.length + && this.deferredTokens.shift(); + }, + + /** + * end-of-source. + */ + + eos: function() { + if (this.input.length) return; + if (this.indentStack.length) { + this.indentStack.shift(); + return this.tok('outdent'); + } else { + return this.tok('eos'); + } + }, + + /** + * Blank line. + */ + + blank: function() { + var captures; + if (captures = /^\n *\n/.exec(this.input)) { + this.consume(captures[0].length - 1); + if (this.pipeless) return this.tok('text', ''); + return this.next(); + } + }, + + /** + * Comment. + */ + + comment: function() { + var captures; + if (captures = /^ *\/\/(-)?([^\n]*)/.exec(this.input)) { + this.consume(captures[0].length); + var tok = this.tok('comment', captures[2]); + tok.buffer = '-' != captures[1]; + return tok; + } + }, + + /** + * Interpolated tag. + */ + + interpolation: function() { + var captures; + if (captures = /^#\{(.*?)\}/.exec(this.input)) { + this.consume(captures[0].length); + return this.tok('interpolation', captures[1]); + } + }, + + /** + * Tag. + */ + + tag: function() { + var captures; + if (captures = /^(\w[-:\w]*)(\/?)/.exec(this.input)) { + this.consume(captures[0].length); + var tok, name = captures[1]; + if (':' == name[name.length - 1]) { + name = name.slice(0, -1); + tok = this.tok('tag', name); + this.defer(this.tok(':')); + while (' ' == this.input[0]) this.input = this.input.substr(1); + } else { + tok = this.tok('tag', name); + } + tok.selfClosing = !! captures[2]; + return tok; + } + }, + + /** + * Filter. + */ + + filter: function() { + return this.scan(/^:(\w+)/, 'filter'); + }, + + /** + * Doctype. + */ + + doctype: function() { + return this.scan(/^(?:!!!|doctype) *([^\n]+)?/, 'doctype'); + }, + + /** + * Id. + */ + + id: function() { + return this.scan(/^#([\w-]+)/, 'id'); + }, + + /** + * Class. + */ + + className: function() { + return this.scan(/^\.([\w-]+)/, 'class'); + }, + + /** + * Text. + */ + + text: function() { + return this.scan(/^(?:\| ?| ?)?([^\n]+)/, 'text'); + }, + + /** + * Extends. + */ + + "extends": function() { + return this.scan(/^extends? +([^\n]+)/, 'extends'); + }, + + /** + * Block prepend. + */ + + prepend: function() { + var captures; + if (captures = /^prepend +([^\n]+)/.exec(this.input)) { + this.consume(captures[0].length); + var mode = 'prepend' + , name = captures[1] + , tok = this.tok('block', name); + tok.mode = mode; + return tok; + } + }, + + /** + * Block append. + */ + + append: function() { + var captures; + if (captures = /^append +([^\n]+)/.exec(this.input)) { + this.consume(captures[0].length); + var mode = 'append' + , name = captures[1] + , tok = this.tok('block', name); + tok.mode = mode; + return tok; + } + }, + + /** + * Block. + */ + + block: function() { + var captures; + if (captures = /^block\b *(?:(prepend|append) +)?([^\n]*)/.exec(this.input)) { + this.consume(captures[0].length); + var mode = captures[1] || 'replace' + , name = captures[2] + , tok = this.tok('block', name); + + tok.mode = mode; + return tok; + } + }, + + /** + * Yield. + */ + + yield: function() { + return this.scan(/^yield */, 'yield'); + }, + + /** + * Include. + */ + + include: function() { + return this.scan(/^include +([^\n]+)/, 'include'); + }, + + /** + * Case. + */ + + "case": function() { + return this.scan(/^case +([^\n]+)/, 'case'); + }, + + /** + * When. + */ + + when: function() { + return this.scan(/^when +([^:\n]+)/, 'when'); + }, + + /** + * Default. + */ + + "default": function() { + return this.scan(/^default */, 'default'); + }, + + /** + * Assignment. + */ + + assignment: function() { + var captures; + if (captures = /^(\w+) += *([^;\n]+)( *;? *)/.exec(this.input)) { + this.consume(captures[0].length); + var name = captures[1] + , val = captures[2]; + return this.tok('code', 'var ' + name + ' = (' + val + ');'); + } + }, + + /** + * Call mixin. + */ + + call: function(){ + var captures; + if (captures = /^\+([-\w]+)/.exec(this.input)) { + this.consume(captures[0].length); + var tok = this.tok('call', captures[1]); + + // Check for args (not attributes) + if (captures = /^ *\((.*?)\)/.exec(this.input)) { + if (!/^ *[-\w]+ *=/.test(captures[1])) { + this.consume(captures[0].length); + tok.args = captures[1]; + } + } + + return tok; + } + }, + + /** + * Mixin. + */ + + mixin: function(){ + var captures; + if (captures = /^mixin +([-\w]+)(?: *\((.*)\))?/.exec(this.input)) { + this.consume(captures[0].length); + var tok = this.tok('mixin', captures[1]); + tok.args = captures[2]; + return tok; + } + }, + + /** + * Conditional. + */ + + conditional: function() { + var captures; + if (captures = /^(if|unless|else if|else)\b([^\n]*)/.exec(this.input)) { + this.consume(captures[0].length); + var type = captures[1] + , js = captures[2]; + + switch (type) { + case 'if': js = 'if (' + js + ')'; break; + case 'unless': js = 'if (!(' + js + '))'; break; + case 'else if': js = 'else if (' + js + ')'; break; + case 'else': js = 'else'; break; + } + + return this.tok('code', js); + } + }, + + /** + * While. + */ + + "while": function() { + var captures; + if (captures = /^while +([^\n]+)/.exec(this.input)) { + this.consume(captures[0].length); + return this.tok('code', 'while (' + captures[1] + ')'); + } + }, + + /** + * Each. + */ + + each: function() { + var captures; + if (captures = /^(?:- *)?(?:each|for) +(\w+)(?: *, *(\w+))? * in *([^\n]+)/.exec(this.input)) { + this.consume(captures[0].length); + var tok = this.tok('each', captures[1]); + tok.key = captures[2] || '$index'; + tok.code = captures[3]; + return tok; + } + }, + + /** + * Code. + */ + + code: function() { + var captures; + if (captures = /^(!?=|-)([^\n]+)/.exec(this.input)) { + this.consume(captures[0].length); + var flags = captures[1]; + captures[1] = captures[2]; + var tok = this.tok('code', captures[1]); + tok.escape = flags[0] === '='; + tok.buffer = flags[0] === '=' || flags[1] === '='; + return tok; + } + }, + + /** + * Attributes. + */ + + attrs: function() { + if ('(' == this.input.charAt(0)) { + var index = this.indexOfDelimiters('(', ')') + , str = this.input.substr(1, index-1) + , tok = this.tok('attrs') + , len = str.length + , colons = this.colons + , states = ['key'] + , escapedAttr + , key = '' + , val = '' + , quote + , c + , p; + + function state(){ + return states[states.length - 1]; + } + + function interpolate(attr) { + return attr.replace(/#\{([^}]+)\}/g, function(_, expr){ + return quote + " + (" + expr + ") + " + quote; + }); + } + + this.consume(index + 1); + tok.attrs = {}; + tok.escaped = {}; + + function parse(c) { + var real = c; + // TODO: remove when people fix ":" + if (colons && ':' == c) c = '='; + switch (c) { + case ',': + case '\n': + switch (state()) { + case 'expr': + case 'array': + case 'string': + case 'object': + val += c; + break; + default: + states.push('key'); + val = val.trim(); + key = key.trim(); + if ('' == key) return; + key = key.replace(/^['"]|['"]$/g, '').replace('!', ''); + tok.escaped[key] = escapedAttr; + tok.attrs[key] = '' == val + ? true + : interpolate(val); + key = val = ''; + } + break; + case '=': + switch (state()) { + case 'key char': + key += real; + break; + case 'val': + case 'expr': + case 'array': + case 'string': + case 'object': + val += real; + break; + default: + escapedAttr = '!' != p; + states.push('val'); + } + break; + case '(': + if ('val' == state() + || 'expr' == state()) states.push('expr'); + val += c; + break; + case ')': + if ('expr' == state() + || 'val' == state()) states.pop(); + val += c; + break; + case '{': + if ('val' == state()) states.push('object'); + val += c; + break; + case '}': + if ('object' == state()) states.pop(); + val += c; + break; + case '[': + if ('val' == state()) states.push('array'); + val += c; + break; + case ']': + if ('array' == state()) states.pop(); + val += c; + break; + case '"': + case "'": + switch (state()) { + case 'key': + states.push('key char'); + break; + case 'key char': + states.pop(); + break; + case 'string': + if (c == quote) states.pop(); + val += c; + break; + default: + states.push('string'); + val += c; + quote = c; + } + break; + case '': + break; + default: + switch (state()) { + case 'key': + case 'key char': + key += c; + break; + default: + val += c; + } + } + p = c; + } + + for (var i = 0; i < len; ++i) { + parse(str.charAt(i)); + } + + parse(','); + + if ('/' == this.input.charAt(0)) { + this.consume(1); + tok.selfClosing = true; + } + + return tok; + } + }, + + /** + * Indent | Outdent | Newline. + */ + + indent: function() { + var captures, re; + + // established regexp + if (this.indentRe) { + captures = this.indentRe.exec(this.input); + // determine regexp + } else { + // tabs + re = /^\n(\t*) */; + captures = re.exec(this.input); + + // spaces + if (captures && !captures[1].length) { + re = /^\n( *)/; + captures = re.exec(this.input); + } + + // established + if (captures && captures[1].length) this.indentRe = re; + } + + if (captures) { + var tok + , indents = captures[1].length; + + ++this.lineno; + this.consume(indents + 1); + + if (' ' == this.input[0] || '\t' == this.input[0]) { + throw new Error('Invalid indentation, you can use tabs or spaces but not both'); + } + + // blank line + if ('\n' == this.input[0]) return this.tok('newline'); + + // outdent + if (this.indentStack.length && indents < this.indentStack[0]) { + while (this.indentStack.length && this.indentStack[0] > indents) { + this.stash.push(this.tok('outdent')); + this.indentStack.shift(); + } + tok = this.stash.pop(); + // indent + } else if (indents && indents != this.indentStack[0]) { + this.indentStack.unshift(indents); + tok = this.tok('indent', indents); + // newline + } else { + tok = this.tok('newline'); + } + + return tok; + } + }, + + /** + * Pipe-less text consumed only when + * pipeless is true; + */ + + pipelessText: function() { + if (this.pipeless) { + if ('\n' == this.input[0]) return; + var i = this.input.indexOf('\n'); + if (-1 == i) i = this.input.length; + var str = this.input.substr(0, i); + this.consume(str.length); + return this.tok('text', str); + } + }, + + /** + * ':' + */ + + colon: function() { + return this.scan(/^: */, ':'); + }, + + /** + * Return the next token object, or those + * previously stashed by lookahead. + * + * @return {Object} + * @api private + */ + + advance: function(){ + return this.stashed() + || this.next(); + }, + + /** + * Return the next token object. + * + * @return {Object} + * @api private + */ + + next: function() { + return this.deferred() + || this.blank() + || this.eos() + || this.pipelessText() + || this.yield() + || this.doctype() + || this.interpolation() + || this["case"]() + || this.when() + || this["default"]() + || this["extends"]() + || this.append() + || this.prepend() + || this.block() + || this.include() + || this.mixin() + || this.call() + || this.conditional() + || this.each() + || this["while"]() + || this.assignment() + || this.tag() + || this.filter() + || this.code() + || this.id() + || this.className() + || this.attrs() + || this.indent() + || this.comment() + || this.colon() + || this.text(); + } +}; + +}); // module: lexer.js + +require.register("nodes/attrs.js", function(module, exports, require){ + +/*! + * Jade - nodes - Attrs + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'), + Block = require('./block'); + +/** + * Initialize a `Attrs` node. + * + * @api public + */ + +var Attrs = module.exports = function Attrs() { + this.attrs = []; +}; + +/** + * Inherit from `Node`. + */ + +Attrs.prototype = new Node; +Attrs.prototype.constructor = Attrs; + + +/** + * Set attribute `name` to `val`, keep in mind these become + * part of a raw js object literal, so to quote a value you must + * '"quote me"', otherwise or example 'user.name' is literal JavaScript. + * + * @param {String} name + * @param {String} val + * @param {Boolean} escaped + * @return {Tag} for chaining + * @api public + */ + +Attrs.prototype.setAttribute = function(name, val, escaped){ + this.attrs.push({ name: name, val: val, escaped: escaped }); + return this; +}; + +/** + * Remove attribute `name` when present. + * + * @param {String} name + * @api public + */ + +Attrs.prototype.removeAttribute = function(name){ + for (var i = 0, len = this.attrs.length; i < len; ++i) { + if (this.attrs[i] && this.attrs[i].name == name) { + delete this.attrs[i]; + } + } +}; + +/** + * Get attribute value by `name`. + * + * @param {String} name + * @return {String} + * @api public + */ + +Attrs.prototype.getAttribute = function(name){ + for (var i = 0, len = this.attrs.length; i < len; ++i) { + if (this.attrs[i] && this.attrs[i].name == name) { + return this.attrs[i].val; + } + } +}; + +}); // module: nodes/attrs.js + +require.register("nodes/block-comment.js", function(module, exports, require){ + +/*! + * Jade - nodes - BlockComment + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a `BlockComment` with the given `block`. + * + * @param {String} val + * @param {Block} block + * @param {Boolean} buffer + * @api public + */ + +var BlockComment = module.exports = function BlockComment(val, block, buffer) { + this.block = block; + this.val = val; + this.buffer = buffer; +}; + +/** + * Inherit from `Node`. + */ + +BlockComment.prototype = new Node; +BlockComment.prototype.constructor = BlockComment; + +}); // module: nodes/block-comment.js + +require.register("nodes/block.js", function(module, exports, require){ + +/*! + * Jade - nodes - Block + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a new `Block` with an optional `node`. + * + * @param {Node} node + * @api public + */ + +var Block = module.exports = function Block(node){ + this.nodes = []; + if (node) this.push(node); +}; + +/** + * Inherit from `Node`. + */ + +Block.prototype = new Node; +Block.prototype.constructor = Block; + + +/** + * Block flag. + */ + +Block.prototype.isBlock = true; + +/** + * Replace the nodes in `other` with the nodes + * in `this` block. + * + * @param {Block} other + * @api private + */ + +Block.prototype.replace = function(other){ + other.nodes = this.nodes; +}; + +/** + * Pust the given `node`. + * + * @param {Node} node + * @return {Number} + * @api public + */ + +Block.prototype.push = function(node){ + return this.nodes.push(node); +}; + +/** + * Check if this block is empty. + * + * @return {Boolean} + * @api public + */ + +Block.prototype.isEmpty = function(){ + return 0 == this.nodes.length; +}; + +/** + * Unshift the given `node`. + * + * @param {Node} node + * @return {Number} + * @api public + */ + +Block.prototype.unshift = function(node){ + return this.nodes.unshift(node); +}; + +/** + * Return the "last" block, or the first `yield` node. + * + * @return {Block} + * @api private + */ + +Block.prototype.includeBlock = function(){ + var ret = this + , node; + + for (var i = 0, len = this.nodes.length; i < len; ++i) { + node = this.nodes[i]; + if (node.yield) return node; + else if (node.textOnly) continue; + else if (node.includeBlock) ret = node.includeBlock(); + else if (node.block && !node.block.isEmpty()) ret = node.block.includeBlock(); + } + + return ret; +}; + +/** + * Return a clone of this block. + * + * @return {Block} + * @api private + */ + +Block.prototype.clone = function(){ + var clone = new Block; + for (var i = 0, len = this.nodes.length; i < len; ++i) { + clone.push(this.nodes[i].clone()); + } + return clone; +}; + + +}); // module: nodes/block.js + +require.register("nodes/case.js", function(module, exports, require){ + +/*! + * Jade - nodes - Case + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a new `Case` with `expr`. + * + * @param {String} expr + * @api public + */ + +var Case = exports = module.exports = function Case(expr, block){ + this.expr = expr; + this.block = block; +}; + +/** + * Inherit from `Node`. + */ + +Case.prototype = new Node; +Case.prototype.constructor = Case; + + +var When = exports.When = function When(expr, block){ + this.expr = expr; + this.block = block; + this.debug = false; +}; + +/** + * Inherit from `Node`. + */ + +When.prototype = new Node; +When.prototype.constructor = When; + + + +}); // module: nodes/case.js + +require.register("nodes/code.js", function(module, exports, require){ + +/*! + * Jade - nodes - Code + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a `Code` node with the given code `val`. + * Code may also be optionally buffered and escaped. + * + * @param {String} val + * @param {Boolean} buffer + * @param {Boolean} escape + * @api public + */ + +var Code = module.exports = function Code(val, buffer, escape) { + this.val = val; + this.buffer = buffer; + this.escape = escape; + if (val.match(/^ *else/)) this.debug = false; +}; + +/** + * Inherit from `Node`. + */ + +Code.prototype = new Node; +Code.prototype.constructor = Code; + +}); // module: nodes/code.js + +require.register("nodes/comment.js", function(module, exports, require){ + +/*! + * Jade - nodes - Comment + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a `Comment` with the given `val`, optionally `buffer`, + * otherwise the comment may render in the output. + * + * @param {String} val + * @param {Boolean} buffer + * @api public + */ + +var Comment = module.exports = function Comment(val, buffer) { + this.val = val; + this.buffer = buffer; +}; + +/** + * Inherit from `Node`. + */ + +Comment.prototype = new Node; +Comment.prototype.constructor = Comment; + +}); // module: nodes/comment.js + +require.register("nodes/doctype.js", function(module, exports, require){ + +/*! + * Jade - nodes - Doctype + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a `Doctype` with the given `val`. + * + * @param {String} val + * @api public + */ + +var Doctype = module.exports = function Doctype(val) { + this.val = val; +}; + +/** + * Inherit from `Node`. + */ + +Doctype.prototype = new Node; +Doctype.prototype.constructor = Doctype; + +}); // module: nodes/doctype.js + +require.register("nodes/each.js", function(module, exports, require){ + +/*! + * Jade - nodes - Each + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize an `Each` node, representing iteration + * + * @param {String} obj + * @param {String} val + * @param {String} key + * @param {Block} block + * @api public + */ + +var Each = module.exports = function Each(obj, val, key, block) { + this.obj = obj; + this.val = val; + this.key = key; + this.block = block; +}; + +/** + * Inherit from `Node`. + */ + +Each.prototype = new Node; +Each.prototype.constructor = Each; + +}); // module: nodes/each.js + +require.register("nodes/filter.js", function(module, exports, require){ + +/*! + * Jade - nodes - Filter + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node') + , Block = require('./block'); + +/** + * Initialize a `Filter` node with the given + * filter `name` and `block`. + * + * @param {String} name + * @param {Block|Node} block + * @api public + */ + +var Filter = module.exports = function Filter(name, block, attrs) { + this.name = name; + this.block = block; + this.attrs = attrs; + this.isASTFilter = !block.nodes.every(function(node){ return node.isText }); +}; + +/** + * Inherit from `Node`. + */ + +Filter.prototype = new Node; +Filter.prototype.constructor = Filter; + +}); // module: nodes/filter.js + +require.register("nodes/index.js", function(module, exports, require){ + +/*! + * Jade - nodes + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +exports.Node = require('./node'); +exports.Tag = require('./tag'); +exports.Code = require('./code'); +exports.Each = require('./each'); +exports.Case = require('./case'); +exports.Text = require('./text'); +exports.Block = require('./block'); +exports.Mixin = require('./mixin'); +exports.Filter = require('./filter'); +exports.Comment = require('./comment'); +exports.Literal = require('./literal'); +exports.BlockComment = require('./block-comment'); +exports.Doctype = require('./doctype'); + +}); // module: nodes/index.js + +require.register("nodes/literal.js", function(module, exports, require){ + +/*! + * Jade - nodes - Literal + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a `Literal` node with the given `str. + * + * @param {String} str + * @api public + */ + +var Literal = module.exports = function Literal(str) { + this.str = str + .replace(/\\/g, "\\\\") + .replace(/\n|\r\n/g, "\\n") + .replace(/'/g, "\\'"); +}; + +/** + * Inherit from `Node`. + */ + +Literal.prototype = new Node; +Literal.prototype.constructor = Literal; + + +}); // module: nodes/literal.js + +require.register("nodes/mixin.js", function(module, exports, require){ + +/*! + * Jade - nodes - Mixin + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Attrs = require('./attrs'); + +/** + * Initialize a new `Mixin` with `name` and `block`. + * + * @param {String} name + * @param {String} args + * @param {Block} block + * @api public + */ + +var Mixin = module.exports = function Mixin(name, args, block, call){ + this.name = name; + this.args = args; + this.block = block; + this.attrs = []; + this.call = call; +}; + +/** + * Inherit from `Attrs`. + */ + +Mixin.prototype = new Attrs; +Mixin.prototype.constructor = Mixin; + + + +}); // module: nodes/mixin.js + +require.register("nodes/node.js", function(module, exports, require){ + +/*! + * Jade - nodes - Node + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Initialize a `Node`. + * + * @api public + */ + +var Node = module.exports = function Node(){}; + +/** + * Clone this node (return itself) + * + * @return {Node} + * @api private + */ + +Node.prototype.clone = function(){ + return this; +}; + +}); // module: nodes/node.js + +require.register("nodes/tag.js", function(module, exports, require){ + +/*! + * Jade - nodes - Tag + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Attrs = require('./attrs'), + Block = require('./block'), + inlineTags = require('../inline-tags'); + +/** + * Initialize a `Tag` node with the given tag `name` and optional `block`. + * + * @param {String} name + * @param {Block} block + * @api public + */ + +var Tag = module.exports = function Tag(name, block) { + this.name = name; + this.attrs = []; + this.block = block || new Block; +}; + +/** + * Inherit from `Attrs`. + */ + +Tag.prototype = new Attrs; +Tag.prototype.constructor = Tag; + + +/** + * Clone this tag. + * + * @return {Tag} + * @api private + */ + +Tag.prototype.clone = function(){ + var clone = new Tag(this.name, this.block.clone()); + clone.line = this.line; + clone.attrs = this.attrs; + clone.textOnly = this.textOnly; + return clone; +}; + +/** + * Check if this tag is an inline tag. + * + * @return {Boolean} + * @api private + */ + +Tag.prototype.isInline = function(){ + return ~inlineTags.indexOf(this.name); +}; + +/** + * Check if this tag's contents can be inlined. Used for pretty printing. + * + * @return {Boolean} + * @api private + */ + +Tag.prototype.canInline = function(){ + var nodes = this.block.nodes; + + function isInline(node){ + // Recurse if the node is a block + if (node.isBlock) return node.nodes.every(isInline); + return node.isText || (node.isInline && node.isInline()); + } + + // Empty tag + if (!nodes.length) return true; + + // Text-only or inline-only tag + if (1 == nodes.length) return isInline(nodes[0]); + + // Multi-line inline-only tag + if (this.block.nodes.every(isInline)) { + for (var i = 1, len = nodes.length; i < len; ++i) { + if (nodes[i-1].isText && nodes[i].isText) + return false; + } + return true; + } + + // Mixed tag + return false; +}; +}); // module: nodes/tag.js + +require.register("nodes/text.js", function(module, exports, require){ + +/*! + * Jade - nodes - Text + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a `Text` node with optional `line`. + * + * @param {String} line + * @api public + */ + +var Text = module.exports = function Text(line) { + this.val = ''; + if ('string' == typeof line) this.val = line; +}; + +/** + * Inherit from `Node`. + */ + +Text.prototype = new Node; +Text.prototype.constructor = Text; + + +/** + * Flag as text. + */ + +Text.prototype.isText = true; +}); // module: nodes/text.js + +require.register("parser.js", function(module, exports, require){ + +/*! + * Jade - Parser + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Lexer = require('./lexer') + , nodes = require('./nodes'); + +/** + * Initialize `Parser` with the given input `str` and `filename`. + * + * @param {String} str + * @param {String} filename + * @param {Object} options + * @api public + */ + +var Parser = exports = module.exports = function Parser(str, filename, options){ + this.input = str; + this.lexer = new Lexer(str, options); + this.filename = filename; + this.blocks = {}; + this.mixins = {}; + this.options = options; + this.contexts = [this]; +}; + +/** + * Tags that may not contain tags. + */ + +var textOnly = exports.textOnly = ['script', 'style']; + +/** + * Parser prototype. + */ + +Parser.prototype = { + + /** + * Push `parser` onto the context stack, + * or pop and return a `Parser`. + */ + + context: function(parser){ + if (parser) { + this.contexts.push(parser); + } else { + return this.contexts.pop(); + } + }, + + /** + * Return the next token object. + * + * @return {Object} + * @api private + */ + + advance: function(){ + return this.lexer.advance(); + }, + + /** + * Skip `n` tokens. + * + * @param {Number} n + * @api private + */ + + skip: function(n){ + while (n--) this.advance(); + }, + + /** + * Single token lookahead. + * + * @return {Object} + * @api private + */ + + peek: function() { + return this.lookahead(1); + }, + + /** + * Return lexer lineno. + * + * @return {Number} + * @api private + */ + + line: function() { + return this.lexer.lineno; + }, + + /** + * `n` token lookahead. + * + * @param {Number} n + * @return {Object} + * @api private + */ + + lookahead: function(n){ + return this.lexer.lookahead(n); + }, + + /** + * Parse input returning a string of js for evaluation. + * + * @return {String} + * @api public + */ + + parse: function(){ + var block = new nodes.Block, parser; + block.line = this.line(); + + while ('eos' != this.peek().type) { + if ('newline' == this.peek().type) { + this.advance(); + } else { + block.push(this.parseExpr()); + } + } + + if (parser = this.extending) { + this.context(parser); + var ast = parser.parse(); + this.context(); + // hoist mixins + for (var name in this.mixins) + ast.unshift(this.mixins[name]); + return ast; + } + + return block; + }, + + /** + * Expect the given type, or throw an exception. + * + * @param {String} type + * @api private + */ + + expect: function(type){ + if (this.peek().type === type) { + return this.advance(); + } else { + throw new Error('expected "' + type + '", but got "' + this.peek().type + '"'); + } + }, + + /** + * Accept the given `type`. + * + * @param {String} type + * @api private + */ + + accept: function(type){ + if (this.peek().type === type) { + return this.advance(); + } + }, + + /** + * tag + * | doctype + * | mixin + * | include + * | filter + * | comment + * | text + * | each + * | code + * | yield + * | id + * | class + * | interpolation + */ + + parseExpr: function(){ + switch (this.peek().type) { + case 'tag': + return this.parseTag(); + case 'mixin': + return this.parseMixin(); + case 'block': + return this.parseBlock(); + case 'case': + return this.parseCase(); + case 'when': + return this.parseWhen(); + case 'default': + return this.parseDefault(); + case 'extends': + return this.parseExtends(); + case 'include': + return this.parseInclude(); + case 'doctype': + return this.parseDoctype(); + case 'filter': + return this.parseFilter(); + case 'comment': + return this.parseComment(); + case 'text': + return this.parseText(); + case 'each': + return this.parseEach(); + case 'code': + return this.parseCode(); + case 'call': + return this.parseCall(); + case 'interpolation': + return this.parseInterpolation(); + case 'yield': + this.advance(); + var block = new nodes.Block; + block.yield = true; + return block; + case 'id': + case 'class': + var tok = this.advance(); + this.lexer.defer(this.lexer.tok('tag', 'div')); + this.lexer.defer(tok); + return this.parseExpr(); + default: + throw new Error('unexpected token "' + this.peek().type + '"'); + } + }, + + /** + * Text + */ + + parseText: function(){ + var tok = this.expect('text') + , node = new nodes.Text(tok.val); + node.line = this.line(); + return node; + }, + + /** + * ':' expr + * | block + */ + + parseBlockExpansion: function(){ + if (':' == this.peek().type) { + this.advance(); + return new nodes.Block(this.parseExpr()); + } else { + return this.block(); + } + }, + + /** + * case + */ + + parseCase: function(){ + var val = this.expect('case').val + , node = new nodes.Case(val); + node.line = this.line(); + node.block = this.block(); + return node; + }, + + /** + * when + */ + + parseWhen: function(){ + var val = this.expect('when').val + return new nodes.Case.When(val, this.parseBlockExpansion()); + }, + + /** + * default + */ + + parseDefault: function(){ + this.expect('default'); + return new nodes.Case.When('default', this.parseBlockExpansion()); + }, + + /** + * code + */ + + parseCode: function(){ + var tok = this.expect('code') + , node = new nodes.Code(tok.val, tok.buffer, tok.escape) + , block + , i = 1; + node.line = this.line(); + while (this.lookahead(i) && 'newline' == this.lookahead(i).type) ++i; + block = 'indent' == this.lookahead(i).type; + if (block) { + this.skip(i-1); + node.block = this.block(); + } + return node; + }, + + /** + * comment + */ + + parseComment: function(){ + var tok = this.expect('comment') + , node; + + if ('indent' == this.peek().type) { + node = new nodes.BlockComment(tok.val, this.block(), tok.buffer); + } else { + node = new nodes.Comment(tok.val, tok.buffer); + } + + node.line = this.line(); + return node; + }, + + /** + * doctype + */ + + parseDoctype: function(){ + var tok = this.expect('doctype') + , node = new nodes.Doctype(tok.val); + node.line = this.line(); + return node; + }, + + /** + * filter attrs? text-block + */ + + parseFilter: function(){ + var block + , tok = this.expect('filter') + , attrs = this.accept('attrs'); + + this.lexer.pipeless = true; + block = this.parseTextBlock(); + this.lexer.pipeless = false; + + var node = new nodes.Filter(tok.val, block, attrs && attrs.attrs); + node.line = this.line(); + return node; + }, + + /** + * tag ':' attrs? block + */ + + parseASTFilter: function(){ + var block + , tok = this.expect('tag') + , attrs = this.accept('attrs'); + + this.expect(':'); + block = this.block(); + + var node = new nodes.Filter(tok.val, block, attrs && attrs.attrs); + node.line = this.line(); + return node; + }, + + /** + * each block + */ + + parseEach: function(){ + var tok = this.expect('each') + , node = new nodes.Each(tok.code, tok.val, tok.key); + node.line = this.line(); + node.block = this.block(); + return node; + }, + + /** + * 'extends' name + */ + + parseExtends: function(){ + var path = require('path') + , fs = require('fs') + , dirname = path.dirname + , basename = path.basename + , join = path.join; + + if (!this.filename) + throw new Error('the "filename" option is required to extend templates'); + + var path = this.expect('extends').val.trim() + , dir = dirname(this.filename); + + var path = join(dir, path + '.jade') + , str = fs.readFileSync(path, 'utf8') + , parser = new Parser(str, path, this.options); + + parser.blocks = this.blocks; + parser.contexts = this.contexts; + this.extending = parser; + + // TODO: null node + return new nodes.Literal(''); + }, + + /** + * 'block' name block + */ + + parseBlock: function(){ + var block = this.expect('block') + , mode = block.mode + , name = block.val.trim(); + + block = 'indent' == this.peek().type + ? this.block() + : new nodes.Block(new nodes.Literal('')); + + var prev = this.blocks[name]; + + if (prev) { + switch (prev.mode) { + case 'append': + block.nodes = block.nodes.concat(prev.nodes); + prev = block; + break; + case 'prepend': + block.nodes = prev.nodes.concat(block.nodes); + prev = block; + break; + } + } + + block.mode = mode; + return this.blocks[name] = prev || block; + }, + + /** + * include block? + */ + + parseInclude: function(){ + var path = require('path') + , fs = require('fs') + , dirname = path.dirname + , basename = path.basename + , join = path.join; + + var path = this.expect('include').val.trim() + , dir = dirname(this.filename); + + if (!this.filename) + throw new Error('the "filename" option is required to use includes'); + + // no extension + if (!~basename(path).indexOf('.')) { + path += '.jade'; + } + + // non-jade + if ('.jade' != path.substr(-5)) { + var path = join(dir, path) + , str = fs.readFileSync(path, 'utf8'); + return new nodes.Literal(str); + } + + var path = join(dir, path) + , str = fs.readFileSync(path, 'utf8') + , parser = new Parser(str, path, this.options); + parser.blocks = this.blocks; + parser.mixins = this.mixins; + + this.context(parser); + var ast = parser.parse(); + this.context(); + ast.filename = path; + + if ('indent' == this.peek().type) { + ast.includeBlock().push(this.block()); + } + + return ast; + }, + + /** + * call ident block + */ + + parseCall: function(){ + var tok = this.expect('call') + , name = tok.val + , args = tok.args + , mixin = new nodes.Mixin(name, args, new nodes.Block, true); + + this.tag(mixin); + if (mixin.block.isEmpty()) mixin.block = null; + return mixin; + }, + + /** + * mixin block + */ + + parseMixin: function(){ + var tok = this.expect('mixin') + , name = tok.val + , args = tok.args + , mixin; + + // definition + if ('indent' == this.peek().type) { + mixin = new nodes.Mixin(name, args, this.block(), false); + this.mixins[name] = mixin; + return mixin; + // call + } else { + return new nodes.Mixin(name, args, null, true); + } + }, + + /** + * indent (text | newline)* outdent + */ + + parseTextBlock: function(){ + var block = new nodes.Block; + block.line = this.line(); + var spaces = this.expect('indent').val; + if (null == this._spaces) this._spaces = spaces; + var indent = Array(spaces - this._spaces + 1).join(' '); + while ('outdent' != this.peek().type) { + switch (this.peek().type) { + case 'newline': + this.advance(); + break; + case 'indent': + this.parseTextBlock().nodes.forEach(function(node){ + block.push(node); + }); + break; + default: + var text = new nodes.Text(indent + this.advance().val); + text.line = this.line(); + block.push(text); + } + } + + if (spaces == this._spaces) this._spaces = null; + this.expect('outdent'); + return block; + }, + + /** + * indent expr* outdent + */ + + block: function(){ + var block = new nodes.Block; + block.line = this.line(); + this.expect('indent'); + while ('outdent' != this.peek().type) { + if ('newline' == this.peek().type) { + this.advance(); + } else { + block.push(this.parseExpr()); + } + } + this.expect('outdent'); + return block; + }, + + /** + * interpolation (attrs | class | id)* (text | code | ':')? newline* block? + */ + + parseInterpolation: function(){ + var tok = this.advance(); + var tag = new nodes.Tag(tok.val); + tag.buffer = true; + return this.tag(tag); + }, + + /** + * tag (attrs | class | id)* (text | code | ':')? newline* block? + */ + + parseTag: function(){ + // ast-filter look-ahead + var i = 2; + if ('attrs' == this.lookahead(i).type) ++i; + if (':' == this.lookahead(i).type) { + if ('indent' == this.lookahead(++i).type) { + return this.parseASTFilter(); + } + } + + var tok = this.advance() + , tag = new nodes.Tag(tok.val); + + tag.selfClosing = tok.selfClosing; + + return this.tag(tag); + }, + + /** + * Parse tag. + */ + + tag: function(tag){ + var dot; + + tag.line = this.line(); + + // (attrs | class | id)* + out: + while (true) { + switch (this.peek().type) { + case 'id': + case 'class': + var tok = this.advance(); + tag.setAttribute(tok.type, "'" + tok.val + "'"); + continue; + case 'attrs': + var tok = this.advance() + , obj = tok.attrs + , escaped = tok.escaped + , names = Object.keys(obj); + + if (tok.selfClosing) tag.selfClosing = true; + + for (var i = 0, len = names.length; i < len; ++i) { + var name = names[i] + , val = obj[name]; + tag.setAttribute(name, val, escaped[name]); + } + continue; + default: + break out; + } + } + + // check immediate '.' + if ('.' == this.peek().val) { + dot = tag.textOnly = true; + this.advance(); + } + + // (text | code | ':')? + switch (this.peek().type) { + case 'text': + tag.block.push(this.parseText()); + break; + case 'code': + tag.code = this.parseCode(); + break; + case ':': + this.advance(); + tag.block = new nodes.Block; + tag.block.push(this.parseExpr()); + break; + } + + // newline* + while ('newline' == this.peek().type) this.advance(); + + tag.textOnly = tag.textOnly || ~textOnly.indexOf(tag.name); + + // script special-case + if ('script' == tag.name) { + var type = tag.getAttribute('type'); + if (!dot && type && 'text/javascript' != type.replace(/^['"]|['"]$/g, '')) { + tag.textOnly = false; + } + } + + // block? + if ('indent' == this.peek().type) { + if (tag.textOnly) { + this.lexer.pipeless = true; + tag.block = this.parseTextBlock(); + this.lexer.pipeless = false; + } else { + var block = this.block(); + if (tag.block) { + for (var i = 0, len = block.nodes.length; i < len; ++i) { + tag.block.push(block.nodes[i]); + } + } else { + tag.block = block; + } + } + } + + return tag; + } +}; + +}); // module: parser.js + +require.register("runtime.js", function(module, exports, require){ + +/*! + * Jade - runtime + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Lame Array.isArray() polyfill for now. + */ + +if (!Array.isArray) { + Array.isArray = function(arr){ + return '[object Array]' == Object.prototype.toString.call(arr); + }; +} + +/** + * Lame Object.keys() polyfill for now. + */ + +if (!Object.keys) { + Object.keys = function(obj){ + var arr = []; + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + arr.push(key); + } + } + return arr; + } +} + +/** + * Merge two attribute objects giving precedence + * to values in object `b`. Classes are special-cased + * allowing for arrays and merging/joining appropriately + * resulting in a string. + * + * @param {Object} a + * @param {Object} b + * @return {Object} a + * @api private + */ + +exports.merge = function merge(a, b) { + var ac = a['class']; + var bc = b['class']; + + if (ac || bc) { + ac = ac || []; + bc = bc || []; + if (!Array.isArray(ac)) ac = [ac]; + if (!Array.isArray(bc)) bc = [bc]; + ac = ac.filter(nulls); + bc = bc.filter(nulls); + a['class'] = ac.concat(bc).join(' '); + } + + for (var key in b) { + if (key != 'class') { + a[key] = b[key]; + } + } + + return a; +}; + +/** + * Filter null `val`s. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + +function nulls(val) { + return val != null; +} + +/** + * Render the given attributes object. + * + * @param {Object} obj + * @param {Object} escaped + * @return {String} + * @api private + */ + +exports.attrs = function attrs(obj, escaped){ + var buf = [] + , terse = obj.terse; + + delete obj.terse; + var keys = Object.keys(obj) + , len = keys.length; + + if (len) { + buf.push(''); + for (var i = 0; i < len; ++i) { + var key = keys[i] + , val = obj[key]; + + if ('boolean' == typeof val || null == val) { + if (val) { + terse + ? buf.push(key) + : buf.push(key + '="' + key + '"'); + } + } else if (0 == key.indexOf('data') && 'string' != typeof val) { + buf.push(key + "='" + JSON.stringify(val) + "'"); + } else if ('class' == key && Array.isArray(val)) { + buf.push(key + '="' + exports.escape(val.join(' ')) + '"'); + } else if (escaped && escaped[key]) { + buf.push(key + '="' + exports.escape(val) + '"'); + } else { + buf.push(key + '="' + val + '"'); + } + } + } + + return buf.join(' '); +}; + +/** + * Escape the given string of `html`. + * + * @param {String} html + * @return {String} + * @api private + */ + +exports.escape = function escape(html){ + return String(html) + .replace(/&(?!(\w+|\#\d+);)/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); +}; + +/** + * Re-throw the given `err` in context to the + * the jade in `filename` at the given `lineno`. + * + * @param {Error} err + * @param {String} filename + * @param {String} lineno + * @api private + */ + +exports.rethrow = function rethrow(err, filename, lineno){ + if (!filename) throw err; + + var context = 3 + , str = require('fs').readFileSync(filename, 'utf8') + , lines = str.split('\n') + , start = Math.max(lineno - context, 0) + , end = Math.min(lines.length, lineno + context); + + // Error context + var context = lines.slice(start, end).map(function(line, i){ + var curr = i + start + 1; + return (curr == lineno ? ' > ' : ' ') + + curr + + '| ' + + line; + }).join('\n'); + + // Alter exception message + err.path = filename; + err.message = (filename || 'Jade') + ':' + lineno + + '\n' + context + '\n\n' + err.message; + throw err; +}; + +}); // module: runtime.js + +require.register("self-closing.js", function(module, exports, require){ + +/*! + * Jade - self closing tags + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +module.exports = [ + 'meta' + , 'img' + , 'link' + , 'input' + , 'source' + , 'area' + , 'base' + , 'col' + , 'br' + , 'hr' +]; +}); // module: self-closing.js + +require.register("utils.js", function(module, exports, require){ + +/*! + * Jade - utils + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Convert interpolation in the given string to JavaScript. + * + * @param {String} str + * @return {String} + * @api private + */ + +var interpolate = exports.interpolate = function(str){ + return str.replace(/(\\)?([#!]){(.*?)}/g, function(str, escape, flag, code){ + return escape + ? str + : "' + " + + ('!' == flag ? '' : 'escape') + + "((interp = " + code.replace(/\\'/g, "'") + + ") == null ? '' : interp) + '"; + }); +}; + +/** + * Escape single quotes in `str`. + * + * @param {String} str + * @return {String} + * @api private + */ + +var escape = exports.escape = function(str) { + return str.replace(/'/g, "\\'"); +}; + +/** + * Interpolate, and escape the given `str`. + * + * @param {String} str + * @return {String} + * @api private + */ + +exports.text = function(str){ + return interpolate(escape(str)); +}; +}); // module: utils.js + +window.jade = require("jade"); +})(); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/jade.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/jade.md new file mode 100644 index 00000000..051dc031 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/jade.md @@ -0,0 +1,510 @@ + +# Jade + + The jade template engine for node.js + +## Synopsis + + jade [-h|--help] [-v|--version] [-o|--obj STR] + [-O|--out DIR] [-p|--path PATH] [-P|--pretty] + [-c|--client] [-D|--no-debug] + +## Examples + + translate jade the templates dir + + $ jade templates + + create {foo,bar}.html + + $ jade {foo,bar}.jade + + jade over stdio + + $ jade < my.jade > my.html + + jade over s + + $ echo "h1 Jade!" | jade + + foo, bar dirs rendering to /tmp + + $ jade foo bar --out /tmp + + compile client-side templates without debugging + instrumentation, making the output javascript + very light-weight. This requires runtime.js + in your projects. + + $ jade --client --no-debug < my.jade + +## Tags + + Tags are simply nested via whitespace, closing + tags defined for you. These indents are called "blocks". + + ul + li + a Foo + li + a Bar + + You may have several tags in one "block": + + ul + li + a Foo + a Bar + a Baz + +## Self-closing Tags + + Some tags are flagged as self-closing by default, such + as `meta`, `link`, and so on. To explicitly self-close + a tag simply append the `/` character: + + foo/ + foo(bar='baz')/ + + Would yield: + + + + +## Attributes + + Tag attributes look similar to HTML, however + the values are regular JavaScript, here are + some examples: + + a(href='google.com') Google + a(class='button', href='google.com') Google + + As mentioned the attribute values are just JavaScript, + this means ternary operations and other JavaScript expressions + work just fine: + + body(class=user.authenticated ? 'authenticated' : 'anonymous') + a(href=user.website || 'http://google.com') + + Multiple lines work too: + + input(type='checkbox', + name='agreement', + checked) + + Multiple lines without the comma work fine: + + input(type='checkbox' + name='agreement' + checked) + + Funky whitespace? fine: + + input( + type='checkbox' + name='agreement' + checked) + +## Boolean attributes + + Boolean attributes are mirrored by Jade, and accept + bools, aka _true_ or _false_. When no value is specified + _true_ is assumed. For example: + + input(type="checkbox", checked) + // => "" + + For example if the checkbox was for an agreement, perhaps `user.agreed` + was _true_ the following would also output 'checked="checked"': + + input(type="checkbox", checked=user.agreed) + +## Class attributes + + The _class_ attribute accepts an array of classes, + this can be handy when generated from a javascript + function etc: + + classes = ['foo', 'bar', 'baz'] + a(class=classes) + // => "" + +## Class literal + + Classes may be defined using a ".CLASSNAME" syntax: + + .button + // => "
" + + Or chained: + + .large.button + // => "
" + + The previous defaulted to divs, however you + may also specify the tag type: + + h1.title My Title + // => "

My Title

" + +## Id literal + + Much like the class literal there's an id literal: + + #user-1 + // => "
" + + Again we may specify the tag as well: + + ul#menu + li: a(href='/home') Home + li: a(href='/store') Store + li: a(href='/contact') Contact + + Finally all of these may be used in any combination, + the following are all valid tags: + + a.button#contact(style: 'color: red') Contact + a.button(style: 'color: red')#contact Contact + a(style: 'color: red').button#contact Contact + +## Block expansion + + Jade supports the concept of "block expansion", in which + using a trailing ":" after a tag will inject a block: + + ul + li: a Foo + li: a Bar + li: a Baz + +## Text + + Arbitrary text may follow tags: + + p Welcome to my site + + yields: + +

Welcome to my site

+ +## Pipe text + + Another form of text is "pipe" text. Pipes act + as the text margin for large bodies of text. + + p + | This is a large + | body of text for + | this tag. + | + | Nothing too + | exciting. + + yields: + +

This is a large + body of text for + this tag. + + Nothing too + exciting. +

+ + Using pipes we can also specify regular Jade tags + within the text: + + p + | Click to visit + a(href='http://google.com') Google + | if you want. + +## Text only tags + + As an alternative to pipe text you may add + a trailing "." to indicate that the block + contains nothing but plain-text, no tags: + + p. + This is a large + body of text for + this tag. + + Nothing too + exciting. + + Some tags are text-only by default, for example + _script_, _textarea_, and _style_ tags do not + contain nested HTML so Jade implies the trailing ".": + + script + if (foo) { + bar(); + } + + style + body { + padding: 50px; + font: 14px Helvetica; + } + +## Template script tags + + Sometimes it's useful to define HTML in script + tags using Jade, typically for client-side templates. + + To do this simply give the _script_ tag an arbitrary + _type_ attribute such as _text/x-template_: + + script(type='text/template') + h1 Look! + p Jade still works in here! + +## Interpolation + + Both plain-text and piped-text support interpolation, + which comes in two forms, escapes and non-escaped. The + following will output the _user.name_ in the paragraph + but HTML within it will be escaped to prevent XSS attacks: + + p Welcome #{user.name} + + The following syntax is identical however it will _not_ escape + HTML, and should only be used with strings that you trust: + + p Welcome !{user.name} + +## Inline HTML + + Sometimes constructing small inline snippets of HTML + in Jade can be annoying, luckily we can add plain + HTML as well: + + p Welcome #{user.name} + +## Code + + To buffer output with Jade simply use _=_ at the beginning + of a line or after a tag. This method escapes any HTML + present in the string. + + p= user.description + + To buffer output unescaped use the _!=_ variant, but again + be careful of XSS. + + p!= user.description + + The final way to mess with JavaScript code in Jade is the unbuffered + _-_, which can be used for conditionals, defining variables etc: + + - var user = { description: 'foo bar baz' } + #user + - if (user.description) { + h2 Description + p.description= user.description + - } + + When compiled blocks are wrapped in anonymous functions, so the + following is also valid, without braces: + + - var user = { description: 'foo bar baz' } + #user + - if (user.description) + h2 Description + p.description= user.description + + If you really want you could even use `.forEach()` and others: + + - users.forEach(function(user){ + .user + h2= user.name + p User #{user.name} is #{user.age} years old + - }) + + Taking this further Jade provides some syntax for conditionals, + iteration, switch statements etc. Let's look at those next! + +## Assignment + + Jade's first-class assignment is simple, simply use the _=_ + operator and Jade will _var_ it for you. The following are equivalent: + + - var user = { name: 'tobi' } + user = { name: 'tobi' } + +## Conditionals + + Jade's first-class conditional syntax allows for optional + parenthesis, and you may now omit the leading _-_ otherwise + it's identical, still just regular javascript: + + user = { description: 'foo bar baz' } + #user + if user.description + h2 Description + p.description= user.description + + Jade provides the negated version, _unless_ as well, the following + are equivalent: + + - if (!(user.isAnonymous)) + p You're logged in as #{user.name} + + unless user.isAnonymous + p You're logged in as #{user.name} + +## Iteration + + JavaScript's _for_ loops don't look very declarative, so Jade + also provides its own _for_ loop construct, aliased as _each_: + + for user in users + .user + h2= user.name + p user #{user.name} is #{user.age} year old + + As mentioned _each_ is identical: + + each user in users + .user + h2= user.name + + If necessary the index is available as well: + + for user, i in users + .user(class='user-#{i}') + h2= user.name + + Remember, it's just JavaScript: + + ul#letters + for letter in ['a', 'b', 'c'] + li= letter + +## Mixins + + Mixins provide a way to define jade "functions" which "mix in" + their contents when called. This is useful for abstracting + out large fragments of Jade. + + The simplest possible mixin which accepts no arguments might + look like this: + + mixin hello + p Hello + + You use a mixin by placing `+` before the name: + + +hello + + For something a little more dynamic, mixins can take + arguments, the mixin itself is converted to a javascript + function internally: + + mixin hello(user) + p Hello #{user} + + +hello('Tobi') + + Yields: + +

Hello Tobi

+ + Mixins may optionally take blocks, when a block is passed + its contents becomes the implicit `block` argument. For + example here is a mixin passed a block, and also invoked + without passing a block: + + mixin article(title) + .article + .article-wrapper + h1= title + if block + block + else + p No content provided + + +article('Hello world') + + +article('Hello world') + p This is my + p Amazing article + + yields: + +
+
+

Hello world

+

No content provided

+
+
+ +
+
+

Hello world

+

This is my

+

Amazing article

+
+
+ + Mixins can even take attributes, just like a tag. When + attributes are passed they become the implicit `attributes` + argument. Individual attributes can be accessed just like + normal object properties: + + mixin centered + .centered(class=attributes.class) + block + + +centered.bold Hello world + + +centered.red + p This is my + p Amazing article + + yields: + +
Hello world
+
+

This is my

+

Amazing article

+
+ + If you use `attributes` directly, *all* passed attributes + get used: + + mixin link + a.menu(attributes) + block + + +link.highlight(href='#top') Top + +link#sec1.plain(href='#section1') Section 1 + +link#sec2.plain(href='#section2') Section 2 + + yields: + + Top + Section 1 + Section 2 + + If you pass arguments, they must directly follow the mixin: + + mixin list(arr) + if block + .title + block + ul(attributes) + each item in arr + li= item + + +list(['foo', 'bar', 'baz'])(id='myList', class='bold') + + yields: + +
    +
  • foo
  • +
  • bar
  • +
  • baz
  • +
diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/jade.min.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/jade.min.js new file mode 100644 index 00000000..72e4535e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/jade.min.js @@ -0,0 +1,2 @@ +(function(){function require(p){var path=require.resolve(p),mod=require.modules[path];if(!mod)throw new Error('failed to require "'+p+'"');return mod.exports||(mod.exports={},mod.call(mod.exports,mod,mod.exports,require.relative(path))),mod.exports}require.modules={},require.resolve=function(path){var orig=path,reg=path+".js",index=path+"/index.js";return require.modules[reg]&®||require.modules[index]&&index||orig},require.register=function(path,fn){require.modules[path]=fn},require.relative=function(parent){return function(p){if("."!=p.charAt(0))return require(p);var path=parent.split("/"),segs=p.split("/");path.pop();for(var i=0;i",this.doctype=doctype,this.terse="5"==name||"html"==name,this.xml=0==this.doctype.indexOf("1&&!escape&&block.nodes[0].isText&&block.nodes[1].isText&&this.prettyIndent(1,!0);for(var i=0;i0&&!escape&&block.nodes[i].isText&&block.nodes[i-1].isText&&this.prettyIndent(1,!1),this.visit(block.nodes[i]),block.nodes[i+1]&&block.nodes[i].isText&&block.nodes[i+1].isText&&this.buffer("\\n")},visitDoctype:function(doctype){doctype&&(doctype.val||!this.doctype)&&this.setDoctype(doctype.val||"default"),this.doctype&&this.buffer(this.doctype),this.hasCompiledDoctype=!0},visitMixin:function(mixin){var name=mixin.name.replace(/-/g,"_")+"_mixin",args=mixin.args||"",block=mixin.block,attrs=mixin.attrs,pp=this.pp;if(mixin.call){pp&&this.buf.push("__indent.push('"+Array(this.indents+1).join(" ")+"');");if(block||attrs.length){this.buf.push(name+".call({");if(block){this.buf.push("block: function(){"),this.parentIndents++;var _indents=this.indents;this.indents=0,this.visit(mixin.block),this.indents=_indents,this.parentIndents--,attrs.length?this.buf.push("},"):this.buf.push("}")}if(attrs.length){var val=this.attrs(attrs);val.inherits?this.buf.push("attributes: merge({"+val.buf+"}, attributes), escaped: merge("+val.escaped+", escaped, true)"):this.buf.push("attributes: {"+val.buf+"}, escaped: "+val.escaped)}args?this.buf.push("}, "+args+");"):this.buf.push("});")}else this.buf.push(name+"("+args+");");pp&&this.buf.push("__indent.pop();")}else this.buf.push("var "+name+" = function("+args+"){"),this.buf.push("var block = this.block, attributes = this.attributes || {}, escaped = this.escaped || {};"),this.parentIndents++,this.visit(block),this.parentIndents--,this.buf.push("};")},visitTag:function(tag){this.indents++;var name=tag.name,pp=this.pp;tag.buffer&&(name="' + ("+name+") + '"),this.hasCompiledTag||(!this.hasCompiledDoctype&&"html"==name&&this.visitDoctype(),this.hasCompiledTag=!0),pp&&!tag.isInline()&&this.prettyIndent(0,!0),(~selfClosing.indexOf(name)||tag.selfClosing)&&!this.xml?(this.buffer("<"+name),this.visitAttributes(tag.attrs),this.terse?this.buffer(">"):this.buffer("/>")):(tag.attrs.length?(this.buffer("<"+name),tag.attrs.length&&this.visitAttributes(tag.attrs),this.buffer(">")):this.buffer("<"+name+">"),tag.code&&this.visitCode(tag.code),this.escape="pre"==tag.name,this.visit(tag.block),pp&&!tag.isInline()&&"pre"!=tag.name&&!tag.canInline()&&this.prettyIndent(0,!0),this.buffer("")),this.indents--},visitFilter:function(filter){var fn=filters[filter.name];if(!fn)throw filter.isASTFilter?new Error('unknown ast filter "'+filter.name+':"'):new Error('unknown filter ":'+filter.name+'"');if(filter.isASTFilter)this.buf.push(fn(filter.block,this,filter.attrs));else{var text=filter.block.nodes.map(function(node){return node.val}).join("\n");filter.attrs=filter.attrs||{},filter.attrs.filename=this.options.filename,this.buffer(utils.text(fn(text,filter.attrs)))}},visitText:function(text){text=utils.text(text.val.replace(/\\/g,"\\\\")),this.escape&&(text=escape(text)),this.buffer(text)},visitComment:function(comment){if(!comment.buffer)return;this.pp&&this.prettyIndent(1,!0),this.buffer("")},visitBlockComment:function(comment){if(!comment.buffer)return;0==comment.val.trim().indexOf("if")?(this.buffer("")):(this.buffer(""))},visitCode:function(code){if(code.buffer){var val=code.val.trimLeft();this.buf.push("var __val__ = "+val),val='null == __val__ ? "" : __val__',code.escape&&(val="escape("+val+")"),this.buf.push("buf.push("+val+");")}else this.buf.push(code.val);code.block&&(code.buffer||this.buf.push("{"),this.visit(code.block),code.buffer||this.buf.push("}"))},visitEach:function(each){this.buf.push("// iterate "+each.obj+"\n"+";(function(){\n"+" if ('number' == typeof "+each.obj+".length) {\n"+" for (var "+each.key+" = 0, $$l = "+each.obj+".length; "+each.key+" < $$l; "+each.key+"++) {\n"+" var "+each.val+" = "+each.obj+"["+each.key+"];\n"),this.visit(each.block),this.buf.push(" }\n } else {\n for (var "+each.key+" in "+each.obj+") {\n"+" if ("+each.obj+".hasOwnProperty("+each.key+")){"+" var "+each.val+" = "+each.obj+"["+each.key+"];\n"),this.visit(each.block),this.buf.push(" }\n"),this.buf.push(" }\n }\n}).call(this);\n")},visitAttributes:function(attrs){var val=this.attrs(attrs);val.inherits?this.buf.push("buf.push(attrs(merge({ "+val.buf+" }, attributes), merge("+val.escaped+", escaped, true)));"):val.constant?(eval("var buf={"+val.buf+"};"),this.buffer(runtime.attrs(buf,JSON.parse(val.escaped)),!0)):this.buf.push("buf.push(attrs({ "+val.buf+" }, "+val.escaped+"));")},attrs:function(attrs){var buf=[],classes=[],escaped={},constant=attrs.every(function(attr){return isConstant(attr.val)}),inherits=!1;return this.terse&&buf.push("terse: true"),attrs.forEach(function(attr){if(attr.name=="attributes")return inherits=!0;escaped[attr.name]=attr.escaped;if(attr.name=="class")classes.push("("+attr.val+")");else{var pair="'"+attr.name+"':("+attr.val+")";buf.push(pair)}}),classes.length&&(classes=classes.join(" + ' ' + "),buf.push("class: "+classes)),{buf:buf.join(", ").replace("class:",'"class":'),escaped:JSON.stringify(escaped),inherits:inherits,constant:constant}}};function isConstant(val){if(/^ *("([^"\\]*(\\.[^"\\]*)*)"|'([^'\\]*(\\.[^'\\]*)*)'|true|false|null|undefined) *$/i.test(val))return!0;if(!isNaN(Number(val)))return!0;var matches;return(matches=/^ *\[(.*)\] *$/.exec(val))?matches[1].split(",").every(isConstant):!1}function escape(html){return String(html).replace(/&(?!\w+;)/g,"&").replace(//g,">").replace(/"/g,""")}}),require.register("doctypes.js",function(module,exports,require){module.exports={5:"","default":"",xml:'',transitional:'',strict:'',frameset:'',1.1:'',basic:'',mobile:''}}),require.register("filters.js",function(module,exports,require){module.exports={cdata:function(str){return""},sass:function(str){str=str.replace(/\\n/g,"\n");var sass=require("sass").render(str).replace(/\n/g,"\\n");return'"},stylus:function(str,options){var ret;str=str.replace(/\\n/g,"\n");var stylus=require("stylus");return stylus(str,options).render(function(err,css){if(err)throw err;ret=css.replace(/\n/g,"\\n")}),'"},less:function(str){var ret;return str=str.replace(/\\n/g,"\n"),require("less").render(str,function(err,css){if(err)throw err;ret='"}),ret},markdown:function(str){var md;try{md=require("markdown")}catch(err){try{md=require("discount")}catch(err){try{md=require("markdown-js")}catch(err){try{md=require("marked")}catch(err){throw new Error("Cannot find markdown library, install markdown, discount, or marked.")}}}}return str=str.replace(/\\n/g,"\n"),md.parse(str).replace(/\n/g,"\\n").replace(/'/g,"'")},coffeescript:function(str){str=str.replace(/\\n/g,"\n");var js=require("coffee-script").compile(str).replace(/\\/g,"\\\\").replace(/\n/g,"\\n");return'"}}}),require.register("inline-tags.js",function(module,exports,require){module.exports=["a","abbr","acronym","b","br","code","em","font","i","img","ins","kbd","map","samp","small","span","strong","sub","sup"]}),require.register("jade.js",function(module,exports,require){var Parser=require("./parser"),Lexer=require("./lexer"),Compiler=require("./compiler"),runtime=require("./runtime");exports.version="0.26.1",exports.selfClosing=require("./self-closing"),exports.doctypes=require("./doctypes"),exports.filters=require("./filters"),exports.utils=require("./utils"),exports.Compiler=Compiler,exports.Parser=Parser,exports.Lexer=Lexer,exports.nodes=require("./nodes"),exports.runtime=runtime,exports.cache={};function parse(str,options){try{var parser=new Parser(str,options.filename,options),compiler=new(options.compiler||Compiler)(parser.parse(),options),js=compiler.compile();return options.debug&&console.error("\nCompiled Function:\n\n%s",js.replace(/^/gm," ")),"var buf = [];\n"+(options.self?"var self = locals || {};\n"+js:"with (locals || {}) {\n"+js+"\n}\n")+'return buf.join("");'}catch(err){parser=parser.context(),runtime.rethrow(err,parser.filename,parser.lexer.lineno)}}exports.compile=function(str,options){var options=options||{},client=options.client,filename=options.filename?JSON.stringify(options.filename):"undefined",fn;return options.compileDebug!==!1?fn=["var __jade = [{ lineno: 1, filename: "+filename+" }];","try {",parse(String(str),options),"} catch (err) {"," rethrow(err, __jade[0].filename, __jade[0].lineno);","}"].join("\n"):fn=parse(String(str),options),client&&(fn="attrs = attrs || jade.attrs; escape = escape || jade.escape; rethrow = rethrow || jade.rethrow; merge = merge || jade.merge;\n"+fn),fn=new Function("locals, attrs, escape, rethrow, merge",fn),client?fn:function(locals){return fn(locals,runtime.attrs,runtime.escape,runtime.rethrow,runtime.merge)}},exports.render=function(str,options,fn){"function"==typeof options&&(fn=options,options={});if(options.cache&&!options.filename)return fn(new Error('the "filename" option is required for caching'));try{var path=options.filename,tmpl=options.cache?exports.cache[path]||(exports.cache[path]=exports.compile(str,options)):exports.compile(str,options);fn(null,tmpl(options))}catch(err){fn(err)}},exports.renderFile=function(path,options,fn){var key=path+":string";"function"==typeof options&&(fn=options,options={});try{options.filename=path;var str=options.cache?exports.cache[key]||(exports.cache[key]=fs.readFileSync(path,"utf8")):fs.readFileSync(path,"utf8");exports.render(str,options,fn)}catch(err){fn(err)}},exports.__express=exports.renderFile}),require.register("lexer.js",function(module,exports,require){var Lexer=module.exports=function Lexer(str,options){options=options||{},this.input=str.replace(/\r\n|\r/g,"\n"),this.colons=options.colons,this.deferredTokens=[],this.lastIndents=0,this.lineno=1,this.stash=[],this.indentStack=[],this.indentRe=null,this.pipeless=!1};Lexer.prototype={tok:function(type,val){return{type:type,line:this.lineno,val:val}},consume:function(len){this.input=this.input.substr(len)},scan:function(regexp,type){var captures;if(captures=regexp.exec(this.input))return this.consume(captures[0].length),this.tok(type,captures[1])},defer:function(tok){this.deferredTokens.push(tok)},lookahead:function(n){var fetch=n-this.stash.length;while(fetch-->0)this.stash.push(this.next());return this.stash[--n]},indexOfDelimiters:function(start,end){var str=this.input,nstart=0,nend=0,pos=0;for(var i=0,len=str.length;iindents)this.stash.push(this.tok("outdent")),this.indentStack.shift();tok=this.stash.pop()}else indents&&indents!=this.indentStack[0]?(this.indentStack.unshift(indents),tok=this.tok("indent",indents)):tok=this.tok("newline");return tok}},pipelessText:function(){if(this.pipeless){if("\n"==this.input[0])return;var i=this.input.indexOf("\n");-1==i&&(i=this.input.length);var str=this.input.substr(0,i);return this.consume(str.length),this.tok("text",str)}},colon:function(){return this.scan(/^: */,":")},advance:function(){return this.stashed()||this.next()},next:function(){return this.deferred()||this.blank()||this.eos()||this.pipelessText()||this.yield()||this.doctype()||this.interpolation()||this["case"]()||this.when()||this["default"]()||this["extends"]()||this.append()||this.prepend()||this.block()||this.include()||this.mixin()||this.call()||this.conditional()||this.each()||this["while"]()||this.assignment()||this.tag()||this.filter()||this.code()||this.id()||this.className()||this.attrs()||this.indent()||this.comment()||this.colon()||this.text()}}}),require.register("nodes/attrs.js",function(module,exports,require){var Node=require("./node"),Block=require("./block"),Attrs=module.exports=function Attrs(){this.attrs=[]};Attrs.prototype=new Node,Attrs.prototype.constructor=Attrs,Attrs.prototype.setAttribute=function(name,val,escaped){return this.attrs.push({name:name,val:val,escaped:escaped}),this},Attrs.prototype.removeAttribute=function(name){for(var i=0,len=this.attrs.length;i/g,">").replace(/"/g,""")},exports.rethrow=function rethrow(err,filename,lineno){if(!filename)throw err;var context=3,str=require("fs").readFileSync(filename,"utf8"),lines=str.split("\n"),start=Math.max(lineno-context,0),end=Math.min(lines.length,lineno+context),context=lines.slice(start,end).map(function(line,i){var curr=i+start+1;return(curr==lineno?" > ":" ")+curr+"| "+line}).join("\n");throw err.path=filename,err.message=(filename||"Jade")+":"+lineno+"\n"+context+"\n\n"+err.message,err}}),require.register("self-closing.js",function(module,exports,require){module.exports=["meta","img","link","input","source","area","base","col","br","hr"]}),require.register("utils.js",function(module,exports,require){var interpolate=exports.interpolate=function(str){return str.replace(/(\\)?([#!]){(.*?)}/g,function(str,escape,flag,code){return escape?str:"' + "+("!"==flag?"":"escape")+"((interp = "+code.replace(/\\'/g,"'")+") == null ? '' : interp) + '"})},escape=exports.escape=function(str){return str.replace(/'/g,"\\'")};exports.text=function(str){return interpolate(escape(str))}}),window.jade=require("jade")})(); \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/compiler.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/compiler.js new file mode 100644 index 00000000..516ac83d --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/compiler.js @@ -0,0 +1,642 @@ + +/*! + * Jade - Compiler + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var nodes = require('./nodes') + , filters = require('./filters') + , doctypes = require('./doctypes') + , selfClosing = require('./self-closing') + , runtime = require('./runtime') + , utils = require('./utils'); + +// if browser +// +// if (!Object.keys) { +// Object.keys = function(obj){ +// var arr = []; +// for (var key in obj) { +// if (obj.hasOwnProperty(key)) { +// arr.push(key); +// } +// } +// return arr; +// } +// } +// +// if (!String.prototype.trimLeft) { +// String.prototype.trimLeft = function(){ +// return this.replace(/^\s+/, ''); +// } +// } +// +// end + + +/** + * Initialize `Compiler` with the given `node`. + * + * @param {Node} node + * @param {Object} options + * @api public + */ + +var Compiler = module.exports = function Compiler(node, options) { + this.options = options = options || {}; + this.node = node; + this.hasCompiledDoctype = false; + this.hasCompiledTag = false; + this.pp = options.pretty || false; + this.debug = false !== options.compileDebug; + this.indents = 0; + this.parentIndents = 0; + if (options.doctype) this.setDoctype(options.doctype); +}; + +/** + * Compiler prototype. + */ + +Compiler.prototype = { + + /** + * Compile parse tree to JavaScript. + * + * @api public + */ + + compile: function(){ + this.buf = ['var interp;']; + if (this.pp) this.buf.push("var __indent = [];"); + this.lastBufferedIdx = -1; + this.visit(this.node); + return this.buf.join('\n'); + }, + + /** + * Sets the default doctype `name`. Sets terse mode to `true` when + * html 5 is used, causing self-closing tags to end with ">" vs "/>", + * and boolean attributes are not mirrored. + * + * @param {string} name + * @api public + */ + + setDoctype: function(name){ + var doctype = doctypes[(name || 'default').toLowerCase()]; + doctype = doctype || ''; + this.doctype = doctype; + this.terse = '5' == name || 'html' == name; + this.xml = 0 == this.doctype.indexOf(' 1 && !escape && block.nodes[0].isText && block.nodes[1].isText) + this.prettyIndent(1, true); + + for (var i = 0; i < len; ++i) { + // Pretty print text + if (pp && i > 0 && !escape && block.nodes[i].isText && block.nodes[i-1].isText) + this.prettyIndent(1, false); + + this.visit(block.nodes[i]); + // Multiple text nodes are separated by newlines + if (block.nodes[i+1] && block.nodes[i].isText && block.nodes[i+1].isText) + this.buffer('\\n'); + } + }, + + /** + * Visit `doctype`. Sets terse mode to `true` when html 5 + * is used, causing self-closing tags to end with ">" vs "/>", + * and boolean attributes are not mirrored. + * + * @param {Doctype} doctype + * @api public + */ + + visitDoctype: function(doctype){ + if (doctype && (doctype.val || !this.doctype)) { + this.setDoctype(doctype.val || 'default'); + } + + if (this.doctype) this.buffer(this.doctype); + this.hasCompiledDoctype = true; + }, + + /** + * Visit `mixin`, generating a function that + * may be called within the template. + * + * @param {Mixin} mixin + * @api public + */ + + visitMixin: function(mixin){ + var name = mixin.name.replace(/-/g, '_') + '_mixin' + , args = mixin.args || '' + , block = mixin.block + , attrs = mixin.attrs + , pp = this.pp; + + if (mixin.call) { + if (pp) this.buf.push("__indent.push('" + Array(this.indents + 1).join(' ') + "');") + if (block || attrs.length) { + + this.buf.push(name + '.call({'); + + if (block) { + this.buf.push('block: function(){'); + + // Render block with no indents, dynamically added when rendered + this.parentIndents++; + var _indents = this.indents; + this.indents = 0; + this.visit(mixin.block); + this.indents = _indents; + this.parentIndents--; + + if (attrs.length) { + this.buf.push('},'); + } else { + this.buf.push('}'); + } + } + + if (attrs.length) { + var val = this.attrs(attrs); + if (val.inherits) { + this.buf.push('attributes: merge({' + val.buf + + '}, attributes), escaped: merge(' + val.escaped + ', escaped, true)'); + } else { + this.buf.push('attributes: {' + val.buf + '}, escaped: ' + val.escaped); + } + } + + if (args) { + this.buf.push('}, ' + args + ');'); + } else { + this.buf.push('});'); + } + + } else { + this.buf.push(name + '(' + args + ');'); + } + if (pp) this.buf.push("__indent.pop();") + } else { + this.buf.push('var ' + name + ' = function(' + args + '){'); + this.buf.push('var block = this.block, attributes = this.attributes || {}, escaped = this.escaped || {};'); + this.parentIndents++; + this.visit(block); + this.parentIndents--; + this.buf.push('};'); + } + }, + + /** + * Visit `tag` buffering tag markup, generating + * attributes, visiting the `tag`'s code and block. + * + * @param {Tag} tag + * @api public + */ + + visitTag: function(tag){ + this.indents++; + var name = tag.name + , pp = this.pp; + + if (tag.buffer) name = "' + (" + name + ") + '"; + + if (!this.hasCompiledTag) { + if (!this.hasCompiledDoctype && 'html' == name) { + this.visitDoctype(); + } + this.hasCompiledTag = true; + } + + // pretty print + if (pp && !tag.isInline()) + this.prettyIndent(0, true); + + if ((~selfClosing.indexOf(name) || tag.selfClosing) && !this.xml) { + this.buffer('<' + name); + this.visitAttributes(tag.attrs); + this.terse + ? this.buffer('>') + : this.buffer('/>'); + } else { + // Optimize attributes buffering + if (tag.attrs.length) { + this.buffer('<' + name); + if (tag.attrs.length) this.visitAttributes(tag.attrs); + this.buffer('>'); + } else { + this.buffer('<' + name + '>'); + } + if (tag.code) this.visitCode(tag.code); + this.escape = 'pre' == tag.name; + this.visit(tag.block); + + // pretty print + if (pp && !tag.isInline() && 'pre' != tag.name && !tag.canInline()) + this.prettyIndent(0, true); + + this.buffer(''); + } + this.indents--; + }, + + /** + * Visit `filter`, throwing when the filter does not exist. + * + * @param {Filter} filter + * @api public + */ + + visitFilter: function(filter){ + var fn = filters[filter.name]; + + // unknown filter + if (!fn) { + if (filter.isASTFilter) { + throw new Error('unknown ast filter "' + filter.name + ':"'); + } else { + throw new Error('unknown filter ":' + filter.name + '"'); + } + } + + if (filter.isASTFilter) { + this.buf.push(fn(filter.block, this, filter.attrs)); + } else { + var text = filter.block.nodes.map(function(node){ return node.val }).join('\n'); + filter.attrs = filter.attrs || {}; + filter.attrs.filename = this.options.filename; + this.buffer(utils.text(fn(text, filter.attrs))); + } + }, + + /** + * Visit `text` node. + * + * @param {Text} text + * @api public + */ + + visitText: function(text){ + text = utils.text(text.val.replace(/\\/g, '\\\\')); + if (this.escape) text = escape(text); + this.buffer(text); + }, + + /** + * Visit a `comment`, only buffering when the buffer flag is set. + * + * @param {Comment} comment + * @api public + */ + + visitComment: function(comment){ + if (!comment.buffer) return; + if (this.pp) this.prettyIndent(1, true); + this.buffer(''); + }, + + /** + * Visit a `BlockComment`. + * + * @param {Comment} comment + * @api public + */ + + visitBlockComment: function(comment){ + if (!comment.buffer) return; + if (0 == comment.val.trim().indexOf('if')) { + this.buffer(''); + } else { + this.buffer(''); + } + }, + + /** + * Visit `code`, respecting buffer / escape flags. + * If the code is followed by a block, wrap it in + * a self-calling function. + * + * @param {Code} code + * @api public + */ + + visitCode: function(code){ + // Wrap code blocks with {}. + // we only wrap unbuffered code blocks ATM + // since they are usually flow control + + // Buffer code + if (code.buffer) { + var val = code.val.trimLeft(); + this.buf.push('var __val__ = ' + val); + val = 'null == __val__ ? "" : __val__'; + if (code.escape) val = 'escape(' + val + ')'; + this.buf.push("buf.push(" + val + ");"); + } else { + this.buf.push(code.val); + } + + // Block support + if (code.block) { + if (!code.buffer) this.buf.push('{'); + this.visit(code.block); + if (!code.buffer) this.buf.push('}'); + } + }, + + /** + * Visit `each` block. + * + * @param {Each} each + * @api public + */ + + visitEach: function(each){ + this.buf.push('' + + '// iterate ' + each.obj + '\n' + + ';(function(){\n' + + ' if (\'number\' == typeof ' + each.obj + '.length) {\n' + + ' for (var ' + each.key + ' = 0, $$l = ' + each.obj + '.length; ' + each.key + ' < $$l; ' + each.key + '++) {\n' + + ' var ' + each.val + ' = ' + each.obj + '[' + each.key + '];\n'); + + this.visit(each.block); + + this.buf.push('' + + ' }\n' + + ' } else {\n' + + ' for (var ' + each.key + ' in ' + each.obj + ') {\n' + // if browser + // + ' if (' + each.obj + '.hasOwnProperty(' + each.key + ')){' + // end + + ' var ' + each.val + ' = ' + each.obj + '[' + each.key + '];\n'); + + this.visit(each.block); + + // if browser + // this.buf.push(' }\n'); + // end + + this.buf.push(' }\n }\n}).call(this);\n'); + }, + + /** + * Visit `attrs`. + * + * @param {Array} attrs + * @api public + */ + + visitAttributes: function(attrs){ + var val = this.attrs(attrs); + if (val.inherits) { + this.buf.push("buf.push(attrs(merge({ " + val.buf + + " }, attributes), merge(" + val.escaped + ", escaped, true)));"); + } else if (val.constant) { + eval('var buf={' + val.buf + '};'); + this.buffer(runtime.attrs(buf, JSON.parse(val.escaped)), true); + } else { + this.buf.push("buf.push(attrs({ " + val.buf + " }, " + val.escaped + "));"); + } + }, + + /** + * Compile attributes. + */ + + attrs: function(attrs){ + var buf = [] + , classes = [] + , escaped = {} + , constant = attrs.every(function(attr){ return isConstant(attr.val) }) + , inherits = false; + + if (this.terse) buf.push('terse: true'); + + attrs.forEach(function(attr){ + if (attr.name == 'attributes') return inherits = true; + escaped[attr.name] = attr.escaped; + if (attr.name == 'class') { + classes.push('(' + attr.val + ')'); + } else { + var pair = "'" + attr.name + "':(" + attr.val + ')'; + buf.push(pair); + } + }); + + if (classes.length) { + classes = classes.join(" + ' ' + "); + buf.push("class: " + classes); + } + + return { + buf: buf.join(', ').replace('class:', '"class":'), + escaped: JSON.stringify(escaped), + inherits: inherits, + constant: constant + }; + } +}; + +/** + * Check if expression can be evaluated to a constant + * + * @param {String} expression + * @return {Boolean} + * @api private + */ + +function isConstant(val){ + // Check strings/literals + if (/^ *("([^"\\]*(\\.[^"\\]*)*)"|'([^'\\]*(\\.[^'\\]*)*)'|true|false|null|undefined) *$/i.test(val)) + return true; + + // Check numbers + if (!isNaN(Number(val))) + return true; + + // Check arrays + var matches; + if (matches = /^ *\[(.*)\] *$/.exec(val)) + return matches[1].split(',').every(isConstant); + + return false; +} + +/** + * Escape the given string of `html`. + * + * @param {String} html + * @return {String} + * @api private + */ + +function escape(html){ + return String(html) + .replace(/&(?!\w+;)/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); +} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/doctypes.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/doctypes.js new file mode 100644 index 00000000..e87ca1e4 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/doctypes.js @@ -0,0 +1,18 @@ + +/*! + * Jade - doctypes + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +module.exports = { + '5': '' + , 'default': '' + , 'xml': '' + , 'transitional': '' + , 'strict': '' + , 'frameset': '' + , '1.1': '' + , 'basic': '' + , 'mobile': '' +}; \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/filters.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/filters.js new file mode 100644 index 00000000..fdb634cb --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/filters.js @@ -0,0 +1,97 @@ + +/*! + * Jade - filters + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +module.exports = { + + /** + * Wrap text with CDATA block. + */ + + cdata: function(str){ + return ''; + }, + + /** + * Transform sass to css, wrapped in style tags. + */ + + sass: function(str){ + str = str.replace(/\\n/g, '\n'); + var sass = require('sass').render(str).replace(/\n/g, '\\n'); + return ''; + }, + + /** + * Transform stylus to css, wrapped in style tags. + */ + + stylus: function(str, options){ + var ret; + str = str.replace(/\\n/g, '\n'); + var stylus = require('stylus'); + stylus(str, options).render(function(err, css){ + if (err) throw err; + ret = css.replace(/\n/g, '\\n'); + }); + return ''; + }, + + /** + * Transform less to css, wrapped in style tags. + */ + + less: function(str){ + var ret; + str = str.replace(/\\n/g, '\n'); + require('less').render(str, function(err, css){ + if (err) throw err; + ret = ''; + }); + return ret; + }, + + /** + * Transform markdown to html. + */ + + markdown: function(str){ + var md; + + // support markdown / discount + try { + md = require('markdown'); + } catch (err){ + try { + md = require('discount'); + } catch (err) { + try { + md = require('markdown-js'); + } catch (err) { + try { + md = require('marked'); + } catch (err) { + throw new + Error('Cannot find markdown library, install markdown, discount, or marked.'); + } + } + } + } + + str = str.replace(/\\n/g, '\n'); + return md.parse(str).replace(/\n/g, '\\n').replace(/'/g,'''); + }, + + /** + * Transform coffeescript to javascript. + */ + + coffeescript: function(str){ + str = str.replace(/\\n/g, '\n'); + var js = require('coffee-script').compile(str).replace(/\\/g, '\\\\').replace(/\n/g, '\\n'); + return ''; + } +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/inline-tags.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/inline-tags.js new file mode 100644 index 00000000..491de0b5 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/inline-tags.js @@ -0,0 +1,28 @@ + +/*! + * Jade - inline tags + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +module.exports = [ + 'a' + , 'abbr' + , 'acronym' + , 'b' + , 'br' + , 'code' + , 'em' + , 'font' + , 'i' + , 'img' + , 'ins' + , 'kbd' + , 'map' + , 'samp' + , 'small' + , 'span' + , 'strong' + , 'sub' + , 'sup' +]; \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/jade.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/jade.js new file mode 100644 index 00000000..00f0abb1 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/jade.js @@ -0,0 +1,237 @@ +/*! + * Jade + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Parser = require('./parser') + , Lexer = require('./lexer') + , Compiler = require('./compiler') + , runtime = require('./runtime') +// if node + , fs = require('fs'); +// end + +/** + * Library version. + */ + +exports.version = '0.26.3'; + +/** + * Expose self closing tags. + */ + +exports.selfClosing = require('./self-closing'); + +/** + * Default supported doctypes. + */ + +exports.doctypes = require('./doctypes'); + +/** + * Text filters. + */ + +exports.filters = require('./filters'); + +/** + * Utilities. + */ + +exports.utils = require('./utils'); + +/** + * Expose `Compiler`. + */ + +exports.Compiler = Compiler; + +/** + * Expose `Parser`. + */ + +exports.Parser = Parser; + +/** + * Expose `Lexer`. + */ + +exports.Lexer = Lexer; + +/** + * Nodes. + */ + +exports.nodes = require('./nodes'); + +/** + * Jade runtime helpers. + */ + +exports.runtime = runtime; + +/** + * Template function cache. + */ + +exports.cache = {}; + +/** + * Parse the given `str` of jade and return a function body. + * + * @param {String} str + * @param {Object} options + * @return {String} + * @api private + */ + +function parse(str, options){ + try { + // Parse + var parser = new Parser(str, options.filename, options); + + // Compile + var compiler = new (options.compiler || Compiler)(parser.parse(), options) + , js = compiler.compile(); + + // Debug compiler + if (options.debug) { + console.error('\nCompiled Function:\n\n\033[90m%s\033[0m', js.replace(/^/gm, ' ')); + } + + return '' + + 'var buf = [];\n' + + (options.self + ? 'var self = locals || {};\n' + js + : 'with (locals || {}) {\n' + js + '\n}\n') + + 'return buf.join("");'; + } catch (err) { + parser = parser.context(); + runtime.rethrow(err, parser.filename, parser.lexer.lineno); + } +} + +/** + * Compile a `Function` representation of the given jade `str`. + * + * Options: + * + * - `compileDebug` when `false` debugging code is stripped from the compiled template + * - `client` when `true` the helper functions `escape()` etc will reference `jade.escape()` + * for use with the Jade client-side runtime.js + * + * @param {String} str + * @param {Options} options + * @return {Function} + * @api public + */ + +exports.compile = function(str, options){ + var options = options || {} + , client = options.client + , filename = options.filename + ? JSON.stringify(options.filename) + : 'undefined' + , fn; + + if (options.compileDebug !== false) { + fn = [ + 'var __jade = [{ lineno: 1, filename: ' + filename + ' }];' + , 'try {' + , parse(String(str), options) + , '} catch (err) {' + , ' rethrow(err, __jade[0].filename, __jade[0].lineno);' + , '}' + ].join('\n'); + } else { + fn = parse(String(str), options); + } + + if (client) { + fn = 'attrs = attrs || jade.attrs; escape = escape || jade.escape; rethrow = rethrow || jade.rethrow; merge = merge || jade.merge;\n' + fn; + } + + fn = new Function('locals, attrs, escape, rethrow, merge', fn); + + if (client) return fn; + + return function(locals){ + return fn(locals, runtime.attrs, runtime.escape, runtime.rethrow, runtime.merge); + }; +}; + +/** + * Render the given `str` of jade and invoke + * the callback `fn(err, str)`. + * + * Options: + * + * - `cache` enable template caching + * - `filename` filename required for `include` / `extends` and caching + * + * @param {String} str + * @param {Object|Function} options or fn + * @param {Function} fn + * @api public + */ + +exports.render = function(str, options, fn){ + // swap args + if ('function' == typeof options) { + fn = options, options = {}; + } + + // cache requires .filename + if (options.cache && !options.filename) { + return fn(new Error('the "filename" option is required for caching')); + } + + try { + var path = options.filename; + var tmpl = options.cache + ? exports.cache[path] || (exports.cache[path] = exports.compile(str, options)) + : exports.compile(str, options); + fn(null, tmpl(options)); + } catch (err) { + fn(err); + } +}; + +/** + * Render a Jade file at the given `path` and callback `fn(err, str)`. + * + * @param {String} path + * @param {Object|Function} options or callback + * @param {Function} fn + * @api public + */ + +exports.renderFile = function(path, options, fn){ + var key = path + ':string'; + + if ('function' == typeof options) { + fn = options, options = {}; + } + + try { + options.filename = path; + var str = options.cache + ? exports.cache[key] || (exports.cache[key] = fs.readFileSync(path, 'utf8')) + : fs.readFileSync(path, 'utf8'); + exports.render(str, options, fn); + } catch (err) { + fn(err); + } +}; + +/** + * Express support. + */ + +exports.__express = exports.renderFile; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/lexer.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/lexer.js new file mode 100644 index 00000000..bca314a9 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/lexer.js @@ -0,0 +1,771 @@ + +/*! + * Jade - Lexer + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Initialize `Lexer` with the given `str`. + * + * Options: + * + * - `colons` allow colons for attr delimiters + * + * @param {String} str + * @param {Object} options + * @api private + */ + +var Lexer = module.exports = function Lexer(str, options) { + options = options || {}; + this.input = str.replace(/\r\n|\r/g, '\n'); + this.colons = options.colons; + this.deferredTokens = []; + this.lastIndents = 0; + this.lineno = 1; + this.stash = []; + this.indentStack = []; + this.indentRe = null; + this.pipeless = false; +}; + +/** + * Lexer prototype. + */ + +Lexer.prototype = { + + /** + * Construct a token with the given `type` and `val`. + * + * @param {String} type + * @param {String} val + * @return {Object} + * @api private + */ + + tok: function(type, val){ + return { + type: type + , line: this.lineno + , val: val + } + }, + + /** + * Consume the given `len` of input. + * + * @param {Number} len + * @api private + */ + + consume: function(len){ + this.input = this.input.substr(len); + }, + + /** + * Scan for `type` with the given `regexp`. + * + * @param {String} type + * @param {RegExp} regexp + * @return {Object} + * @api private + */ + + scan: function(regexp, type){ + var captures; + if (captures = regexp.exec(this.input)) { + this.consume(captures[0].length); + return this.tok(type, captures[1]); + } + }, + + /** + * Defer the given `tok`. + * + * @param {Object} tok + * @api private + */ + + defer: function(tok){ + this.deferredTokens.push(tok); + }, + + /** + * Lookahead `n` tokens. + * + * @param {Number} n + * @return {Object} + * @api private + */ + + lookahead: function(n){ + var fetch = n - this.stash.length; + while (fetch-- > 0) this.stash.push(this.next()); + return this.stash[--n]; + }, + + /** + * Return the indexOf `start` / `end` delimiters. + * + * @param {String} start + * @param {String} end + * @return {Number} + * @api private + */ + + indexOfDelimiters: function(start, end){ + var str = this.input + , nstart = 0 + , nend = 0 + , pos = 0; + for (var i = 0, len = str.length; i < len; ++i) { + if (start == str.charAt(i)) { + ++nstart; + } else if (end == str.charAt(i)) { + if (++nend == nstart) { + pos = i; + break; + } + } + } + return pos; + }, + + /** + * Stashed token. + */ + + stashed: function() { + return this.stash.length + && this.stash.shift(); + }, + + /** + * Deferred token. + */ + + deferred: function() { + return this.deferredTokens.length + && this.deferredTokens.shift(); + }, + + /** + * end-of-source. + */ + + eos: function() { + if (this.input.length) return; + if (this.indentStack.length) { + this.indentStack.shift(); + return this.tok('outdent'); + } else { + return this.tok('eos'); + } + }, + + /** + * Blank line. + */ + + blank: function() { + var captures; + if (captures = /^\n *\n/.exec(this.input)) { + this.consume(captures[0].length - 1); + if (this.pipeless) return this.tok('text', ''); + return this.next(); + } + }, + + /** + * Comment. + */ + + comment: function() { + var captures; + if (captures = /^ *\/\/(-)?([^\n]*)/.exec(this.input)) { + this.consume(captures[0].length); + var tok = this.tok('comment', captures[2]); + tok.buffer = '-' != captures[1]; + return tok; + } + }, + + /** + * Interpolated tag. + */ + + interpolation: function() { + var captures; + if (captures = /^#\{(.*?)\}/.exec(this.input)) { + this.consume(captures[0].length); + return this.tok('interpolation', captures[1]); + } + }, + + /** + * Tag. + */ + + tag: function() { + var captures; + if (captures = /^(\w[-:\w]*)(\/?)/.exec(this.input)) { + this.consume(captures[0].length); + var tok, name = captures[1]; + if (':' == name[name.length - 1]) { + name = name.slice(0, -1); + tok = this.tok('tag', name); + this.defer(this.tok(':')); + while (' ' == this.input[0]) this.input = this.input.substr(1); + } else { + tok = this.tok('tag', name); + } + tok.selfClosing = !! captures[2]; + return tok; + } + }, + + /** + * Filter. + */ + + filter: function() { + return this.scan(/^:(\w+)/, 'filter'); + }, + + /** + * Doctype. + */ + + doctype: function() { + return this.scan(/^(?:!!!|doctype) *([^\n]+)?/, 'doctype'); + }, + + /** + * Id. + */ + + id: function() { + return this.scan(/^#([\w-]+)/, 'id'); + }, + + /** + * Class. + */ + + className: function() { + return this.scan(/^\.([\w-]+)/, 'class'); + }, + + /** + * Text. + */ + + text: function() { + return this.scan(/^(?:\| ?| ?)?([^\n]+)/, 'text'); + }, + + /** + * Extends. + */ + + "extends": function() { + return this.scan(/^extends? +([^\n]+)/, 'extends'); + }, + + /** + * Block prepend. + */ + + prepend: function() { + var captures; + if (captures = /^prepend +([^\n]+)/.exec(this.input)) { + this.consume(captures[0].length); + var mode = 'prepend' + , name = captures[1] + , tok = this.tok('block', name); + tok.mode = mode; + return tok; + } + }, + + /** + * Block append. + */ + + append: function() { + var captures; + if (captures = /^append +([^\n]+)/.exec(this.input)) { + this.consume(captures[0].length); + var mode = 'append' + , name = captures[1] + , tok = this.tok('block', name); + tok.mode = mode; + return tok; + } + }, + + /** + * Block. + */ + + block: function() { + var captures; + if (captures = /^block\b *(?:(prepend|append) +)?([^\n]*)/.exec(this.input)) { + this.consume(captures[0].length); + var mode = captures[1] || 'replace' + , name = captures[2] + , tok = this.tok('block', name); + + tok.mode = mode; + return tok; + } + }, + + /** + * Yield. + */ + + yield: function() { + return this.scan(/^yield */, 'yield'); + }, + + /** + * Include. + */ + + include: function() { + return this.scan(/^include +([^\n]+)/, 'include'); + }, + + /** + * Case. + */ + + "case": function() { + return this.scan(/^case +([^\n]+)/, 'case'); + }, + + /** + * When. + */ + + when: function() { + return this.scan(/^when +([^:\n]+)/, 'when'); + }, + + /** + * Default. + */ + + "default": function() { + return this.scan(/^default */, 'default'); + }, + + /** + * Assignment. + */ + + assignment: function() { + var captures; + if (captures = /^(\w+) += *([^;\n]+)( *;? *)/.exec(this.input)) { + this.consume(captures[0].length); + var name = captures[1] + , val = captures[2]; + return this.tok('code', 'var ' + name + ' = (' + val + ');'); + } + }, + + /** + * Call mixin. + */ + + call: function(){ + var captures; + if (captures = /^\+([-\w]+)/.exec(this.input)) { + this.consume(captures[0].length); + var tok = this.tok('call', captures[1]); + + // Check for args (not attributes) + if (captures = /^ *\((.*?)\)/.exec(this.input)) { + if (!/^ *[-\w]+ *=/.test(captures[1])) { + this.consume(captures[0].length); + tok.args = captures[1]; + } + } + + return tok; + } + }, + + /** + * Mixin. + */ + + mixin: function(){ + var captures; + if (captures = /^mixin +([-\w]+)(?: *\((.*)\))?/.exec(this.input)) { + this.consume(captures[0].length); + var tok = this.tok('mixin', captures[1]); + tok.args = captures[2]; + return tok; + } + }, + + /** + * Conditional. + */ + + conditional: function() { + var captures; + if (captures = /^(if|unless|else if|else)\b([^\n]*)/.exec(this.input)) { + this.consume(captures[0].length); + var type = captures[1] + , js = captures[2]; + + switch (type) { + case 'if': js = 'if (' + js + ')'; break; + case 'unless': js = 'if (!(' + js + '))'; break; + case 'else if': js = 'else if (' + js + ')'; break; + case 'else': js = 'else'; break; + } + + return this.tok('code', js); + } + }, + + /** + * While. + */ + + "while": function() { + var captures; + if (captures = /^while +([^\n]+)/.exec(this.input)) { + this.consume(captures[0].length); + return this.tok('code', 'while (' + captures[1] + ')'); + } + }, + + /** + * Each. + */ + + each: function() { + var captures; + if (captures = /^(?:- *)?(?:each|for) +(\w+)(?: *, *(\w+))? * in *([^\n]+)/.exec(this.input)) { + this.consume(captures[0].length); + var tok = this.tok('each', captures[1]); + tok.key = captures[2] || '$index'; + tok.code = captures[3]; + return tok; + } + }, + + /** + * Code. + */ + + code: function() { + var captures; + if (captures = /^(!?=|-)([^\n]+)/.exec(this.input)) { + this.consume(captures[0].length); + var flags = captures[1]; + captures[1] = captures[2]; + var tok = this.tok('code', captures[1]); + tok.escape = flags[0] === '='; + tok.buffer = flags[0] === '=' || flags[1] === '='; + return tok; + } + }, + + /** + * Attributes. + */ + + attrs: function() { + if ('(' == this.input.charAt(0)) { + var index = this.indexOfDelimiters('(', ')') + , str = this.input.substr(1, index-1) + , tok = this.tok('attrs') + , len = str.length + , colons = this.colons + , states = ['key'] + , escapedAttr + , key = '' + , val = '' + , quote + , c + , p; + + function state(){ + return states[states.length - 1]; + } + + function interpolate(attr) { + return attr.replace(/#\{([^}]+)\}/g, function(_, expr){ + return quote + " + (" + expr + ") + " + quote; + }); + } + + this.consume(index + 1); + tok.attrs = {}; + tok.escaped = {}; + + function parse(c) { + var real = c; + // TODO: remove when people fix ":" + if (colons && ':' == c) c = '='; + switch (c) { + case ',': + case '\n': + switch (state()) { + case 'expr': + case 'array': + case 'string': + case 'object': + val += c; + break; + default: + states.push('key'); + val = val.trim(); + key = key.trim(); + if ('' == key) return; + key = key.replace(/^['"]|['"]$/g, '').replace('!', ''); + tok.escaped[key] = escapedAttr; + tok.attrs[key] = '' == val + ? true + : interpolate(val); + key = val = ''; + } + break; + case '=': + switch (state()) { + case 'key char': + key += real; + break; + case 'val': + case 'expr': + case 'array': + case 'string': + case 'object': + val += real; + break; + default: + escapedAttr = '!' != p; + states.push('val'); + } + break; + case '(': + if ('val' == state() + || 'expr' == state()) states.push('expr'); + val += c; + break; + case ')': + if ('expr' == state() + || 'val' == state()) states.pop(); + val += c; + break; + case '{': + if ('val' == state()) states.push('object'); + val += c; + break; + case '}': + if ('object' == state()) states.pop(); + val += c; + break; + case '[': + if ('val' == state()) states.push('array'); + val += c; + break; + case ']': + if ('array' == state()) states.pop(); + val += c; + break; + case '"': + case "'": + switch (state()) { + case 'key': + states.push('key char'); + break; + case 'key char': + states.pop(); + break; + case 'string': + if (c == quote) states.pop(); + val += c; + break; + default: + states.push('string'); + val += c; + quote = c; + } + break; + case '': + break; + default: + switch (state()) { + case 'key': + case 'key char': + key += c; + break; + default: + val += c; + } + } + p = c; + } + + for (var i = 0; i < len; ++i) { + parse(str.charAt(i)); + } + + parse(','); + + if ('/' == this.input.charAt(0)) { + this.consume(1); + tok.selfClosing = true; + } + + return tok; + } + }, + + /** + * Indent | Outdent | Newline. + */ + + indent: function() { + var captures, re; + + // established regexp + if (this.indentRe) { + captures = this.indentRe.exec(this.input); + // determine regexp + } else { + // tabs + re = /^\n(\t*) */; + captures = re.exec(this.input); + + // spaces + if (captures && !captures[1].length) { + re = /^\n( *)/; + captures = re.exec(this.input); + } + + // established + if (captures && captures[1].length) this.indentRe = re; + } + + if (captures) { + var tok + , indents = captures[1].length; + + ++this.lineno; + this.consume(indents + 1); + + if (' ' == this.input[0] || '\t' == this.input[0]) { + throw new Error('Invalid indentation, you can use tabs or spaces but not both'); + } + + // blank line + if ('\n' == this.input[0]) return this.tok('newline'); + + // outdent + if (this.indentStack.length && indents < this.indentStack[0]) { + while (this.indentStack.length && this.indentStack[0] > indents) { + this.stash.push(this.tok('outdent')); + this.indentStack.shift(); + } + tok = this.stash.pop(); + // indent + } else if (indents && indents != this.indentStack[0]) { + this.indentStack.unshift(indents); + tok = this.tok('indent', indents); + // newline + } else { + tok = this.tok('newline'); + } + + return tok; + } + }, + + /** + * Pipe-less text consumed only when + * pipeless is true; + */ + + pipelessText: function() { + if (this.pipeless) { + if ('\n' == this.input[0]) return; + var i = this.input.indexOf('\n'); + if (-1 == i) i = this.input.length; + var str = this.input.substr(0, i); + this.consume(str.length); + return this.tok('text', str); + } + }, + + /** + * ':' + */ + + colon: function() { + return this.scan(/^: */, ':'); + }, + + /** + * Return the next token object, or those + * previously stashed by lookahead. + * + * @return {Object} + * @api private + */ + + advance: function(){ + return this.stashed() + || this.next(); + }, + + /** + * Return the next token object. + * + * @return {Object} + * @api private + */ + + next: function() { + return this.deferred() + || this.blank() + || this.eos() + || this.pipelessText() + || this.yield() + || this.doctype() + || this.interpolation() + || this["case"]() + || this.when() + || this["default"]() + || this["extends"]() + || this.append() + || this.prepend() + || this.block() + || this.include() + || this.mixin() + || this.call() + || this.conditional() + || this.each() + || this["while"]() + || this.assignment() + || this.tag() + || this.filter() + || this.code() + || this.id() + || this.className() + || this.attrs() + || this.indent() + || this.comment() + || this.colon() + || this.text(); + } +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/attrs.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/attrs.js new file mode 100644 index 00000000..5de9b59c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/attrs.js @@ -0,0 +1,77 @@ + +/*! + * Jade - nodes - Attrs + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'), + Block = require('./block'); + +/** + * Initialize a `Attrs` node. + * + * @api public + */ + +var Attrs = module.exports = function Attrs() { + this.attrs = []; +}; + +/** + * Inherit from `Node`. + */ + +Attrs.prototype.__proto__ = Node.prototype; + +/** + * Set attribute `name` to `val`, keep in mind these become + * part of a raw js object literal, so to quote a value you must + * '"quote me"', otherwise or example 'user.name' is literal JavaScript. + * + * @param {String} name + * @param {String} val + * @param {Boolean} escaped + * @return {Tag} for chaining + * @api public + */ + +Attrs.prototype.setAttribute = function(name, val, escaped){ + this.attrs.push({ name: name, val: val, escaped: escaped }); + return this; +}; + +/** + * Remove attribute `name` when present. + * + * @param {String} name + * @api public + */ + +Attrs.prototype.removeAttribute = function(name){ + for (var i = 0, len = this.attrs.length; i < len; ++i) { + if (this.attrs[i] && this.attrs[i].name == name) { + delete this.attrs[i]; + } + } +}; + +/** + * Get attribute value by `name`. + * + * @param {String} name + * @return {String} + * @api public + */ + +Attrs.prototype.getAttribute = function(name){ + for (var i = 0, len = this.attrs.length; i < len; ++i) { + if (this.attrs[i] && this.attrs[i].name == name) { + return this.attrs[i].val; + } + } +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/block-comment.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/block-comment.js new file mode 100644 index 00000000..4f41e4a5 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/block-comment.js @@ -0,0 +1,33 @@ + +/*! + * Jade - nodes - BlockComment + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a `BlockComment` with the given `block`. + * + * @param {String} val + * @param {Block} block + * @param {Boolean} buffer + * @api public + */ + +var BlockComment = module.exports = function BlockComment(val, block, buffer) { + this.block = block; + this.val = val; + this.buffer = buffer; +}; + +/** + * Inherit from `Node`. + */ + +BlockComment.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/block.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/block.js new file mode 100644 index 00000000..bb00a1d9 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/block.js @@ -0,0 +1,121 @@ + +/*! + * Jade - nodes - Block + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a new `Block` with an optional `node`. + * + * @param {Node} node + * @api public + */ + +var Block = module.exports = function Block(node){ + this.nodes = []; + if (node) this.push(node); +}; + +/** + * Inherit from `Node`. + */ + +Block.prototype.__proto__ = Node.prototype; + +/** + * Block flag. + */ + +Block.prototype.isBlock = true; + +/** + * Replace the nodes in `other` with the nodes + * in `this` block. + * + * @param {Block} other + * @api private + */ + +Block.prototype.replace = function(other){ + other.nodes = this.nodes; +}; + +/** + * Pust the given `node`. + * + * @param {Node} node + * @return {Number} + * @api public + */ + +Block.prototype.push = function(node){ + return this.nodes.push(node); +}; + +/** + * Check if this block is empty. + * + * @return {Boolean} + * @api public + */ + +Block.prototype.isEmpty = function(){ + return 0 == this.nodes.length; +}; + +/** + * Unshift the given `node`. + * + * @param {Node} node + * @return {Number} + * @api public + */ + +Block.prototype.unshift = function(node){ + return this.nodes.unshift(node); +}; + +/** + * Return the "last" block, or the first `yield` node. + * + * @return {Block} + * @api private + */ + +Block.prototype.includeBlock = function(){ + var ret = this + , node; + + for (var i = 0, len = this.nodes.length; i < len; ++i) { + node = this.nodes[i]; + if (node.yield) return node; + else if (node.textOnly) continue; + else if (node.includeBlock) ret = node.includeBlock(); + else if (node.block && !node.block.isEmpty()) ret = node.block.includeBlock(); + } + + return ret; +}; + +/** + * Return a clone of this block. + * + * @return {Block} + * @api private + */ + +Block.prototype.clone = function(){ + var clone = new Block; + for (var i = 0, len = this.nodes.length; i < len; ++i) { + clone.push(this.nodes[i].clone()); + } + return clone; +}; + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/case.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/case.js new file mode 100644 index 00000000..08ff0337 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/case.js @@ -0,0 +1,43 @@ + +/*! + * Jade - nodes - Case + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a new `Case` with `expr`. + * + * @param {String} expr + * @api public + */ + +var Case = exports = module.exports = function Case(expr, block){ + this.expr = expr; + this.block = block; +}; + +/** + * Inherit from `Node`. + */ + +Case.prototype.__proto__ = Node.prototype; + +var When = exports.When = function When(expr, block){ + this.expr = expr; + this.block = block; + this.debug = false; +}; + +/** + * Inherit from `Node`. + */ + +When.prototype.__proto__ = Node.prototype; + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/code.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/code.js new file mode 100644 index 00000000..babc6759 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/code.js @@ -0,0 +1,35 @@ + +/*! + * Jade - nodes - Code + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a `Code` node with the given code `val`. + * Code may also be optionally buffered and escaped. + * + * @param {String} val + * @param {Boolean} buffer + * @param {Boolean} escape + * @api public + */ + +var Code = module.exports = function Code(val, buffer, escape) { + this.val = val; + this.buffer = buffer; + this.escape = escape; + if (val.match(/^ *else/)) this.debug = false; +}; + +/** + * Inherit from `Node`. + */ + +Code.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/comment.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/comment.js new file mode 100644 index 00000000..2e1469e7 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/comment.js @@ -0,0 +1,32 @@ + +/*! + * Jade - nodes - Comment + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a `Comment` with the given `val`, optionally `buffer`, + * otherwise the comment may render in the output. + * + * @param {String} val + * @param {Boolean} buffer + * @api public + */ + +var Comment = module.exports = function Comment(val, buffer) { + this.val = val; + this.buffer = buffer; +}; + +/** + * Inherit from `Node`. + */ + +Comment.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/doctype.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/doctype.js new file mode 100644 index 00000000..b8f33e56 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/doctype.js @@ -0,0 +1,29 @@ + +/*! + * Jade - nodes - Doctype + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a `Doctype` with the given `val`. + * + * @param {String} val + * @api public + */ + +var Doctype = module.exports = function Doctype(val) { + this.val = val; +}; + +/** + * Inherit from `Node`. + */ + +Doctype.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/each.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/each.js new file mode 100644 index 00000000..f54101f1 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/each.js @@ -0,0 +1,35 @@ + +/*! + * Jade - nodes - Each + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize an `Each` node, representing iteration + * + * @param {String} obj + * @param {String} val + * @param {String} key + * @param {Block} block + * @api public + */ + +var Each = module.exports = function Each(obj, val, key, block) { + this.obj = obj; + this.val = val; + this.key = key; + this.block = block; +}; + +/** + * Inherit from `Node`. + */ + +Each.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/filter.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/filter.js new file mode 100644 index 00000000..851a0040 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/filter.js @@ -0,0 +1,35 @@ + +/*! + * Jade - nodes - Filter + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node') + , Block = require('./block'); + +/** + * Initialize a `Filter` node with the given + * filter `name` and `block`. + * + * @param {String} name + * @param {Block|Node} block + * @api public + */ + +var Filter = module.exports = function Filter(name, block, attrs) { + this.name = name; + this.block = block; + this.attrs = attrs; + this.isASTFilter = !block.nodes.every(function(node){ return node.isText }); +}; + +/** + * Inherit from `Node`. + */ + +Filter.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/index.js new file mode 100644 index 00000000..386ad2f9 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/index.js @@ -0,0 +1,20 @@ + +/*! + * Jade - nodes + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +exports.Node = require('./node'); +exports.Tag = require('./tag'); +exports.Code = require('./code'); +exports.Each = require('./each'); +exports.Case = require('./case'); +exports.Text = require('./text'); +exports.Block = require('./block'); +exports.Mixin = require('./mixin'); +exports.Filter = require('./filter'); +exports.Comment = require('./comment'); +exports.Literal = require('./literal'); +exports.BlockComment = require('./block-comment'); +exports.Doctype = require('./doctype'); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/literal.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/literal.js new file mode 100644 index 00000000..fde586be --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/literal.js @@ -0,0 +1,32 @@ + +/*! + * Jade - nodes - Literal + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a `Literal` node with the given `str. + * + * @param {String} str + * @api public + */ + +var Literal = module.exports = function Literal(str) { + this.str = str + .replace(/\\/g, "\\\\") + .replace(/\n|\r\n/g, "\\n") + .replace(/'/g, "\\'"); +}; + +/** + * Inherit from `Node`. + */ + +Literal.prototype.__proto__ = Node.prototype; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/mixin.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/mixin.js new file mode 100644 index 00000000..8407bc79 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/mixin.js @@ -0,0 +1,36 @@ + +/*! + * Jade - nodes - Mixin + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Attrs = require('./attrs'); + +/** + * Initialize a new `Mixin` with `name` and `block`. + * + * @param {String} name + * @param {String} args + * @param {Block} block + * @api public + */ + +var Mixin = module.exports = function Mixin(name, args, block, call){ + this.name = name; + this.args = args; + this.block = block; + this.attrs = []; + this.call = call; +}; + +/** + * Inherit from `Attrs`. + */ + +Mixin.prototype.__proto__ = Attrs.prototype; + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/node.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/node.js new file mode 100644 index 00000000..e98f042c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/node.js @@ -0,0 +1,25 @@ + +/*! + * Jade - nodes - Node + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Initialize a `Node`. + * + * @api public + */ + +var Node = module.exports = function Node(){}; + +/** + * Clone this node (return itself) + * + * @return {Node} + * @api private + */ + +Node.prototype.clone = function(){ + return this; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/tag.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/tag.js new file mode 100644 index 00000000..4b6728ad --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/tag.js @@ -0,0 +1,95 @@ + +/*! + * Jade - nodes - Tag + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Attrs = require('./attrs'), + Block = require('./block'), + inlineTags = require('../inline-tags'); + +/** + * Initialize a `Tag` node with the given tag `name` and optional `block`. + * + * @param {String} name + * @param {Block} block + * @api public + */ + +var Tag = module.exports = function Tag(name, block) { + this.name = name; + this.attrs = []; + this.block = block || new Block; +}; + +/** + * Inherit from `Attrs`. + */ + +Tag.prototype.__proto__ = Attrs.prototype; + +/** + * Clone this tag. + * + * @return {Tag} + * @api private + */ + +Tag.prototype.clone = function(){ + var clone = new Tag(this.name, this.block.clone()); + clone.line = this.line; + clone.attrs = this.attrs; + clone.textOnly = this.textOnly; + return clone; +}; + +/** + * Check if this tag is an inline tag. + * + * @return {Boolean} + * @api private + */ + +Tag.prototype.isInline = function(){ + return ~inlineTags.indexOf(this.name); +}; + +/** + * Check if this tag's contents can be inlined. Used for pretty printing. + * + * @return {Boolean} + * @api private + */ + +Tag.prototype.canInline = function(){ + var nodes = this.block.nodes; + + function isInline(node){ + // Recurse if the node is a block + if (node.isBlock) return node.nodes.every(isInline); + return node.isText || (node.isInline && node.isInline()); + } + + // Empty tag + if (!nodes.length) return true; + + // Text-only or inline-only tag + if (1 == nodes.length) return isInline(nodes[0]); + + // Multi-line inline-only tag + if (this.block.nodes.every(isInline)) { + for (var i = 1, len = nodes.length; i < len; ++i) { + if (nodes[i-1].isText && nodes[i].isText) + return false; + } + return true; + } + + // Mixed tag + return false; +}; \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/text.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/text.js new file mode 100644 index 00000000..3b5dd557 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/nodes/text.js @@ -0,0 +1,36 @@ + +/*! + * Jade - nodes - Text + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a `Text` node with optional `line`. + * + * @param {String} line + * @api public + */ + +var Text = module.exports = function Text(line) { + this.val = ''; + if ('string' == typeof line) this.val = line; +}; + +/** + * Inherit from `Node`. + */ + +Text.prototype.__proto__ = Node.prototype; + +/** + * Flag as text. + */ + +Text.prototype.isText = true; \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/parser.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/parser.js new file mode 100644 index 00000000..92f2af0c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/parser.js @@ -0,0 +1,710 @@ + +/*! + * Jade - Parser + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Lexer = require('./lexer') + , nodes = require('./nodes'); + +/** + * Initialize `Parser` with the given input `str` and `filename`. + * + * @param {String} str + * @param {String} filename + * @param {Object} options + * @api public + */ + +var Parser = exports = module.exports = function Parser(str, filename, options){ + this.input = str; + this.lexer = new Lexer(str, options); + this.filename = filename; + this.blocks = {}; + this.mixins = {}; + this.options = options; + this.contexts = [this]; +}; + +/** + * Tags that may not contain tags. + */ + +var textOnly = exports.textOnly = ['script', 'style']; + +/** + * Parser prototype. + */ + +Parser.prototype = { + + /** + * Push `parser` onto the context stack, + * or pop and return a `Parser`. + */ + + context: function(parser){ + if (parser) { + this.contexts.push(parser); + } else { + return this.contexts.pop(); + } + }, + + /** + * Return the next token object. + * + * @return {Object} + * @api private + */ + + advance: function(){ + return this.lexer.advance(); + }, + + /** + * Skip `n` tokens. + * + * @param {Number} n + * @api private + */ + + skip: function(n){ + while (n--) this.advance(); + }, + + /** + * Single token lookahead. + * + * @return {Object} + * @api private + */ + + peek: function() { + return this.lookahead(1); + }, + + /** + * Return lexer lineno. + * + * @return {Number} + * @api private + */ + + line: function() { + return this.lexer.lineno; + }, + + /** + * `n` token lookahead. + * + * @param {Number} n + * @return {Object} + * @api private + */ + + lookahead: function(n){ + return this.lexer.lookahead(n); + }, + + /** + * Parse input returning a string of js for evaluation. + * + * @return {String} + * @api public + */ + + parse: function(){ + var block = new nodes.Block, parser; + block.line = this.line(); + + while ('eos' != this.peek().type) { + if ('newline' == this.peek().type) { + this.advance(); + } else { + block.push(this.parseExpr()); + } + } + + if (parser = this.extending) { + this.context(parser); + var ast = parser.parse(); + this.context(); + // hoist mixins + for (var name in this.mixins) + ast.unshift(this.mixins[name]); + return ast; + } + + return block; + }, + + /** + * Expect the given type, or throw an exception. + * + * @param {String} type + * @api private + */ + + expect: function(type){ + if (this.peek().type === type) { + return this.advance(); + } else { + throw new Error('expected "' + type + '", but got "' + this.peek().type + '"'); + } + }, + + /** + * Accept the given `type`. + * + * @param {String} type + * @api private + */ + + accept: function(type){ + if (this.peek().type === type) { + return this.advance(); + } + }, + + /** + * tag + * | doctype + * | mixin + * | include + * | filter + * | comment + * | text + * | each + * | code + * | yield + * | id + * | class + * | interpolation + */ + + parseExpr: function(){ + switch (this.peek().type) { + case 'tag': + return this.parseTag(); + case 'mixin': + return this.parseMixin(); + case 'block': + return this.parseBlock(); + case 'case': + return this.parseCase(); + case 'when': + return this.parseWhen(); + case 'default': + return this.parseDefault(); + case 'extends': + return this.parseExtends(); + case 'include': + return this.parseInclude(); + case 'doctype': + return this.parseDoctype(); + case 'filter': + return this.parseFilter(); + case 'comment': + return this.parseComment(); + case 'text': + return this.parseText(); + case 'each': + return this.parseEach(); + case 'code': + return this.parseCode(); + case 'call': + return this.parseCall(); + case 'interpolation': + return this.parseInterpolation(); + case 'yield': + this.advance(); + var block = new nodes.Block; + block.yield = true; + return block; + case 'id': + case 'class': + var tok = this.advance(); + this.lexer.defer(this.lexer.tok('tag', 'div')); + this.lexer.defer(tok); + return this.parseExpr(); + default: + throw new Error('unexpected token "' + this.peek().type + '"'); + } + }, + + /** + * Text + */ + + parseText: function(){ + var tok = this.expect('text') + , node = new nodes.Text(tok.val); + node.line = this.line(); + return node; + }, + + /** + * ':' expr + * | block + */ + + parseBlockExpansion: function(){ + if (':' == this.peek().type) { + this.advance(); + return new nodes.Block(this.parseExpr()); + } else { + return this.block(); + } + }, + + /** + * case + */ + + parseCase: function(){ + var val = this.expect('case').val + , node = new nodes.Case(val); + node.line = this.line(); + node.block = this.block(); + return node; + }, + + /** + * when + */ + + parseWhen: function(){ + var val = this.expect('when').val + return new nodes.Case.When(val, this.parseBlockExpansion()); + }, + + /** + * default + */ + + parseDefault: function(){ + this.expect('default'); + return new nodes.Case.When('default', this.parseBlockExpansion()); + }, + + /** + * code + */ + + parseCode: function(){ + var tok = this.expect('code') + , node = new nodes.Code(tok.val, tok.buffer, tok.escape) + , block + , i = 1; + node.line = this.line(); + while (this.lookahead(i) && 'newline' == this.lookahead(i).type) ++i; + block = 'indent' == this.lookahead(i).type; + if (block) { + this.skip(i-1); + node.block = this.block(); + } + return node; + }, + + /** + * comment + */ + + parseComment: function(){ + var tok = this.expect('comment') + , node; + + if ('indent' == this.peek().type) { + node = new nodes.BlockComment(tok.val, this.block(), tok.buffer); + } else { + node = new nodes.Comment(tok.val, tok.buffer); + } + + node.line = this.line(); + return node; + }, + + /** + * doctype + */ + + parseDoctype: function(){ + var tok = this.expect('doctype') + , node = new nodes.Doctype(tok.val); + node.line = this.line(); + return node; + }, + + /** + * filter attrs? text-block + */ + + parseFilter: function(){ + var block + , tok = this.expect('filter') + , attrs = this.accept('attrs'); + + this.lexer.pipeless = true; + block = this.parseTextBlock(); + this.lexer.pipeless = false; + + var node = new nodes.Filter(tok.val, block, attrs && attrs.attrs); + node.line = this.line(); + return node; + }, + + /** + * tag ':' attrs? block + */ + + parseASTFilter: function(){ + var block + , tok = this.expect('tag') + , attrs = this.accept('attrs'); + + this.expect(':'); + block = this.block(); + + var node = new nodes.Filter(tok.val, block, attrs && attrs.attrs); + node.line = this.line(); + return node; + }, + + /** + * each block + */ + + parseEach: function(){ + var tok = this.expect('each') + , node = new nodes.Each(tok.code, tok.val, tok.key); + node.line = this.line(); + node.block = this.block(); + return node; + }, + + /** + * 'extends' name + */ + + parseExtends: function(){ + var path = require('path') + , fs = require('fs') + , dirname = path.dirname + , basename = path.basename + , join = path.join; + + if (!this.filename) + throw new Error('the "filename" option is required to extend templates'); + + var path = this.expect('extends').val.trim() + , dir = dirname(this.filename); + + var path = join(dir, path + '.jade') + , str = fs.readFileSync(path, 'utf8') + , parser = new Parser(str, path, this.options); + + parser.blocks = this.blocks; + parser.contexts = this.contexts; + this.extending = parser; + + // TODO: null node + return new nodes.Literal(''); + }, + + /** + * 'block' name block + */ + + parseBlock: function(){ + var block = this.expect('block') + , mode = block.mode + , name = block.val.trim(); + + block = 'indent' == this.peek().type + ? this.block() + : new nodes.Block(new nodes.Literal('')); + + var prev = this.blocks[name]; + + if (prev) { + switch (prev.mode) { + case 'append': + block.nodes = block.nodes.concat(prev.nodes); + prev = block; + break; + case 'prepend': + block.nodes = prev.nodes.concat(block.nodes); + prev = block; + break; + } + } + + block.mode = mode; + return this.blocks[name] = prev || block; + }, + + /** + * include block? + */ + + parseInclude: function(){ + var path = require('path') + , fs = require('fs') + , dirname = path.dirname + , basename = path.basename + , join = path.join; + + var path = this.expect('include').val.trim() + , dir = dirname(this.filename); + + if (!this.filename) + throw new Error('the "filename" option is required to use includes'); + + // no extension + if (!~basename(path).indexOf('.')) { + path += '.jade'; + } + + // non-jade + if ('.jade' != path.substr(-5)) { + var path = join(dir, path) + , str = fs.readFileSync(path, 'utf8'); + return new nodes.Literal(str); + } + + var path = join(dir, path) + , str = fs.readFileSync(path, 'utf8') + , parser = new Parser(str, path, this.options); + parser.blocks = this.blocks; + parser.mixins = this.mixins; + + this.context(parser); + var ast = parser.parse(); + this.context(); + ast.filename = path; + + if ('indent' == this.peek().type) { + ast.includeBlock().push(this.block()); + } + + return ast; + }, + + /** + * call ident block + */ + + parseCall: function(){ + var tok = this.expect('call') + , name = tok.val + , args = tok.args + , mixin = new nodes.Mixin(name, args, new nodes.Block, true); + + this.tag(mixin); + if (mixin.block.isEmpty()) mixin.block = null; + return mixin; + }, + + /** + * mixin block + */ + + parseMixin: function(){ + var tok = this.expect('mixin') + , name = tok.val + , args = tok.args + , mixin; + + // definition + if ('indent' == this.peek().type) { + mixin = new nodes.Mixin(name, args, this.block(), false); + this.mixins[name] = mixin; + return mixin; + // call + } else { + return new nodes.Mixin(name, args, null, true); + } + }, + + /** + * indent (text | newline)* outdent + */ + + parseTextBlock: function(){ + var block = new nodes.Block; + block.line = this.line(); + var spaces = this.expect('indent').val; + if (null == this._spaces) this._spaces = spaces; + var indent = Array(spaces - this._spaces + 1).join(' '); + while ('outdent' != this.peek().type) { + switch (this.peek().type) { + case 'newline': + this.advance(); + break; + case 'indent': + this.parseTextBlock().nodes.forEach(function(node){ + block.push(node); + }); + break; + default: + var text = new nodes.Text(indent + this.advance().val); + text.line = this.line(); + block.push(text); + } + } + + if (spaces == this._spaces) this._spaces = null; + this.expect('outdent'); + return block; + }, + + /** + * indent expr* outdent + */ + + block: function(){ + var block = new nodes.Block; + block.line = this.line(); + this.expect('indent'); + while ('outdent' != this.peek().type) { + if ('newline' == this.peek().type) { + this.advance(); + } else { + block.push(this.parseExpr()); + } + } + this.expect('outdent'); + return block; + }, + + /** + * interpolation (attrs | class | id)* (text | code | ':')? newline* block? + */ + + parseInterpolation: function(){ + var tok = this.advance(); + var tag = new nodes.Tag(tok.val); + tag.buffer = true; + return this.tag(tag); + }, + + /** + * tag (attrs | class | id)* (text | code | ':')? newline* block? + */ + + parseTag: function(){ + // ast-filter look-ahead + var i = 2; + if ('attrs' == this.lookahead(i).type) ++i; + if (':' == this.lookahead(i).type) { + if ('indent' == this.lookahead(++i).type) { + return this.parseASTFilter(); + } + } + + var tok = this.advance() + , tag = new nodes.Tag(tok.val); + + tag.selfClosing = tok.selfClosing; + + return this.tag(tag); + }, + + /** + * Parse tag. + */ + + tag: function(tag){ + var dot; + + tag.line = this.line(); + + // (attrs | class | id)* + out: + while (true) { + switch (this.peek().type) { + case 'id': + case 'class': + var tok = this.advance(); + tag.setAttribute(tok.type, "'" + tok.val + "'"); + continue; + case 'attrs': + var tok = this.advance() + , obj = tok.attrs + , escaped = tok.escaped + , names = Object.keys(obj); + + if (tok.selfClosing) tag.selfClosing = true; + + for (var i = 0, len = names.length; i < len; ++i) { + var name = names[i] + , val = obj[name]; + tag.setAttribute(name, val, escaped[name]); + } + continue; + default: + break out; + } + } + + // check immediate '.' + if ('.' == this.peek().val) { + dot = tag.textOnly = true; + this.advance(); + } + + // (text | code | ':')? + switch (this.peek().type) { + case 'text': + tag.block.push(this.parseText()); + break; + case 'code': + tag.code = this.parseCode(); + break; + case ':': + this.advance(); + tag.block = new nodes.Block; + tag.block.push(this.parseExpr()); + break; + } + + // newline* + while ('newline' == this.peek().type) this.advance(); + + tag.textOnly = tag.textOnly || ~textOnly.indexOf(tag.name); + + // script special-case + if ('script' == tag.name) { + var type = tag.getAttribute('type'); + if (!dot && type && 'text/javascript' != type.replace(/^['"]|['"]$/g, '')) { + tag.textOnly = false; + } + } + + // block? + if ('indent' == this.peek().type) { + if (tag.textOnly) { + this.lexer.pipeless = true; + tag.block = this.parseTextBlock(); + this.lexer.pipeless = false; + } else { + var block = this.block(); + if (tag.block) { + for (var i = 0, len = block.nodes.length; i < len; ++i) { + tag.block.push(block.nodes[i]); + } + } else { + tag.block = block; + } + } + } + + return tag; + } +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/runtime.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/runtime.js new file mode 100644 index 00000000..fb711f5e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/runtime.js @@ -0,0 +1,174 @@ + +/*! + * Jade - runtime + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Lame Array.isArray() polyfill for now. + */ + +if (!Array.isArray) { + Array.isArray = function(arr){ + return '[object Array]' == Object.prototype.toString.call(arr); + }; +} + +/** + * Lame Object.keys() polyfill for now. + */ + +if (!Object.keys) { + Object.keys = function(obj){ + var arr = []; + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + arr.push(key); + } + } + return arr; + } +} + +/** + * Merge two attribute objects giving precedence + * to values in object `b`. Classes are special-cased + * allowing for arrays and merging/joining appropriately + * resulting in a string. + * + * @param {Object} a + * @param {Object} b + * @return {Object} a + * @api private + */ + +exports.merge = function merge(a, b) { + var ac = a['class']; + var bc = b['class']; + + if (ac || bc) { + ac = ac || []; + bc = bc || []; + if (!Array.isArray(ac)) ac = [ac]; + if (!Array.isArray(bc)) bc = [bc]; + ac = ac.filter(nulls); + bc = bc.filter(nulls); + a['class'] = ac.concat(bc).join(' '); + } + + for (var key in b) { + if (key != 'class') { + a[key] = b[key]; + } + } + + return a; +}; + +/** + * Filter null `val`s. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + +function nulls(val) { + return val != null; +} + +/** + * Render the given attributes object. + * + * @param {Object} obj + * @param {Object} escaped + * @return {String} + * @api private + */ + +exports.attrs = function attrs(obj, escaped){ + var buf = [] + , terse = obj.terse; + + delete obj.terse; + var keys = Object.keys(obj) + , len = keys.length; + + if (len) { + buf.push(''); + for (var i = 0; i < len; ++i) { + var key = keys[i] + , val = obj[key]; + + if ('boolean' == typeof val || null == val) { + if (val) { + terse + ? buf.push(key) + : buf.push(key + '="' + key + '"'); + } + } else if (0 == key.indexOf('data') && 'string' != typeof val) { + buf.push(key + "='" + JSON.stringify(val) + "'"); + } else if ('class' == key && Array.isArray(val)) { + buf.push(key + '="' + exports.escape(val.join(' ')) + '"'); + } else if (escaped && escaped[key]) { + buf.push(key + '="' + exports.escape(val) + '"'); + } else { + buf.push(key + '="' + val + '"'); + } + } + } + + return buf.join(' '); +}; + +/** + * Escape the given string of `html`. + * + * @param {String} html + * @return {String} + * @api private + */ + +exports.escape = function escape(html){ + return String(html) + .replace(/&(?!(\w+|\#\d+);)/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); +}; + +/** + * Re-throw the given `err` in context to the + * the jade in `filename` at the given `lineno`. + * + * @param {Error} err + * @param {String} filename + * @param {String} lineno + * @api private + */ + +exports.rethrow = function rethrow(err, filename, lineno){ + if (!filename) throw err; + + var context = 3 + , str = require('fs').readFileSync(filename, 'utf8') + , lines = str.split('\n') + , start = Math.max(lineno - context, 0) + , end = Math.min(lines.length, lineno + context); + + // Error context + var context = lines.slice(start, end).map(function(line, i){ + var curr = i + start + 1; + return (curr == lineno ? ' > ' : ' ') + + curr + + '| ' + + line; + }).join('\n'); + + // Alter exception message + err.path = filename; + err.message = (filename || 'Jade') + ':' + lineno + + '\n' + context + '\n\n' + err.message; + throw err; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/self-closing.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/self-closing.js new file mode 100644 index 00000000..05487712 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/self-closing.js @@ -0,0 +1,19 @@ + +/*! + * Jade - self closing tags + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +module.exports = [ + 'meta' + , 'img' + , 'link' + , 'input' + , 'source' + , 'area' + , 'base' + , 'col' + , 'br' + , 'hr' +]; \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/utils.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/utils.js new file mode 100644 index 00000000..ff46d022 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/lib/utils.js @@ -0,0 +1,49 @@ + +/*! + * Jade - utils + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Convert interpolation in the given string to JavaScript. + * + * @param {String} str + * @return {String} + * @api private + */ + +var interpolate = exports.interpolate = function(str){ + return str.replace(/(\\)?([#!]){(.*?)}/g, function(str, escape, flag, code){ + return escape + ? str + : "' + " + + ('!' == flag ? '' : 'escape') + + "((interp = " + code.replace(/\\'/g, "'") + + ") == null ? '' : interp) + '"; + }); +}; + +/** + * Escape single quotes in `str`. + * + * @param {String} str + * @return {String} + * @api private + */ + +var escape = exports.escape = function(str) { + return str.replace(/'/g, "\\'"); +}; + +/** + * Interpolate, and escape the given `str`. + * + * @param {String} str + * @return {String} + * @api private + */ + +exports.text = function(str){ + return interpolate(escape(str)); +}; \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/.npmignore new file mode 100644 index 00000000..f1250e58 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/.travis.yml new file mode 100644 index 00000000..f1d0f13c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.4 + - 0.6 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/History.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/History.md new file mode 100644 index 00000000..4961d2e2 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/History.md @@ -0,0 +1,107 @@ + +0.6.1 / 2012-06-01 +================== + + * Added: append (yes or no) on confirmation + * Added: allow node.js v0.7.x + +0.6.0 / 2012-04-10 +================== + + * Added `.prompt(obj, callback)` support. Closes #49 + * Added default support to .choose(). Closes #41 + * Fixed the choice example + +0.5.1 / 2011-12-20 +================== + + * Fixed `password()` for recent nodes. Closes #36 + +0.5.0 / 2011-12-04 +================== + + * Added sub-command option support [itay] + +0.4.3 / 2011-12-04 +================== + + * Fixed custom help ordering. Closes #32 + +0.4.2 / 2011-11-24 +================== + + * Added travis support + * Fixed: line-buffered input automatically trimmed. Closes #31 + +0.4.1 / 2011-11-18 +================== + + * Removed listening for "close" on --help + +0.4.0 / 2011-11-15 +================== + + * Added support for `--`. Closes #24 + +0.3.3 / 2011-11-14 +================== + + * Fixed: wait for close event when writing help info [Jerry Hamlet] + +0.3.2 / 2011-11-01 +================== + + * Fixed long flag definitions with values [felixge] + +0.3.1 / 2011-10-31 +================== + + * Changed `--version` short flag to `-V` from `-v` + * Changed `.version()` so it's configurable [felixge] + +0.3.0 / 2011-10-31 +================== + + * Added support for long flags only. Closes #18 + +0.2.1 / 2011-10-24 +================== + + * "node": ">= 0.4.x < 0.7.0". Closes #20 + +0.2.0 / 2011-09-26 +================== + + * Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs] + +0.1.0 / 2011-08-24 +================== + + * Added support for custom `--help` output + +0.0.5 / 2011-08-18 +================== + + * Changed: when the user enters nothing prompt for password again + * Fixed issue with passwords beginning with numbers [NuckChorris] + +0.0.4 / 2011-08-15 +================== + + * Fixed `Commander#args` + +0.0.3 / 2011-08-15 +================== + + * Added default option value support + +0.0.2 / 2011-08-15 +================== + + * Added mask support to `Command#password(str[, mask], fn)` + * Added `Command#password(str, fn)` + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/Makefile new file mode 100644 index 00000000..00746255 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/Makefile @@ -0,0 +1,7 @@ + +TESTS = $(shell find test/test.*.js) + +test: + @./test/run $(TESTS) + +.PHONY: test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/Readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/Readme.md new file mode 100644 index 00000000..b8328c37 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/Readme.md @@ -0,0 +1,262 @@ +# Commander.js + + The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander). + + [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js) + +## Installation + + $ npm install commander + +## Option parsing + + Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('commander'); + +program + .version('0.0.1') + .option('-p, --peppers', 'Add peppers') + .option('-P, --pineapple', 'Add pineapple') + .option('-b, --bbq', 'Add bbq sauce') + .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') + .parse(process.argv); + +console.log('you ordered a pizza with:'); +if (program.peppers) console.log(' - peppers'); +if (program.pineapple) console.log(' - pineappe'); +if (program.bbq) console.log(' - bbq'); +console.log(' - %s cheese', program.cheese); +``` + + Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. + +## Automated --help + + The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free: + +``` + $ ./examples/pizza --help + + Usage: pizza [options] + + Options: + + -V, --version output the version number + -p, --peppers Add peppers + -P, --pineapple Add pineappe + -b, --bbq Add bbq sauce + -c, --cheese Add the specified type of cheese [marble] + -h, --help output usage information + +``` + +## Coercion + +```js +function range(val) { + return val.split('..').map(Number); +} + +function list(val) { + return val.split(','); +} + +program + .version('0.0.1') + .usage('[options] ') + .option('-i, --integer ', 'An integer argument', parseInt) + .option('-f, --float ', 'A float argument', parseFloat) + .option('-r, --range ..', 'A range', range) + .option('-l, --list ', 'A list', list) + .option('-o, --optional [value]', 'An optional value') + .parse(process.argv); + +console.log(' int: %j', program.integer); +console.log(' float: %j', program.float); +console.log(' optional: %j', program.optional); +program.range = program.range || []; +console.log(' range: %j..%j', program.range[0], program.range[1]); +console.log(' list: %j', program.list); +console.log(' args: %j', program.args); +``` + +## Custom help + + You can display arbitrary `-h, --help` information + by listening for "--help". Commander will automatically + exit once you are done so that the remainder of your program + does not execute causing undesired behaviours, for example + in the following executable "stuff" will not output when + `--help` is used. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('../'); + +function list(val) { + return val.split(',').map(Number); +} + +program + .version('0.0.1') + .option('-f, --foo', 'enable some foo') + .option('-b, --bar', 'enable some bar') + .option('-B, --baz', 'enable some baz'); + +// must be before .parse() since +// node's emit() is immediate + +program.on('--help', function(){ + console.log(' Examples:'); + console.log(''); + console.log(' $ custom-help --help'); + console.log(' $ custom-help -h'); + console.log(''); +}); + +program.parse(process.argv); + +console.log('stuff'); +``` + +yielding the following help output: + +``` + +Usage: custom-help [options] + +Options: + + -h, --help output usage information + -V, --version output the version number + -f, --foo enable some foo + -b, --bar enable some bar + -B, --baz enable some baz + +Examples: + + $ custom-help --help + $ custom-help -h + +``` + +## .prompt(msg, fn) + + Single-line prompt: + +```js +program.prompt('name: ', function(name){ + console.log('hi %s', name); +}); +``` + + Multi-line prompt: + +```js +program.prompt('description:', function(name){ + console.log('hi %s', name); +}); +``` + + Coercion: + +```js +program.prompt('Age: ', Number, function(age){ + console.log('age: %j', age); +}); +``` + +```js +program.prompt('Birthdate: ', Date, function(date){ + console.log('date: %s', date); +}); +``` + +## .password(msg[, mask], fn) + +Prompt for password without echoing: + +```js +program.password('Password: ', function(pass){ + console.log('got "%s"', pass); + process.stdin.destroy(); +}); +``` + +Prompt for password with mask char "*": + +```js +program.password('Password: ', '*', function(pass){ + console.log('got "%s"', pass); + process.stdin.destroy(); +}); +``` + +## .confirm(msg, fn) + + Confirm with the given `msg`: + +```js +program.confirm('continue? ', function(ok){ + console.log(' got %j', ok); +}); +``` + +## .choose(list, fn) + + Let the user choose from a `list`: + +```js +var list = ['tobi', 'loki', 'jane', 'manny', 'luna']; + +console.log('Choose the coolest pet:'); +program.choose(list, function(i){ + console.log('you chose %d "%s"', i, list[i]); +}); +``` + +## Links + + - [API documentation](http://visionmedia.github.com/commander.js/) + - [ascii tables](https://github.com/LearnBoost/cli-table) + - [progress bars](https://github.com/visionmedia/node-progress) + - [more progress bars](https://github.com/substack/node-multimeter) + - [examples](https://github.com/visionmedia/commander.js/tree/master/examples) + +## License + +(The MIT License) + +Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/index.js new file mode 100644 index 00000000..06ec1e4b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/index.js @@ -0,0 +1,2 @@ + +module.exports = require('./lib/commander'); \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/commander/lib/commander.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/lib/commander.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/commander/lib/commander.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/lib/commander.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/package.json new file mode 100644 index 00000000..91a37918 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/commander/package.json @@ -0,0 +1,84 @@ +{ + "_args": [ + [ + "commander@0.6.1", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade" + ] + ], + "_defaultsLoaded": true, + "_engineSupported": true, + "_from": "commander@0.6.1", + "_id": "commander@0.6.1", + "_inCache": true, + "_installable": true, + "_location": "/jade/commander", + "_nodeVersion": "v0.6.12", + "_npmUser": { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + }, + "_npmVersion": "1.1.0-3", + "_phantomChildren": {}, + "_requested": { + "name": "commander", + "raw": "commander@0.6.1", + "rawSpec": "0.6.1", + "scope": null, + "spec": "0.6.1", + "type": "version" + }, + "_requiredBy": [ + "/jade" + ], + "_resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "_shasum": "fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06", + "_shrinkwrap": null, + "_spec": "commander@0.6.1", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade", + "author": { + "email": "tj@vision-media.ca", + "name": "TJ Holowaychuk" + }, + "bugs": { + "url": "https://github.com/visionmedia/commander.js/issues" + }, + "dependencies": {}, + "description": "the complete solution for node.js command-line programs", + "devDependencies": { + "should": ">= 0.0.1" + }, + "directories": {}, + "dist": { + "shasum": "fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06", + "tarball": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" + }, + "engines": { + "node": ">= 0.4.x" + }, + "homepage": "https://github.com/visionmedia/commander.js#readme", + "keywords": [ + "command", + "option", + "parser", + "prompt", + "stdin" + ], + "main": "index", + "maintainers": [ + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + } + ], + "name": "commander", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/visionmedia/commander.js.git" + }, + "scripts": { + "test": "make test" + }, + "version": "0.6.1" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/.gitignore.orig b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/.gitignore.orig new file mode 100644 index 00000000..9303c347 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/.gitignore.orig @@ -0,0 +1,2 @@ +node_modules/ +npm-debug.log \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/.gitignore.rej b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/.gitignore.rej new file mode 100644 index 00000000..69244ff8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/.gitignore.rej @@ -0,0 +1,5 @@ +--- /dev/null ++++ .gitignore +@@ -0,0 +1,2 @@ ++node_modules/ ++npm-debug.log \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/.npmignore new file mode 100644 index 00000000..9303c347 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/.npmignore @@ -0,0 +1,2 @@ +node_modules/ +npm-debug.log \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/LICENSE new file mode 100644 index 00000000..432d1aeb --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/LICENSE @@ -0,0 +1,21 @@ +Copyright 2010 James Halliday (mail@substack.net) + +This project is free software released under the MIT/X11 license: + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/README.markdown b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/README.markdown new file mode 100644 index 00000000..b4dd75fd --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/README.markdown @@ -0,0 +1,54 @@ +mkdirp +====== + +Like `mkdir -p`, but in node.js! + +example +======= + +pow.js +------ + var mkdirp = require('mkdirp'); + + mkdirp('/tmp/foo/bar/baz', function (err) { + if (err) console.error(err) + else console.log('pow!') + }); + +Output + pow! + +And now /tmp/foo/bar/baz exists, huzzah! + +methods +======= + +var mkdirp = require('mkdirp'); + +mkdirp(dir, mode, cb) +--------------------- + +Create a new directory and any necessary subdirectories at `dir` with octal +permission string `mode`. + +If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. + +mkdirp.sync(dir, mode) +---------------------- + +Synchronously create a new directory and any necessary subdirectories at `dir` +with octal permission string `mode`. + +If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. + +install +======= + +With [npm](http://npmjs.org) do: + + npm install mkdirp + +license +======= + +MIT/X11 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/examples/pow.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/examples/pow.js new file mode 100644 index 00000000..e6924212 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/examples/pow.js @@ -0,0 +1,6 @@ +var mkdirp = require('mkdirp'); + +mkdirp('/tmp/foo/bar/baz', function (err) { + if (err) console.error(err) + else console.log('pow!') +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/examples/pow.js.orig b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/examples/pow.js.orig new file mode 100644 index 00000000..77414622 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/examples/pow.js.orig @@ -0,0 +1,6 @@ +var mkdirp = require('mkdirp'); + +mkdirp('/tmp/foo/bar/baz', 0755, function (err) { + if (err) console.error(err) + else console.log('pow!') +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/examples/pow.js.rej b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/examples/pow.js.rej new file mode 100644 index 00000000..81e7f431 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/examples/pow.js.rej @@ -0,0 +1,19 @@ +--- examples/pow.js ++++ examples/pow.js +@@ -1,6 +1,15 @@ +-var mkdirp = require('mkdirp').mkdirp; ++var mkdirp = require('../').mkdirp, ++ mkdirpSync = require('../').mkdirpSync; + + mkdirp('/tmp/foo/bar/baz', 0755, function (err) { + if (err) console.error(err) + else console.log('pow!') + }); ++ ++try { ++ mkdirpSync('/tmp/bar/foo/baz', 0755); ++ console.log('double pow!'); ++} ++catch (ex) { ++ console.log(ex); ++} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/index.js new file mode 100644 index 00000000..25f43adf --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/index.js @@ -0,0 +1,79 @@ +var path = require('path'); +var fs = require('fs'); + +module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; + +function mkdirP (p, mode, f) { + if (typeof mode === 'function' || mode === undefined) { + f = mode; + mode = 0777 & (~process.umask()); + } + + var cb = f || function () {}; + if (typeof mode === 'string') mode = parseInt(mode, 8); + p = path.resolve(p); + + fs.mkdir(p, mode, function (er) { + if (!er) return cb(); + switch (er.code) { + case 'ENOENT': + mkdirP(path.dirname(p), mode, function (er) { + if (er) cb(er); + else mkdirP(p, mode, cb); + }); + break; + + case 'EEXIST': + fs.stat(p, function (er2, stat) { + // if the stat fails, then that's super weird. + // let the original EEXIST be the failure reason. + if (er2 || !stat.isDirectory()) cb(er) + else cb(); + }); + break; + + default: + cb(er); + break; + } + }); +} + +mkdirP.sync = function sync (p, mode) { + if (mode === undefined) { + mode = 0777 & (~process.umask()); + } + + if (typeof mode === 'string') mode = parseInt(mode, 8); + p = path.resolve(p); + + try { + fs.mkdirSync(p, mode) + } + catch (err0) { + switch (err0.code) { + case 'ENOENT' : + var err1 = sync(path.dirname(p), mode) + if (err1) throw err1; + else return sync(p, mode); + break; + + case 'EEXIST' : + var stat; + try { + stat = fs.statSync(p); + } + catch (err1) { + throw err0 + } + if (!stat.isDirectory()) throw err0; + else return null; + break; + default : + throw err0 + break; + } + } + + return null; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/package.json new file mode 100644 index 00000000..c8451270 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/package.json @@ -0,0 +1,83 @@ +{ + "_args": [ + [ + "mkdirp@0.3.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade" + ] + ], + "_defaultsLoaded": true, + "_engineSupported": true, + "_from": "mkdirp@0.3.0", + "_id": "mkdirp@0.3.0", + "_inCache": true, + "_installable": true, + "_location": "/jade/mkdirp", + "_nodeVersion": "v0.4.12", + "_npmUser": { + "email": "mail@substack.net", + "name": "substack" + }, + "_npmVersion": "1.0.106", + "_phantomChildren": {}, + "_requested": { + "name": "mkdirp", + "raw": "mkdirp@0.3.0", + "rawSpec": "0.3.0", + "scope": null, + "spec": "0.3.0", + "type": "version" + }, + "_requiredBy": [ + "/jade" + ], + "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "_shasum": "1bbf5ab1ba827af23575143490426455f481fe1e", + "_shrinkwrap": null, + "_spec": "mkdirp@0.3.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\jade", + "author": { + "email": "mail@substack.net", + "name": "James Halliday", + "url": "http://substack.net" + }, + "bugs": { + "url": "https://github.com/substack/node-mkdirp/issues" + }, + "dependencies": {}, + "description": "Recursively mkdir, like `mkdir -p`", + "devDependencies": { + "tap": "0.0.x" + }, + "directories": {}, + "dist": { + "shasum": "1bbf5ab1ba827af23575143490426455f481fe1e", + "tarball": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" + }, + "engines": { + "node": "*" + }, + "homepage": "https://github.com/substack/node-mkdirp#readme", + "keywords": [ + "mkdir", + "directory" + ], + "license": "MIT/X11", + "main": "./index", + "maintainers": [ + { + "email": "mail@substack.net", + "name": "substack" + } + ], + "name": "mkdirp", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/substack/node-mkdirp.git" + }, + "scripts": { + "test": "tap test/*.js" + }, + "version": "0.3.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/chmod.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/chmod.js new file mode 100644 index 00000000..520dcb8e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/chmod.js @@ -0,0 +1,38 @@ +var mkdirp = require('../').mkdirp; +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +var ps = [ '', 'tmp' ]; + +for (var i = 0; i < 25; i++) { + var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + ps.push(dir); +} + +var file = ps.join('/'); + +test('chmod-pre', function (t) { + var mode = 0744 + mkdirp(file, mode, function (er) { + t.ifError(er, 'should not error'); + fs.stat(file, function (er, stat) { + t.ifError(er, 'should exist'); + t.ok(stat && stat.isDirectory(), 'should be directory'); + t.equal(stat && stat.mode & 0777, mode, 'should be 0744'); + t.end(); + }); + }); +}); + +test('chmod', function (t) { + var mode = 0755 + mkdirp(file, mode, function (er) { + t.ifError(er, 'should not error'); + fs.stat(file, function (er, stat) { + t.ifError(er, 'should exist'); + t.ok(stat && stat.isDirectory(), 'should be directory'); + t.end(); + }); + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/clobber.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/clobber.js new file mode 100644 index 00000000..0eb70998 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/clobber.js @@ -0,0 +1,37 @@ +var mkdirp = require('../').mkdirp; +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +var ps = [ '', 'tmp' ]; + +for (var i = 0; i < 25; i++) { + var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + ps.push(dir); +} + +var file = ps.join('/'); + +// a file in the way +var itw = ps.slice(0, 3).join('/'); + + +test('clobber-pre', function (t) { + console.error("about to write to "+itw) + fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.'); + + fs.stat(itw, function (er, stat) { + t.ifError(er) + t.ok(stat && stat.isFile(), 'should be file') + t.end() + }) +}) + +test('clobber', function (t) { + t.plan(2); + mkdirp(file, 0755, function (err) { + t.ok(err); + t.equal(err.code, 'ENOTDIR'); + t.end(); + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/mkdirp.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/mkdirp.js new file mode 100644 index 00000000..b07cd70c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/mkdirp.js @@ -0,0 +1,28 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('woo', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/perm.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/perm.js new file mode 100644 index 00000000..23a7abbd --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/perm.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('async perm', function (t) { + t.plan(2); + var file = '/tmp/' + (Math.random() * (1<<30)).toString(16); + + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); + +test('async root perm', function (t) { + mkdirp('/tmp', 0755, function (err) { + if (err) t.fail(err); + t.end(); + }); + t.end(); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/perm_sync.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/perm_sync.js new file mode 100644 index 00000000..f685f609 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/perm_sync.js @@ -0,0 +1,39 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('sync perm', function (t) { + t.plan(2); + var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json'; + + mkdirp.sync(file, 0755); + path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }); +}); + +test('sync root perm', function (t) { + t.plan(1); + + var file = '/tmp'; + mkdirp.sync(file, 0755); + path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/race.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/race.js new file mode 100644 index 00000000..96a04476 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/race.js @@ -0,0 +1,41 @@ +var mkdirp = require('../').mkdirp; +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('race', function (t) { + t.plan(4); + var ps = [ '', 'tmp' ]; + + for (var i = 0; i < 25; i++) { + var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + ps.push(dir); + } + var file = ps.join('/'); + + var res = 2; + mk(file, function () { + if (--res === 0) t.end(); + }); + + mk(file, function () { + if (--res === 0) t.end(); + }); + + function mk (file, cb) { + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + if (cb) cb(); + } + }) + }) + }); + } +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/rel.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/rel.js new file mode 100644 index 00000000..79858243 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/rel.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('rel', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var cwd = process.cwd(); + process.chdir('/tmp'); + + var file = [x,y,z].join('/'); + + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + process.chdir(cwd); + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/sync.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/sync.js new file mode 100644 index 00000000..e0e389de --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/sync.js @@ -0,0 +1,27 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('sync', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + var err = mkdirp.sync(file, 0755); + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/umask.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/umask.js new file mode 100644 index 00000000..64ccafe2 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/umask.js @@ -0,0 +1,28 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('implicit mode from umask', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + mkdirp(file, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0777 & (~process.umask())); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/umask_sync.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/umask_sync.js new file mode 100644 index 00000000..83cba560 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/node_modules/mkdirp/test/umask_sync.js @@ -0,0 +1,27 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('umask sync modes', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + var err = mkdirp.sync(file); + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, (0777 & (~process.umask()))); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/package.json new file mode 100644 index 00000000..64abb7a1 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/package.json @@ -0,0 +1,87 @@ +{ + "_args": [ + [ + "jade@0.26.3", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha" + ] + ], + "_from": "jade@0.26.3", + "_id": "jade@0.26.3", + "_inCache": true, + "_installable": true, + "_location": "/jade", + "_phantomChildren": {}, + "_requested": { + "name": "jade", + "raw": "jade@0.26.3", + "rawSpec": "0.26.3", + "scope": null, + "spec": "0.26.3", + "type": "version" + }, + "_requiredBy": [ + "/mocha" + ], + "_resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "_shasum": "8f10d7977d8d79f2f6ff862a81b0513ccb25686c", + "_shrinkwrap": null, + "_spec": "jade@0.26.3", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha", + "author": { + "email": "tj@vision-media.ca", + "name": "TJ Holowaychuk" + }, + "bin": { + "jade": "./bin/jade" + }, + "bugs": { + "url": "https://github.com/visionmedia/jade/issues" + }, + "component": { + "scripts": { + "jade": "runtime.js" + } + }, + "dependencies": { + "commander": "0.6.1", + "mkdirp": "0.3.0" + }, + "deprecated": "Jade has been renamed to pug, please install the latest version of pug instead of jade", + "description": "Jade template engine", + "devDependencies": { + "less": "*", + "markdown": "*", + "mocha": "*", + "should": "*", + "stylus": "*", + "uglify-js": "*", + "uubench": "*" + }, + "directories": {}, + "dist": { + "shasum": "8f10d7977d8d79f2f6ff862a81b0513ccb25686c", + "tarball": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz" + }, + "homepage": "https://github.com/visionmedia/jade#readme", + "main": "./index.js", + "maintainers": [ + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + } + ], + "man": [ + "./jade.1" + ], + "name": "jade", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/visionmedia/jade.git" + }, + "scripts": { + "prepublish": "npm prune" + }, + "version": "0.26.3" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/runtime.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/runtime.js new file mode 100644 index 00000000..0f549077 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/runtime.js @@ -0,0 +1,179 @@ + +jade = (function(exports){ +/*! + * Jade - runtime + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Lame Array.isArray() polyfill for now. + */ + +if (!Array.isArray) { + Array.isArray = function(arr){ + return '[object Array]' == Object.prototype.toString.call(arr); + }; +} + +/** + * Lame Object.keys() polyfill for now. + */ + +if (!Object.keys) { + Object.keys = function(obj){ + var arr = []; + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + arr.push(key); + } + } + return arr; + } +} + +/** + * Merge two attribute objects giving precedence + * to values in object `b`. Classes are special-cased + * allowing for arrays and merging/joining appropriately + * resulting in a string. + * + * @param {Object} a + * @param {Object} b + * @return {Object} a + * @api private + */ + +exports.merge = function merge(a, b) { + var ac = a['class']; + var bc = b['class']; + + if (ac || bc) { + ac = ac || []; + bc = bc || []; + if (!Array.isArray(ac)) ac = [ac]; + if (!Array.isArray(bc)) bc = [bc]; + ac = ac.filter(nulls); + bc = bc.filter(nulls); + a['class'] = ac.concat(bc).join(' '); + } + + for (var key in b) { + if (key != 'class') { + a[key] = b[key]; + } + } + + return a; +}; + +/** + * Filter null `val`s. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + +function nulls(val) { + return val != null; +} + +/** + * Render the given attributes object. + * + * @param {Object} obj + * @param {Object} escaped + * @return {String} + * @api private + */ + +exports.attrs = function attrs(obj, escaped){ + var buf = [] + , terse = obj.terse; + + delete obj.terse; + var keys = Object.keys(obj) + , len = keys.length; + + if (len) { + buf.push(''); + for (var i = 0; i < len; ++i) { + var key = keys[i] + , val = obj[key]; + + if ('boolean' == typeof val || null == val) { + if (val) { + terse + ? buf.push(key) + : buf.push(key + '="' + key + '"'); + } + } else if (0 == key.indexOf('data') && 'string' != typeof val) { + buf.push(key + "='" + JSON.stringify(val) + "'"); + } else if ('class' == key && Array.isArray(val)) { + buf.push(key + '="' + exports.escape(val.join(' ')) + '"'); + } else if (escaped && escaped[key]) { + buf.push(key + '="' + exports.escape(val) + '"'); + } else { + buf.push(key + '="' + val + '"'); + } + } + } + + return buf.join(' '); +}; + +/** + * Escape the given string of `html`. + * + * @param {String} html + * @return {String} + * @api private + */ + +exports.escape = function escape(html){ + return String(html) + .replace(/&(?!(\w+|\#\d+);)/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); +}; + +/** + * Re-throw the given `err` in context to the + * the jade in `filename` at the given `lineno`. + * + * @param {Error} err + * @param {String} filename + * @param {String} lineno + * @api private + */ + +exports.rethrow = function rethrow(err, filename, lineno){ + if (!filename) throw err; + + var context = 3 + , str = require('fs').readFileSync(filename, 'utf8') + , lines = str.split('\n') + , start = Math.max(lineno - context, 0) + , end = Math.min(lines.length, lineno + context); + + // Error context + var context = lines.slice(start, end).map(function(line, i){ + var curr = i + start + 1; + return (curr == lineno ? ' > ' : ' ') + + curr + + '| ' + + line; + }).join('\n'); + + // Alter exception message + err.path = filename; + err.message = (filename || 'Jade') + ':' + lineno + + '\n' + context + '\n\n' + err.message; + throw err; +}; + + return exports; + +})({}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/runtime.min.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/runtime.min.js new file mode 100644 index 00000000..1714efb0 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/runtime.min.js @@ -0,0 +1 @@ +jade=function(exports){Array.isArray||(Array.isArray=function(arr){return"[object Array]"==Object.prototype.toString.call(arr)}),Object.keys||(Object.keys=function(obj){var arr=[];for(var key in obj)obj.hasOwnProperty(key)&&arr.push(key);return arr}),exports.merge=function merge(a,b){var ac=a["class"],bc=b["class"];if(ac||bc)ac=ac||[],bc=bc||[],Array.isArray(ac)||(ac=[ac]),Array.isArray(bc)||(bc=[bc]),ac=ac.filter(nulls),bc=bc.filter(nulls),a["class"]=ac.concat(bc).join(" ");for(var key in b)key!="class"&&(a[key]=b[key]);return a};function nulls(val){return val!=null}return exports.attrs=function attrs(obj,escaped){var buf=[],terse=obj.terse;delete obj.terse;var keys=Object.keys(obj),len=keys.length;if(len){buf.push("");for(var i=0;i/g,">").replace(/"/g,""")},exports.rethrow=function rethrow(err,filename,lineno){if(!filename)throw err;var context=3,str=require("fs").readFileSync(filename,"utf8"),lines=str.split("\n"),start=Math.max(lineno-context,0),end=Math.min(lines.length,lineno+context),context=lines.slice(start,end).map(function(line,i){var curr=i+start+1;return(curr==lineno?" > ":" ")+curr+"| "+line}).join("\n");throw err.path=filename,err.message=(filename||"Jade")+":"+lineno+"\n"+context+"\n\n"+err.message,err},exports}({}); \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/test.jade b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/test.jade new file mode 100644 index 00000000..b3a89889 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/test.jade @@ -0,0 +1,7 @@ +p. + This is a large + body of text for + this tag. + + Nothing too + exciting. \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/testing/head.jade b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/testing/head.jade new file mode 100644 index 00000000..85154062 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/testing/head.jade @@ -0,0 +1,5 @@ +head + script(src='/jquery.js') + yield + if false + script(src='/jquery.ui.js') diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/testing/index.jade b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/testing/index.jade new file mode 100644 index 00000000..1032c5fa --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/testing/index.jade @@ -0,0 +1,22 @@ + +tag = 'p' +foo = 'bar' + +#{tag} value +#{tag}(foo='bar') value +#{foo ? 'a' : 'li'}(something) here + +mixin item(icon) + li + if attributes.href + a(attributes) + img.icon(src=icon) + block + else + span(attributes) + img.icon(src=icon) + block + +ul + +item('contact') Contact + +item(href='/contact') Contact diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/testing/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/testing/index.js new file mode 100644 index 00000000..226e8c01 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/testing/index.js @@ -0,0 +1,11 @@ + +/** + * Module dependencies. + */ + +var jade = require('../'); + +jade.renderFile('testing/index.jade', { pretty: true, debug: true, compileDebug: false }, function(err, str){ + if (err) throw err; + console.log(str); +}); \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/testing/layout.jade b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/testing/layout.jade new file mode 100644 index 00000000..6923cf15 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/testing/layout.jade @@ -0,0 +1,6 @@ +html + include head + script(src='/caustic.js') + script(src='/app.js') + body + block content \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/testing/user.jade b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/testing/user.jade new file mode 100644 index 00000000..3c636b7c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/testing/user.jade @@ -0,0 +1,7 @@ +h1 Tobi +p Is a ferret + +ul + li: a foo + li: a bar + li: a baz \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/testing/user.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/testing/user.js new file mode 100644 index 00000000..2ecc45ed --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jade/testing/user.js @@ -0,0 +1,27 @@ +function anonymous(locals, attrs, escape, rethrow) { +var attrs = jade.attrs, escape = jade.escape, rethrow = jade.rethrow; +var __jade = [{ lineno: 1, filename: "testing/user.jade" }]; +try { +var buf = []; +with (locals || {}) { +var interp; +__jade.unshift({ lineno: 1, filename: __jade[0].filename }); +__jade.unshift({ lineno: 1, filename: __jade[0].filename }); +buf.push('

Tobi'); +__jade.unshift({ lineno: undefined, filename: __jade[0].filename }); +__jade.shift(); +buf.push('

'); +__jade.shift(); +__jade.unshift({ lineno: 2, filename: __jade[0].filename }); +buf.push('

Is a ferret'); +__jade.unshift({ lineno: undefined, filename: __jade[0].filename }); +__jade.shift(); +buf.push('

'); +__jade.shift(); +__jade.shift(); +} +return buf.join(""); +} catch (err) { + rethrow(err, __jade[0].filename, __jade[0].lineno); +} +} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/CHANGELOG.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/CHANGELOG.md new file mode 100644 index 00000000..246ae80c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/CHANGELOG.md @@ -0,0 +1,1055 @@ +
+## [2.9.1](https://github.com/jshint/jshint/compare/2.9.1-rc3...v2.9.1) (2016-01-14) + +Following the revocation of version 2.9.0, we observed an extended "release +candidate" phase where we encouraged users to vet JSHint for undesirable +changes in behavior. During that time, we identified and resolved a number of +such regressions. This release comprises all changes from the release candidate +phase along with the improvements initially released as version 2.9.0. This +release does not itself contain any changes to the codebase. If you are +upgrading from version 2.8.0 or earlier, please refer to the +previously-published release notes for details on bug fixes and features. + + + +## [2.9.1-rc3](https://github.com/jshint/jshint/compare/2.9.1-rc2...v2.9.1-rc3) (2016-01-12) + + +### Bug Fixes + +* Do not require global USD for any envs ([3fa9ece](https://github.com/jshint/jshint/commit/3fa9ece)) + + + + +## [2.9.1-rc2](https://github.com/jshint/jshint/compare/2.9.1-rc1...v2.9.1-rc2) (2015-12-22) + + +### Bug Fixes + +* Abort in the presence of invalid config ([767c47d](https://github.com/jshint/jshint/commit/767c47d)) +* Allow ignoring W020 and W021 ([46db923](https://github.com/jshint/jshint/commit/46db923)), closes [#2761](https://github.com/jshint/jshint/issues/2761) +* Correct `unused` for function-scoped vars ([91fa9fc](https://github.com/jshint/jshint/commit/91fa9fc)) +* Disallow ambiguous configuration values ([eb54a4c](https://github.com/jshint/jshint/commit/eb54a4c)) +* Do not disable ES6 when `moz` is set ([97dfd90](https://github.com/jshint/jshint/commit/97dfd90)) +* Don't throw '(NaN% scanned)' ([903b698](https://github.com/jshint/jshint/commit/903b698)) + + + + +## [2.9.1-rc1](https://github.com/jshint/jshint/compare/2.9.0...v2.9.1-rc1) (2015-11-12) + +Version 2.9.0 was revoked shortly after its release due to a number of +regressions. Although the underlying issues have been resolved, we are +sensitive to the possibility that there may be still more; as mentioned in +2.9.0's release notes, the variable tracking system saw a significant +refactoring. + +In an effort to minimize friction with a new version, we're publishing a +release candidate and requesting feedback from early adopters. Please give it a +try in your projects and let us know about any surprising behavior! + +### Bug Fixes + +* `latedef` shouldn't warn when marking a var as exported ([c630994](https://github.com/jshint/jshint/commit/c630994)), closes [#2662](https://github.com/jshint/jshint/issues/2662) +* Add `File` and `FileList` to browser global variables ([7f2a729](https://github.com/jshint/jshint/commit/7f2a729)), closes [#2690](https://github.com/jshint/jshint/issues/2690) +* Allow comments and new lines after /* falls through */ ([3b1c925](https://github.com/jshint/jshint/commit/3b1c925)), closes [#2652](https://github.com/jshint/jshint/issues/2652) [#1660](https://github.com/jshint/jshint/issues/1660) +* Allow let and const to be in a block outside of a block ([84a9145](https://github.com/jshint/jshint/commit/84a9145)), closes [#2685](https://github.com/jshint/jshint/issues/2685) +* Always warn about missing "use strict" directive ([e85c2a1](https://github.com/jshint/jshint/commit/e85c2a1)), closes [#2668](https://github.com/jshint/jshint/issues/2668) +* Disallow incompatible option values ([72ba5ad](https://github.com/jshint/jshint/commit/72ba5ad)) +* Do not enable `newcap` within strict mode ([acaf3f7](https://github.com/jshint/jshint/commit/acaf3f7)) +* Don't throw W080 when the initializer starts with `undefined` ([0d87919](https://github.com/jshint/jshint/commit/0d87919)), closes [#2699](https://github.com/jshint/jshint/issues/2699) +* Don't warn that an exported function is used before it is defined. ([d0433d2](https://github.com/jshint/jshint/commit/d0433d2)), closes [#2658](https://github.com/jshint/jshint/issues/2658) +* Enforce Identifier restrictions lazily ([ceca549](https://github.com/jshint/jshint/commit/ceca549)) +* Global "use strict" regressions ([04b43d2](https://github.com/jshint/jshint/commit/04b43d2)), closes [#2657](https://github.com/jshint/jshint/issues/2657) [#2661](https://github.com/jshint/jshint/issues/2661) +* Support property assignment when destructure assigning ([b6df1f2](https://github.com/jshint/jshint/commit/b6df1f2)), closes [#2659](https://github.com/jshint/jshint/issues/2659) [#2660](https://github.com/jshint/jshint/issues/2660) +* Throw W119 instead of "Unexpected '`'" when using templates in ES5 mode. ([87064e8](https://github.com/jshint/jshint/commit/87064e8)) + +### Features + +* Support QUnit's global notOk ([73ac9b8](https://github.com/jshint/jshint/commit/73ac9b8)) + + + + +# [2.9.0](https://github.com/jshint/jshint/compare/2.8.0...v2.9.0) (2015-09-03) + +This release was a long time in the making, but it may not be the most exciting +version we've published. Most of the changes are internal refactorings that +were necessary to properly fix bugs. And fix bugs we did! Special thanks go to +Luke Page, the newest addition to the JSHint team. Luke is a maintainer of [the +Less CSS project](http://lesscss.org/), and he introduced himself to use by +overhauling JSHint's variable tracking logic. + +JSHint 3.0 is closer than ever. We're excited for the opportunity to break a +few things in order to make real strides forward. In fact, the hardest part +will be *limiting* ourselves (we don't want to make migrating to the new +version onerous). If you have any ideas along these lines, please submit them +on [the project's issue tracker](https://github.com/jshint/jshint/issues). +We'll mark them with [the label "Breaking +Change"](https://github.com/jshint/jshint/labels/Breaking%20Change), and as we +decide what's definitely "in" for 3.0, we'll add them to [the "v3.0.0" +milestone](https://github.com/jshint/jshint/milestones/v3.0.0). + +### Bug Fixes + +* Add `HTMLCollection` to browser environment. ([e92d375](https://github.com/jshint/jshint/commit/e92d375)), closes [#2443](https://github.com/jshint/jshint/issues/2443) +* Add `window.performance` to browser vars ([3ff1b05](https://github.com/jshint/jshint/commit/3ff1b05)), closes [#2461](https://github.com/jshint/jshint/issues/2461) +* Allow `__proto__` when using ES6 ([06b5764](https://github.com/jshint/jshint/commit/06b5764)), closes [#2371](https://github.com/jshint/jshint/issues/2371) +* Allow binary and octal numbers, and templates when using inline `esnext` ([b5ba7d6](https://github.com/jshint/jshint/commit/b5ba7d6)), closes [#2519](https://github.com/jshint/jshint/issues/2519) +* Allow default values in destructuring. ([04ace9a](https://github.com/jshint/jshint/commit/04ace9a)), closes [#1941](https://github.com/jshint/jshint/issues/1941) +* Allow destructuring in catch blocks parameter ([759644c](https://github.com/jshint/jshint/commit/759644c)), closes [#2526](https://github.com/jshint/jshint/issues/2526) +* Allow latedef in the initialiser of variable ([18f8775](https://github.com/jshint/jshint/commit/18f8775)), closes [#2628](https://github.com/jshint/jshint/issues/2628) +* Allow line breaking after yield if `asi: true` ([728c84b](https://github.com/jshint/jshint/commit/728c84b)), closes [#2530](https://github.com/jshint/jshint/issues/2530) +* Allow non-identifier PropertyNames in object destructuring. ([aa8a023](https://github.com/jshint/jshint/commit/aa8a023)), closes [#2467](https://github.com/jshint/jshint/issues/2467) +* Allow object destructuring assignment ([ae48966](https://github.com/jshint/jshint/commit/ae48966)), closes [#2269](https://github.com/jshint/jshint/issues/2269) +* Allow semicolon as string value in JSON ([ab73e01](https://github.com/jshint/jshint/commit/ab73e01)) +* block scope vars dont redefine in blocks ([9e74025](https://github.com/jshint/jshint/commit/9e74025)), closes [#2438](https://github.com/jshint/jshint/issues/2438) +* Catch blocks are no longer functions ([8a864f3](https://github.com/jshint/jshint/commit/8a864f3)), closes [#2510](https://github.com/jshint/jshint/issues/2510) +* Change imported variables to be constants ([94a6779](https://github.com/jshint/jshint/commit/94a6779)), closes [#2428](https://github.com/jshint/jshint/issues/2428) +* Classes are not hoisted ([87378cc](https://github.com/jshint/jshint/commit/87378cc)), closes [#1934](https://github.com/jshint/jshint/issues/1934) +* Correct exported AssignmentExpressions ([282b40e](https://github.com/jshint/jshint/commit/282b40e)) +* Correctly parse empty destructuring ([97c188b](https://github.com/jshint/jshint/commit/97c188b)), closes [#2513](https://github.com/jshint/jshint/issues/2513) +* Correctly parse exported generators ([0604816](https://github.com/jshint/jshint/commit/0604816)), closes [#2472](https://github.com/jshint/jshint/issues/2472) +* Declare `func` as a property of `state` ([3be8d36](https://github.com/jshint/jshint/commit/3be8d36)) +* default params can't reference future arg ([bc2741c](https://github.com/jshint/jshint/commit/bc2741c)), closes [#2422](https://github.com/jshint/jshint/issues/2422) +* Define "build" module ([2f98f91](https://github.com/jshint/jshint/commit/2f98f91)) +* Define npm scripts for each test suite ([5c33ded](https://github.com/jshint/jshint/commit/5c33ded)) +* Do not accept empty values for directives ([a5bfefb](https://github.com/jshint/jshint/commit/a5bfefb)) +* Do not crash if the forin check is block ([d1cbe84](https://github.com/jshint/jshint/commit/d1cbe84)), closes [#1920](https://github.com/jshint/jshint/issues/1920) +* Do not mark `ignore` directives as special ([f14c262](https://github.com/jshint/jshint/commit/f14c262)) +* Do not parse arrays which contain `for` as array comprehensions. ([d70876c](https://github.com/jshint/jshint/commit/d70876c)), closes [#1413](https://github.com/jshint/jshint/issues/1413) +* Don't crash on uncomplete typeof expression ([a32cf50](https://github.com/jshint/jshint/commit/a32cf50)), closes [#2506](https://github.com/jshint/jshint/issues/2506) +* Don't warn when Array() is used without 'new'. ([5f88aa7](https://github.com/jshint/jshint/commit/5f88aa7)), closes [#1987](https://github.com/jshint/jshint/issues/1987) +* Dont crash when testing x == keyword if eqnull is on ([6afd373](https://github.com/jshint/jshint/commit/6afd373)), closes [#2587](https://github.com/jshint/jshint/issues/2587) +* Dont warn twice in var redeclaration ([e32e17b](https://github.com/jshint/jshint/commit/e32e17b)) +* handle no 'home' environment variables ([946af3e](https://github.com/jshint/jshint/commit/946af3e)) +* Honor `ignore` directive more consistently ([0971608](https://github.com/jshint/jshint/commit/0971608)) +* Ignore directive should ignore max line length for comments ([f2f871a](https://github.com/jshint/jshint/commit/f2f871a)), closes [#1575](https://github.com/jshint/jshint/issues/1575) +* Immediately-invoked arrow funcs' param doesn't need parentheses ([d261071](https://github.com/jshint/jshint/commit/d261071)), closes [#2351](https://github.com/jshint/jshint/issues/2351) +* Improve support for `__proto__` identifier ([925a983](https://github.com/jshint/jshint/commit/925a983)) +* It is not un-necessary to assign undefined in a loop ([e8ce9bf](https://github.com/jshint/jshint/commit/e8ce9bf)), closes [#1191](https://github.com/jshint/jshint/issues/1191) +* labeled break and continue semantics ([da66f70](https://github.com/jshint/jshint/commit/da66f70)) +* Labels shadowing within a function is a syntax error ([124e00f](https://github.com/jshint/jshint/commit/124e00f)), closes [#2419](https://github.com/jshint/jshint/issues/2419) +* Load JSHint from package root ([92acdd1](https://github.com/jshint/jshint/commit/92acdd1)) +* Make `strict: func` have precedence over env options. ([d138db8](https://github.com/jshint/jshint/commit/d138db8)) +* Param destructuring should not effect max params ([9d021ee](https://github.com/jshint/jshint/commit/9d021ee)), closes [#2183](https://github.com/jshint/jshint/issues/2183) +* Params cannot always have the same name ([9f2b64c](https://github.com/jshint/jshint/commit/9f2b64c)), closes [#2492](https://github.com/jshint/jshint/issues/2492) +* Prevent regressions in bug fix ([477d3ad](https://github.com/jshint/jshint/commit/477d3ad)) +* Regular args can come after args with default ([f2a59f1](https://github.com/jshint/jshint/commit/f2a59f1)), closes [#1779](https://github.com/jshint/jshint/issues/1779) +* Relax restriction on `module` option ([56c19a5](https://github.com/jshint/jshint/commit/56c19a5)) +* Remove bad error E048 in for loop init ([a8fc16b](https://github.com/jshint/jshint/commit/a8fc16b)), closes [#1862](https://github.com/jshint/jshint/issues/1862) +* Remove module import declaration ([1749ac0](https://github.com/jshint/jshint/commit/1749ac0)) +* Report an error when a necessary semicolon is missing ([45d8e3e](https://github.com/jshint/jshint/commit/45d8e3e)), closes [#1327](https://github.com/jshint/jshint/issues/1327) +* report line numbers of destructured params ([7d25451](https://github.com/jshint/jshint/commit/7d25451)), closes [#2494](https://github.com/jshint/jshint/issues/2494) +* Report loopfunc for all function types ([4d4cfcd](https://github.com/jshint/jshint/commit/4d4cfcd)), closes [#2153](https://github.com/jshint/jshint/issues/2153) +* singleGroups: Allow grouping for integers ([8c265ca](https://github.com/jshint/jshint/commit/8c265ca)) +* Support `new.target` ([2fbf621](https://github.com/jshint/jshint/commit/2fbf621)) +* The `__iterator__` property is deprecated. ([7780613](https://github.com/jshint/jshint/commit/7780613)) +* Unify assign operation checks. ([06eb1d2](https://github.com/jshint/jshint/commit/06eb1d2)), closes [#2589](https://github.com/jshint/jshint/issues/2589) +* use of params is not capturing loopfunc ([827e335](https://github.com/jshint/jshint/commit/827e335)) +* Warn about using `var` inside `for (...)` when `varstmt: true` ([f1ab638](https://github.com/jshint/jshint/commit/f1ab638)), closes [#2627](https://github.com/jshint/jshint/issues/2627) + +### Features + +* Add `esversion` option ([cf5a699](https://github.com/jshint/jshint/commit/cf5a699)), closes [#2124](https://github.com/jshint/jshint/issues/2124) +* Add pending to Jasmine's globals ([02790b9](https://github.com/jshint/jshint/commit/02790b9)), closes [#2154](https://github.com/jshint/jshint/issues/2154) +* Add Window constructor to browser vars ([7f5806f](https://github.com/jshint/jshint/commit/7f5806f)), closes [#2132](https://github.com/jshint/jshint/issues/2132) +* Option to assume strict mode ([8de8247](https://github.com/jshint/jshint/commit/8de8247)), closes [#924](https://github.com/jshint/jshint/issues/924) +* Support multiple files in the exclude option ([bd4ec25](https://github.com/jshint/jshint/commit/bd4ec25)) + + + + +# [2.8.0](https://github.com/jshint/jshint/compare/2.7.0...2.8.0) (2015-05-31) + + +### Bug Fixes + +* add the "fetch" global for "browser" environment ([b3b41c8](https://github.com/jshint/jshint/commit/b3b41c8)), closes [#2355](https://github.com/jshint/jshint/issues/2355) +* Allow lexer to communicate completion ([a093f78](https://github.com/jshint/jshint/commit/a093f78)) +* Distinguish between directive and mode ([51059bd](https://github.com/jshint/jshint/commit/51059bd)) +* Don't throw "Duplicate class method" with computed method names ([ab12dfb](https://github.com/jshint/jshint/commit/ab12dfb)), closes [#2350](https://github.com/jshint/jshint/issues/2350) +* Ignore unused arrow-function parameters if unused: vars ([2ea9cb0](https://github.com/jshint/jshint/commit/2ea9cb0)), closes [#2345](https://github.com/jshint/jshint/issues/2345) +* Move helper methods to `state` object ([678da76](https://github.com/jshint/jshint/commit/678da76)) +* parse `const` declarations in ForIn/Of loops ([2b673d9](https://github.com/jshint/jshint/commit/2b673d9)), closes [#2334](https://github.com/jshint/jshint/issues/2334) [#2335](https://github.com/jshint/jshint/issues/2335) +* Parse semicolons in class bodies ([58c8e64](https://github.com/jshint/jshint/commit/58c8e64)) +* Prevent regression in `enforceall` ([6afcde4](https://github.com/jshint/jshint/commit/6afcde4)) +* Relax singleGroups restrictions: arrow fns ([4a4f522](https://github.com/jshint/jshint/commit/4a4f522)) +* Relax singleGroups restrictions: IIFEs ([9f55160](https://github.com/jshint/jshint/commit/9f55160)) +* Reset generator flag for each method definition ([2444a04](https://github.com/jshint/jshint/commit/2444a04)), closes [#2388](https://github.com/jshint/jshint/issues/2388) [#2389](https://github.com/jshint/jshint/issues/2389) + +### Features + +* Implement `module` option ([290280c](https://github.com/jshint/jshint/commit/290280c)) +* support destructuring in ForIn/Of loops, lint bad ForIn/Of LHS ([c0edd9f](https://github.com/jshint/jshint/commit/c0edd9f)), closes [#2341](https://github.com/jshint/jshint/issues/2341) + + + + +# [2.7.0](https://github.com/jshint/jshint/compare/2.6.3...2.7.0) (2015-04-10) + + +### Bug Fixes + +* Accept `get` and `set` as ID properties ([2ad235c](https://github.com/jshint/jshint/commit/2ad235c)) +* allow trailing comma in ArrayBindingPattern ([3477933](https://github.com/jshint/jshint/commit/3477933)), closes [#2222](https://github.com/jshint/jshint/issues/2222) +* allow typeof symbol === "symbol" ([7f7aac2](https://github.com/jshint/jshint/commit/7f7aac2)), closes [#2241](https://github.com/jshint/jshint/issues/2241) [#2242](https://github.com/jshint/jshint/issues/2242) +* Correctly enforce maxparams:0 ([011364e](https://github.com/jshint/jshint/commit/011364e)) +* default to empty string in src/cli.js loadIgnores ([0eeba14](https://github.com/jshint/jshint/commit/0eeba14)) +* disallow 'lone' rest operator in identifier() ([dd08f85](https://github.com/jshint/jshint/commit/dd08f85)), closes [#2222](https://github.com/jshint/jshint/issues/2222) +* emit I003 more carefully and less annoyingly ([757fb73](https://github.com/jshint/jshint/commit/757fb73)), closes [#2251](https://github.com/jshint/jshint/issues/2251) +* export all names for var/let/const declarations ([3ce1267](https://github.com/jshint/jshint/commit/3ce1267)), closes [#2248](https://github.com/jshint/jshint/issues/2248) [#2253](https://github.com/jshint/jshint/issues/2253) [#2252](https://github.com/jshint/jshint/issues/2252) +* Incorrect 'Unclosed string' when the closing quote is the first character after a newline ([b804e65](https://github.com/jshint/jshint/commit/b804e65)), closes [#1532](https://github.com/jshint/jshint/issues/1532) [#1532](https://github.com/jshint/jshint/issues/1532) [#1319](https://github.com/jshint/jshint/issues/1319) +* predefine HTMLTemplateElement in browser ([231557a](https://github.com/jshint/jshint/commit/231557a)), closes [#2246](https://github.com/jshint/jshint/issues/2246) +* Prevent incorrect warnings for relations ([64f85f3](https://github.com/jshint/jshint/commit/64f85f3)) +* Relax restrictions on `singleGroups` ([896bf82](https://github.com/jshint/jshint/commit/896bf82)) +* templates are operands, not operators ([162dee6](https://github.com/jshint/jshint/commit/162dee6)), closes [#2223](https://github.com/jshint/jshint/issues/2223) [#2224](https://github.com/jshint/jshint/issues/2224) + +### Features + +* add `varstmt` enforcement option to disallow use of VariableStatements ([59396f7](https://github.com/jshint/jshint/commit/59396f7)), closes [#1549](https://github.com/jshint/jshint/issues/1549) + + + + +## [2.6.3](https://github.com/jshint/jshint/compare/2.6.2...2.6.3) (2015-02-28) + + +### Bug Fixes + +* parse trailing comma in ObjectBindingPattern ([7a2b713](https://github.com/jshint/jshint/commit/7a2b713)), closes [#2220](https://github.com/jshint/jshint/issues/2220) + + + + +## [2.6.2](https://github.com/jshint/jshint/compare/2.6.1...2.6.2) (2015-02-28) + + +### Bug Fixes + +* Disable `futurehostile` option by default ([3cbd41f](https://github.com/jshint/jshint/commit/3cbd41f)) +* Make let variables in the closure shadow predefs ([cfd2e0b](https://github.com/jshint/jshint/commit/cfd2e0b)) + + + + +## [2.6.1](https://github.com/jshint/jshint/compare/2.6.0...2.6.1) (2015-02-27) + + +### Bug Fixes + +* Allow object-literals within template strings ([4f08b74](https://github.com/jshint/jshint/commit/4f08b74)), closes [#2082](https://github.com/jshint/jshint/issues/2082) +* Correct behavior of `singleGroups` ([6003c83](https://github.com/jshint/jshint/commit/6003c83)) +* Correct token reported by `singleGroups` ([bc857f3](https://github.com/jshint/jshint/commit/bc857f3)) +* Disambiguate argument ([d75ef69](https://github.com/jshint/jshint/commit/d75ef69)) +* Do not crash on improper use of `delete` ([35df49f](https://github.com/jshint/jshint/commit/35df49f)) +* ES6 modules respect undef and unused ([438d928](https://github.com/jshint/jshint/commit/438d928)) +* Fix false positives in 'nocomma' option ([33612f8](https://github.com/jshint/jshint/commit/33612f8)) +* Handle multi-line tokens after return or yield ([5c9c7fd](https://github.com/jshint/jshint/commit/5c9c7fd)), closes [#1814](https://github.com/jshint/jshint/issues/1814) [#2142](https://github.com/jshint/jshint/issues/2142) +* Miss xdescribe/xit/context/xcontext in mocha ([8fe6610](https://github.com/jshint/jshint/commit/8fe6610)) +* Parse nested templates ([3da1eaf](https://github.com/jshint/jshint/commit/3da1eaf)), closes [#2151](https://github.com/jshint/jshint/issues/2151) [#2152](https://github.com/jshint/jshint/issues/2152) +* Permit "eval" as object key ([b5f5d5d](https://github.com/jshint/jshint/commit/b5f5d5d)) +* Prevent beginning array from being confused for JSON ([813d97a](https://github.com/jshint/jshint/commit/813d97a)) +* Refactor `doFunction` ([06b5d40](https://github.com/jshint/jshint/commit/06b5d40)) +* Remove quotmark linting for NoSubstTemplates ([7e80490](https://github.com/jshint/jshint/commit/7e80490)) +* Remove tautological condition ([f0bff58](https://github.com/jshint/jshint/commit/f0bff58)) +* remove unused var ([e69acfe](https://github.com/jshint/jshint/commit/e69acfe)), closes [#2156](https://github.com/jshint/jshint/issues/2156) +* Simulate class scope for class expr names ([ac98a24](https://github.com/jshint/jshint/commit/ac98a24)) +* Support more cases of ES6 module usage ([776ed69](https://github.com/jshint/jshint/commit/776ed69)), closes [#2118](https://github.com/jshint/jshint/issues/2118) [#2143](https://github.com/jshint/jshint/issues/2143) +* Templates can not be directives ([20ff670](https://github.com/jshint/jshint/commit/20ff670)) +* Unfollowable path in lexer. ([065961a](https://github.com/jshint/jshint/commit/065961a)) + +### Features + +* Implement new option `futurehostile` ([da52aa0](https://github.com/jshint/jshint/commit/da52aa0)) +* parse and lint tagged template literals ([4816dbd](https://github.com/jshint/jshint/commit/4816dbd)), closes [#2000](https://github.com/jshint/jshint/issues/2000) + + + + +# [2.6.0](https://github.com/jshint/jshint/compare/2.5.11...2.6.0) (2015-01-21) + + +### Bug Fixes + +* Add missing globals to browser environment ([32f02e0](https://github.com/jshint/jshint/commit/32f02e0)) +* Allow array, grouping and string form to follow spread operator in function call args. ([437655a](https://github.com/jshint/jshint/commit/437655a)), closes [#2060](https://github.com/jshint/jshint/issues/2060) [#2060](https://github.com/jshint/jshint/issues/2060) +* Correct bug in enforcement of `singleGroups` ([5fedda6](https://github.com/jshint/jshint/commit/5fedda6)), closes [#2064](https://github.com/jshint/jshint/issues/2064) +* Remove dead code ([3b5d94a](https://github.com/jshint/jshint/commit/3b5d94a)), closes [#883](https://github.com/jshint/jshint/issues/883) +* Remove dead code for parameter parsing ([a1d5817](https://github.com/jshint/jshint/commit/a1d5817)) +* Revert unnecessary commit ([a70bbda](https://github.com/jshint/jshint/commit/a70bbda)) + +### Features + +* `elision` option to relax "Extra comma" warnings ([cbfc827](https://github.com/jshint/jshint/commit/cbfc827)), closes [#2062](https://github.com/jshint/jshint/issues/2062) +* Add new Jasmine 2.1 globals to "jasmine" option ([343c45e](https://github.com/jshint/jshint/commit/343c45e)), closes [#2023](https://github.com/jshint/jshint/issues/2023) +* Support generators in class body ([ee348c3](https://github.com/jshint/jshint/commit/ee348c3)) + + +### BREAKING CHANGES + +* In projects which do not enable ES3 mode, it is now an error by default to use elision array elements, +also known as empty array elements (such as `[1, , 3, , 5]`) + + + + +## [2.5.11](https://github.com/jshint/jshint/compare/2.5.10...2.5.11) (2014-12-18) + + + + + +## [2.5.10](https://github.com/jshint/jshint/compare/2.5.9...2.5.10) (2014-11-06) + + + + + +## [2.5.9](https://github.com/jshint/jshint/compare/2.5.8...2.5.9) (2014-11-06) + + + + + +## [2.5.8](https://github.com/jshint/jshint/compare/2.5.7...2.5.8) (2014-10-29) + + + + + +## [2.5.7](https://github.com/jshint/jshint/compare/2.5.6...2.5.7) (2014-10-28) + + + + + +## [2.5.6](https://github.com/jshint/jshint/compare/2.5.5...2.5.6) (2014-09-21) + + + + + +## [2.5.5](https://github.com/jshint/jshint/compare/2.5.4...2.5.5) (2014-08-24) + + + + + +## [2.5.4](https://github.com/jshint/jshint/compare/2.5.3...2.5.4) (2014-08-18) + + + + + +## [2.5.3](https://github.com/jshint/jshint/compare/2.5.2...2.5.3) (2014-08-08) + + + + + +## [2.5.2](https://github.com/jshint/jshint/compare/2.5.1...2.5.2) (2014-07-05) + + + + + +## [2.5.1](https://github.com/jshint/jshint/compare/2.5.0...2.5.1) (2014-05-16) + + + + + +# [2.5.0](https://github.com/jshint/jshint/compare/2.4.4...2.5.0) (2014-04-02) + + + + + +## [2.4.4](https://github.com/jshint/jshint/compare/2.4.3...2.4.4) (2014-02-21) + + + + + +## [2.4.3](https://github.com/jshint/jshint/compare/2.4.2...2.4.3) (2014-01-26) + + + + + +## [2.4.2](https://github.com/jshint/jshint/compare/2.4.1...2.4.2) (2014-01-21) + + + + + +## [2.4.1](https://github.com/jshint/jshint/compare/2.4.0...2.4.1) (2014-01-03) + + + + + +# [2.4.0](https://github.com/jshint/jshint/compare/2.3.0...2.4.0) (2013-12-25) + + + + + +# [2.3.0](https://github.com/jshint/jshint/compare/2.2.0...2.3.0) (2013-10-21) + + + + + +# [2.2.0](https://github.com/jshint/jshint/compare/2.1.11...2.2.0) (2013-10-18) + + + + + +## [2.1.11](https://github.com/jshint/jshint/compare/2.1.10...2.1.11) (2013-09-20) + + + + + +## [2.1.10](https://github.com/jshint/jshint/compare/2.1.9...2.1.10) (2013-08-15) + +Thanks to [Dave Camp](https://twitter.com/campd) JSHint now supports list +comprehensions, a declarative way of transforming a list: + + [ for (i of [ 1, 2, 3 ]) i + 2 ]; // Returns [ 3, 4, 5 ] + +Note: SpiderMonkey currently implements a slightly different syntax for list +comprehensions which is also supported by JSHint. + +### Patch summary + +* [ae96e5c](https://github.com/jshint/jshint/commit/ae96e5c1e0fb6a80921c8e9bd1eba8f3c96eaaee) + Fixed [#1220](https://github.com/jshint/jshint/issues/1220/): Add typed array + option, implied by 'node' option +* [27bd241](https://github.com/jshint/jshint/commit/27bd241c17e3bedb4e4b66f44e2612e6d4ef0041) + Fixed [#1222](https://github.com/jshint/jshint/issues/1222/): Update + PhantomJS globals to 1.7 API +* [6c5a085](https://github.com/jshint/jshint/commit/6c5a08553f1fcb2bbd89220b539aa0568ff99481) + Fixed [#1216](https://github.com/jshint/jshint/issues/1216/): Support for + array comprehensions using for-of (closed #1095) +* [83374ad](https://github.com/jshint/jshint/commit/83374adb3dad7c5bf708a8f6488d023d65232660) + No issue: Remove /stable/ subdirectories +* [1a3c47f](https://github.com/jshint/jshint/commit/1a3c47fb1278159e9db2a13e41f442f92e08a099) + Fixed [#1174](https://github.com/jshint/jshint/issues/1174/): Fixed a false + positive 'destructuring assignment' warning (closed #1177) +* [303c535](https://github.com/jshint/jshint/commit/303c53555d36651285a1decc7faacd94f400b7e8) + Fixed [#1183](https://github.com/jshint/jshint/issues/1183/): Fix an issue + with debugger warning pointing to a wrong line in some cases +* [a0b7181](https://github.com/jshint/jshint/commit/a0b7181578c2f07058bd1ff4f11fc622056005a3) + No issue: Add helper programs to apply and land patches from GitHub +* [9c2b8dd](https://github.com/jshint/jshint/commit/9c2b8dd55bcc131420b6326cc56cc2863d0b268f) + Fixed [#1194](https://github.com/jshint/jshint/issues/1194/): Don't look for + a config when input is /dev/stdin +* [a17ae9e](https://github.com/jshint/jshint/commit/a17ae9ed1e01ba465487b97066fdc2ba65ce109a) + Fixed [#1189](https://github.com/jshint/jshint/issues/1189/): Support spaces + in /*global ... */ +* [dcc1251](https://github.com/jshint/jshint/commit/dcc125147455556c8fbc4d51ed59b8afa7174ff3) + Fixed [#1197](https://github.com/jshint/jshint/issues/1197/): Make Rhino + wrapper to be more consistent with NPM package. +* [96ea1a8](https://github.com/jshint/jshint/commit/96ea1a88f19681f35ca534045aa6e990a39713ca) + No issue: Split make.js into bin/build and bin/changelog +* [4ac19fa](https://github.com/jshint/jshint/commit/4ac19fa53016dfc8686d0ec882da2269aee1e964) + No issue: Move JSHint config into package.json + +**Thanks** to Rob Wu, Ryan Cannon, Dave Camp, Amir Livneh, Josh Hoff, Nikolay +S. Frantsev, Lapo Luchini, Lukas Domnick for sending patches! + + + +## [2.1.9](https://github.com/jshint/jshint/compare/2.1.8...2.1.9) (2013-08-02) + + + + + +## [2.1.8](https://github.com/jshint/jshint/compare/2.1.7...2.1.8) (2013-08-01) + + + + + +## [2.1.7](https://github.com/jshint/jshint/compare/2.1.6...2.1.7) (2013-07-29) + + + + + +## [2.1.6](https://github.com/jshint/jshint/compare/2.1.5...2.1.6) (2013-07-29) + +**UPDATE:** We just published another version, 2.1.7, which contains only one +bugfix: [#1199](https://github.com/jshint/jshint/pull/1199). + +In this release we added two new arguments to our CLI program: `exclude` which +allows you to exclude directories from linting and `prereq` which allows you to +specify a file containing declarations of the global variables used throughout +your project. In addition to that, we added support for stdin. JSHint now +follows a UNIX convention where if a given file path is a dash (`-`) the the +program reads from stdin. + +We also extended our ES6 coverage by adding support for `yield` statements and +`import/export` declarations. JSHint is still **the only** linter that can +parse most ES6 and Mozilla-specific JavaScript code. + +For more changes, see the patch summary below. + +* [004dc61](https://github.com/jshint/jshint/commit/004dc619b263449ab8e05635428f0dabc80ae9b2) + Fixed [#1178](https://github.com/jshint/jshint/issues/1178/): Changed + 'predef' to 'globals' in the example .jshintrc +* [cd69f13](https://github.com/jshint/jshint/commit/cd69f1390bd40d02b6d8dc06abddc4d744310981) + Fixed [#1187](https://github.com/jshint/jshint/issues/1187/): Explicitly + define contents of our NPM package +* [c83caf3](https://github.com/jshint/jshint/commit/c83caf33a3c867e557039433b25bb57a5be6ae5f) + Fixed [#1166](https://github.com/jshint/jshint/issues/1166/): Tweaks to + import/export support +* [537dcbd](https://github.com/jshint/jshint/commit/537dcbd4be49f5b52ede08e98b23e49bbc5e4bbc) + Fixed [#1164](https://github.com/jshint/jshint/issues/1164/): Add codes to + errors generated by quit() +* [6aed7ed](https://github.com/jshint/jshint/commit/6aed7ede44f16dc5195831fa6d85ba9c75b40394) + Fixed [#1155](https://github.com/jshint/jshint/issues/1155/): Use shelljs + option in make.js +* [87df213](https://github.com/jshint/jshint/commit/87df213d19dffc75a30f4929d9302ab2e653e332) + Fixed [#1153](https://github.com/jshint/jshint/issues/1153/): Moved E037 and + E038 to the warnings section and changed their message. +* [dd060c7](https://github.com/jshint/jshint/commit/dd060c7373971cac2a965deee38d72ff5214d417) + Fixed [#779](https://github.com/jshint/jshint/issues/779/): Add support for + !pattern in the .jshintignore files +* [5de09c4](https://github.com/jshint/jshint/commit/5de09c434a62f9a63086959fd8ddb8d8d7369d50) + Fixed [#696](https://github.com/jshint/jshint/issues/696/): Add support for + `--exclude` arg +* [ee3d598](https://github.com/jshint/jshint/commit/ee3d59830b0cea0d7cb814e8ac654f25d9f38f03) + Fixed [#809](https://github.com/jshint/jshint/issues/809/): Added short + options to bin/jshint where it made sense +* [b937895](https://github.com/jshint/jshint/commit/b9378950554277c9b67ad01ab537d2ca94e59294) + Fixed [#810](https://github.com/jshint/jshint/issues/810/): Made --reporter + description in -h more straightforward +* [1c70362](https://github.com/jshint/jshint/commit/1c703625e26f95f1a77263e52dbdbcc494eeed01) + Fixed [#839](https://github.com/jshint/jshint/issues/839/): Add support for + prereq files +* [28dae4b](https://github.com/jshint/jshint/commit/28dae4baf2286d6044e96851b0acf52945262bb4) + Fixed [#741](https://github.com/jshint/jshint/issues/741/): expose loadConfig + from CLI +* [b39e2ac](https://github.com/jshint/jshint/commit/b39e2acea8ad53e9d288e1ec94d829dce26dfd5e) + Followup [#687](https://github.com/jshint/jshint/issues/687/): + eqnull +* [90b733b](https://github.com/jshint/jshint/commit/90b733bcf2c13e196039d994b8d374acbd0b5c28) + Followup [#687](https://github.com/jshint/jshint/issues/687/): Use '-' as a + marker for stding +* [68db0d8](https://github.com/jshint/jshint/commit/68db0d82d11426072a28409a1101ea180fa957eb) + Fixed [#687](https://github.com/jshint/jshint/issues/687/): Allow input via + stdin +* [5924b2a](https://github.com/jshint/jshint/commit/5924b2aa5aafdf8fede525b7156bd1962f824a14) + Fixed [#1157](https://github.com/jshint/jshint/issues/1157/): Add support for + import/export. +* [729cfd7](https://github.com/jshint/jshint/commit/729cfd718cf11585bd03713d314d1367d92ac7d7) + Fixed [#1154](https://github.com/jshint/jshint/issues/1154/): Add MouseEvent + and CustomEvent browser globals +* [9782fc8](https://github.com/jshint/jshint/commit/9782fc812703e60cfee8acae347aab4dd065844b) + Fixed [#1134](https://github.com/jshint/jshint/issues/1134/): Catch reserved + words in ES3 mode. +* [87e3e6c](https://github.com/jshint/jshint/commit/87e3e6ccfb3c37417a56946dce5904742bd43311) + Fixed [#1138](https://github.com/jshint/jshint/issues/1138/): Count ternary + and or operators for complexity +* [66f3e4c](https://github.com/jshint/jshint/commit/66f3e4c13434de9c9951dfff084b438db9ed525f) + Fixed [#1133](https://github.com/jshint/jshint/issues/1133/): Make shelljs + imply node. +* [79dc812](https://github.com/jshint/jshint/commit/79dc812bfd7510e196d811653db406d2001e159f) + Fixed [#704](https://github.com/jshint/jshint/issues/704/): Add config file + support for the Rhino wrappers. +* [88c862d](https://github.com/jshint/jshint/commit/88c862df3dba9e2cfa1e44d4be909099d8306c97) + Fixed [#1109](https://github.com/jshint/jshint/issues/1109/): Parse yield + expressions. + +**Thanks** to Terry Roe, Sindre Sorhus, Thomas Boyt, Nikolay S. Frantsev, +XhmikosR, Jacob Rask, Kevin Chu, Tim Ruffles, Stephen Mathieson, Lukas Domnick, +usrbincc for sending patches! + + +## [2.1.5](https://github.com/jshint/jshint/compare/2.1.4...2.1.5) (2013-07-27) + + + + + +## [2.1.4](https://github.com/jshint/jshint/compare/2.1.3...2.1.4) (2013-06-24) + + + + + +## [2.1.3](https://github.com/jshint/jshint/compare/2.1.2...2.1.3) (2013-06-03) + + + + + +## [2.1.2](https://github.com/jshint/jshint/compare/2.1.1...2.1.2) (2013-05-22) + + + + + +## [2.1.1](https://github.com/jshint/jshint/compare/2.1.0...2.1.1) (2013-05-21) + + + + + +# [2.1.0](https://github.com/jshint/jshint/compare/2.0.1...2.1.0) (2013-05-21) + +JSHint 2.1.0 is out. This releases adds support for ES6 `class` syntax and +fixes some issues with our parser. + +* Added support for ES6 `class` syntax. + ([#1048](https://github.com/jshint/jshint/pull/1048)) +* Added support for error code in the Checkstyle reporter. + ([#1088](https://github.com/jshint/jshint/pull/1088)) +* Added support for `do` statement bodies that are not block + statements. + ([#1062](https://github.com/jshint/jshint/pull/1062)) +* Fixed issues with JSHint not parsing comma expressions correctly. + ([#1084](https://github.com/jshint/jshint/pull/1084)) +* Fixed a bug with W080 no longer pointing to relevant identifiers. + ([#1070](https://github.com/jshint/jshint/pull/1070)) +* Fixed a potential issue with Node 0.10 and Windows. + ([#1065](https://github.com/jshint/jshint/pull/1065)) +* Fixed issues with JSHint not parsing assignments in `switch` + conditionals. + ([#1064](https://github.com/jshint/jshint/pull/1064)) +* Fixed an issue with `esnext` and `moz` modes turning off the + default `es5` mode. + ([#1068](https://github.com/jshint/jshint/issues/1068)) + +**Thanks** to usrbincc, James Allardice, Iraê Carvalho, Nick Schonning and +jklein for sending patches! + + +## [2.0.1](https://github.com/jshint/jshint/compare/2.0.0...2.0.1) (2013-05-08) + + + + + +# [2.0.0](https://github.com/jshint/jshint/compare/1.1.0...2.0.0) (2013-05-08) + +**WARNING:** This release introduces backwards incompatible changes. + +JSHint 2.0.0 is out! This version hits a pretty big milestone for the project: +this is the first JSHint release for which I'm not the biggest contributor. I +personally believe this fact validates JSHint as a successful *open source* +project. And I'm extremely thankful to all you who file bug reports and send +patches—you're all awesome. + +#### EcmaScript 5 + +The first and foremost: starting with this version JSHint will assume ES5 as +the default environment. Before, JSHint was checking all the code per ES3 +specification with an option to enable ES5 mode. Now ES5 mode is the default +mode and if you want to check your code against the ES3 specification (useful +when developing for super old browsers such as Internet Explorer 6) you will +have to use `es3:true`. + +Special thanks to Rick Waldron for championing this change. + +#### Partial support for Mozilla JavaScript extensions and ES6 + +Thanks to our newest core contributor, Bernard Pratz, JSHint now has partial +support for Mozilla JavaScript extensions (`moz` option) and ES6 (`esnext` +option): + +* Destructuring assignment +* `const` +* `let` blocks and expressions +* Generators and iterators +* List comprehension +* Try/catch filters and multiple catch blocks +* Concise method declaration +* `for ... of` loops +* Fat arrows + +We have more patches in queue that add support for classes and other nifty ES6 +things. Stay tuned! + +#### CLI + +* JSHint now looks for `.jshintrc` in the directory being linted. + ([#833](https://github.com/jshint/jshint/issues/833)) +* Various cross-platform fixes for our Node CLI module. +* New public method for the CLI export that allows third-parties to hook into + the file resolution logic. + ([#741](https://github.com/jshint/jshint/issues/741)) + +#### General + +* For non-Node system we upgraded to the latest version of Browserify. This + resolves some performance issues we had with Rhino. +* Added SVG globals to the browser environment. +* Option `smarttabs` now ignores mixed tabs and spaces within single- + and multi-line comments. +* Added a new pragma to unignore a warning: + + /*jshint -W096 */ + + // All warnings about keys producing unexpected results will + // be ignored here. + + /*jshint +W096 */ + + // But not here. + +* JSHint now ignores unrecognized JSLint options. +* Fixed a bug where `indent:false` was triggering indentation warnings. + ([#1035](https://github.com/jshint/jshint/issues/1035)) +* Fixed a regression bug where `unused` was not behaving correctly. + ([#996](https://github.com/jshint/jshint/issues/996)) +* Plus lots and lots of other, smaller bug fixes. + +#### New rapid release schedule + +And last but not least: starting with this version, I'm switching JSHint to a +more rapid release schedule. This simply means that I will be publishing new +versions of JSHint more often. I will try my best to follow +[semver](http://semver.org/) recommendations and ship working software. But as +our license says, no guarantees. + +**Thanks** to Bernarnd Pratz, Michelle Steigerwalt, Yuya Tanaka, Matthew +Flaschen, Juan Pablo Buritica, Matt Cheely, Steve Mosley, Stephen Sorensen, +Rick Waldron, Hugues Malphettes, Jeff Thompson, xzyfer, Lee Leathers, croensch, +Steven Benner, James Allardice, Sindre Sorhus, Jordan Harband, Stuart Knightley +and Kevin Locke for sending patches! + + +# [1.1.0](https://github.com/jshint/jshint/compare/1.0.0...1.1.0) (2013-03-06) + + + + + +# [1.0.0](https://github.com/jshint/jshint/compare/1.0.0-rc4...1.0.0) (2013-01-30) + + + + + +# [1.0.0-rc4](https://github.com/jshint/jshint/compare/1.0.0-rc3...1.0.0-rc4) (2013-01-18) + +JSHint 1.0.0 Release Candidate 4 is now out: + +* Fixes a bug with JSHint not allowing reserved words to be used as property + names. ([#768](https://github.com/jshint/jshint/issues/768)) +* Fixes a bug with JSHint lexer not recognizing `/` after `]`. + ([#803](https://github.com/jshint/jshint/issues/803)) +* Fixes a bug with JSHint not recognizing `predef` when its value is an array, + and not an object. ([#800](https://github.com/jshint/jshint/issues/800)) +* Fixes a bug with JSHint crashing on unrecoverable syntax errors such as + `if (name <) {}`. ([#818](https://github.com/jshint/jshint/issues/818)) + +Here's how you can install this release candidate: + + $ npm install https://github.com/jshint/jshint/archive/1.0.0-rc4.tar.gz + +For full 1.0.0 changelog please see our +[1.0.0 RC1 announcement](http://jshint.com/blog/2012-12-29/1-0-0-rc1/). + + +# [1.0.0-rc3](https://github.com/jshint/jshint/compare/1.0.0-rc2...1.0.0-rc3) (2013-01-02) + +JSHint 1.0.0 Release Candidate 3 is now out: + +* Fixes a bug with JSHint not allowing `new` and `debugger` to + appear after a comma. ([#793](https://github.com/jshint/jshint/issues/793)) +* Fixes a bug with JSHint not collecting file recursively. + ([#794](https://github.com/jshint/jshint/issues/794)) +* Fixes a bug with JSHint crashing when future reserved words are used as + identifiers. +* Adds a newline separator between files in the CLI output. +* Fixes a bug with JSHint not parsing `/*global global:true */` correctly. + ([#795](https://github.com/jshint/jshint/issues/795)) +* Fixes a bug with JSHint crashing when files can't be found. + +Here's how you can install this release candidate: + + $ npm install https://github.com/jshint/jshint/archive/1.0.0-rc3.tar.gz + +For full 1.0.0 changelog please see our [1.0.0 RC1 +announcement](http://jshint.com/blog/2012-12-29/1-0-0-rc1/). + + +# [1.0.0-rc2](https://github.com/jshint/jshint/compare/1.0.0-rc1...1.0.0-rc2) (2012-12-31) + +JSHint 1.0.0 Release Candidate 2 is now out: + +* Fixes a bug with JSHint not recognizing regular expressions after commas. + ([#792](https://github.com/jshint/jshint/pull/792)) +* Fixes two failed tests on Windows. + ([#790](https://github.com/jshint/jshint/pull/790)) +* Fixes a bug with JSHint builder failing when there is no dist/ directory. + ([#788](https://github.com/jshint/jshint/pull/788)) +* Adds JSHint binary to *package.json* so that JSHint could be, once again, + installed and used globally as a CLI program. + ([#787](https://github.com/jshint/jshint/pull/787)) + +Here's how you can install this release candidate: + + $ npm install https://github.com/jshint/jshint/archive/1.0.0-rc2.tar.gz + +For full 1.0.0 changelog please see our +[1.0.0 RC1 announcement](http://jshint.com/blog/2012-12-29/1-0-0-rc1/). + +Big thanks to Samuel Cole for submitting patches and finding bugs! + + +# 1.0.0-rc1 (2012-12-31) + +After three months and 100+ commits, JSHint 1.0.0 is ready for release. This +is the biggest release for JSHint so far, and that's why I've decided to run it +through a release candidate phase first. I tried my best to make it as +backwards compatible as possible, but there might be a small number of +incompatibilities depending on how you use JSHint. Please keep that in mind and +test your integration before updating to 1.0.0. + +One of the biggest changes is that node-jshint is now part of the main JSHint +project, which means that there will no longer be lag time between releasing a +new version and publishing it on NPM. **Node and NPM is now the main and +recommended way of using JSHint on all platforms.** This also means that +starting with "1.0.0", JSHint will start using the +[node-semver](https://github.com/isaacs/node-semver) versioning system instead +of the old rN system. + +In addition, this version drops support for non-ES5 environments. This means +that JavaScript engines that don't support the ES5 syntax will not even parse +JSHint's source code. (For example, the online interface for JSHint will not +work in older versions of IE.) + +I'm very excited to finally release this version and I encourage everyone to +try out the release candidate and report any bugs and issues you encounter. The +full changelog is provided below, with examples and links to relevant issues. + +#### Parser + +This version has a completely rewritten lexer. Since it's no longer a giant +regexp, the new lexer is more robust and easier to read. I'd like to thank the +authors of Esprima and Traceur since I borrowed some pieces from them. + +* This version **adds support for Unicode identifiers!** + ([#301](https://github.com/jshint/jshint/issues/301) and + [#716](https://github.com/jshint/jshint/issues/716/)) + + var π = 3.1415; + +* Adds support for the comma operator. ([#56](https://github.com/jshint/jshint/issues/56/)) + JSHint now parses code like the following (note the comma in the middle + expression): + + for (var i = 0, ch; ch = channels[i], i < channels.length; i++) { + // ... + } + +* Improves support for numbers. JSHint now understands numbers with leading + dots (e.g. .12) and doesn't generate false positives on invalid numbers (e.g. + 099). In case of invalid numbers the parser still parses them but marks as + malformed and generates a nice little warning. + +* Adds support for more relaxed JSHint directive syntax. JSHint now recognizes + space between `/*` and jshint/global/etc. and allows you to use single-line + comments for directives in addition to multi-line comments: + + Before: + /*jshint strict:true */ + + Now: + /*jshint strict:true */ + /* jshint strict:true */ (note the space) + //jshint strict:true + // jshint strict:true + + One potentially breaking change is that all lists inside JSHint directives + must be separated by commas from now on. So `/*jshint strict:true undef:true + */` won't fly anymore but `/*jshint strict:true, undef:true */` will (note + the comma). + +* Adds better parser for regular expressions. Previously, JSHint would check + the grammar of regular expressions using its own internal logic. Now, JSHint + compiles the parsed expressions using the native RegExp object to check + for grammar errors. + +* Adds support for a defensive semicolon before `[`. (Ticket + [#487](https://github.com/jshint/jshint/issues/487/)) + +* Adds support for unclosed multi-line strings and removes warnings about + unnecessary escaping for `\u` and `\x` in strings. + ([#494](https://github.com/jshint/jshint/issues/494/)) + +Bug fixes: + +* Fixes a bug with JSHint not warning about reserved words being used as + variable and function declaration identifiers. (Ticket + [#744](https://github.com/jshint/jshint/issues/744/)) + +* Fixes a bug with JSHint generating a false positive *Missing whitespace...* + warning on trailing commas. + ([#363](https://github.com/jshint/jshint/issues/363/)) + +* Fixes a bug with JSHint not being able to parse regular expressions preceded + by *typeof* (e.g. `typeof /[a-z]/`) and, in some cases, \*=, /=, etc. (e.g. + `if (x /= 2) { ... }`). + ([#657](https://github.com/jshint/jshint/issues/657/)) + +#### General + +* This version adds a unique numeric code to every warning and error message + produced by JSHint. That means that you can now **ignore any warning** + produced by JSHint even when there is no corresponding option for it. You can + do that using the special minus (-) operator. For example, here's how you + ignore all messages about trailing decimal points (W047): + + /*jshint -W047 */ + + or + + JSHINT(src, { "-W047": true }); + + Keep in mind that this syntax can't be used to ignore errors. + +* Due to popular demand, this version splits *indent* and *white* options + meaning that *indent* won't imply *white* anymore. + ([#667](https://github.com/jshint/jshint/issues/667/)) + +* Changes *node* option to not assume that all programs must be running in + strict mode. ([#721](https://github.com/jshint/jshint/issues/721/)) + +* Adds new globals for the *browser* option: Element and Uint8ClampedArray. + ([#707](https://github.com/jshint/jshint/issues/707/) and + [#766](https://github.com/jshint/jshint/issues/766/)) + +* Adds new global for the *node* option: DataView. + ([#773](https://github.com/jshint/jshint/issues/773/) and + [#774](https://github.com/jshint/jshint/issues/774/)) + +* Removes option *onecase*. + +* **Adds new directive: exported**. Use `/* exported ... ` for global variables + that are defined in the current file but used elsewhere to prevent + unnecessary *X is defined but never used* warnings. As before, you need to + declare those variables as global in the other files. + + ([#726](https://github.com/jshint/jshint/issues/726/) and + [#659](https://github.com/jshint/jshint/issues/659/)) + +* Removes a warning about missing *break* before *default* when *default* is + the first switch statement + ([#490](https://github.com/jshint/jshint/issues/490/)): + + switch (name) { + default: // No warning here + doSomething(); + break; + case "JSHint": + doSomethingElse(); + } + +* Improves support for [future reserved + keywords](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Reserved_Words#Words_reserved_for_possible_future_use). + JSHint now properly recognizes future reserved keywords both for ES3 and ES5 + environments with their corresponding rules. + ([#674](https://github.com/jshint/jshint/issues/674/)) + +* Changes behavior for *hasOwnProperty* + ([#770](https://github.com/jshint/jshint/issues/770/)): + + var hasOwnProperty = ...; // No warning + var obj = { hasOwnProperty: ... }; // Warning + obj.hasOwnProperty = ...; // Warning + obj['hasOwnProperty'] = ...; // Warning + +* Adds ability to disable option *unused* per function! + ([#639](https://github.com/jshint/jshint/issues/639/)) + + // jshint unused:true + var a; // Warning + + function foo(b) { // No warning + // jshint unused:false + return 1; + } + + foo(); + +Bug fixes: + +* Adds *scope* property to critical errors. + ([#714](https://github.com/jshint/jshint/issues/714/)) +* Fixes a regression bug with option *predef* making all global variables + writeable. ([#665](https://github.com/jshint/jshint/issues/665/)) +* Fixes a bug with JSHint not warning about potential typos on `return o.a = + 1`. ([#670](https://github.com/jshint/jshint/issues/670/)) +* Fixes a bug with *implied* property containing false positive data when + option *undef* is off. ([#668](https://github.com/jshint/jshint/issues/668/)) + + +#### CLI + +* This version **removes support for the JavaScriptCore shell** due to its + limited API. Note that this doesn't mean that JSHint no longer works in + Safari, it simply means that we removed the ability to use jshint via the + command line JSC shell. + +* This version also **removes support for Windows Script Host**. WSH support + was initially added due to Node not working well on Windows but, thanks to + Microsoft engineers, this is no longer true. So everyone is encouraged to use + JSHint with Node. + +* This version relies on ES5 syntax, so if you use JSHint with Rhino, please + make sure you have the latest version: 1.7R4. + +This version includes several improvements to the Node version of JSHint: + +* Adds a new flag, `--verbose`, that changes output to display message codes: + + $ jshint --verbose my.js + my.js: line 7, col 23, Extra comma. (...) (W070) + +* Makes `--config` raise an error if it can't find provided file or if the file + is invalid JSON. ([#691](https://github.com/jshint/jshint/issues/691/)) + +Bug fixes: + +* Fixes a bug with `.jshintignore` globbing not working properly. + ([#777](https://github.com/jshint/jshint/issues/777/) and + [#692](https://github.com/jshint/jshint/issues/692/)) + +* Fixes a bug with JSHint skipping over files with no extensions. + ([#690](https://github.com/jshint/jshint/issues/690/)) + + +#### What's next? + +I plan to test this release candidate for about a week before marking it as +stable and publishing on NPM. And, at the same time, I will be updating the +documentation and the [jshint.com](http://jshint.com/) website. If you notice +any bugs or unexpected backwards-incompatible changes, please file a bug. + +**RC3 is out:** [JSHint 1.0.0 RC3](http://jshint.com/blog/2013-01-01/1-0-0-rc3/). + +Here's how you can install this release candidate: + + $ npm install https://github.com/jshint/jshint/archive/1.0.0-rc1.tar.gz + +For Rhino wrapper, you will need to clone our repo and build jshint-rhino: + + $ node make.js build + $ rhino dist/jshint-rhino.js ... + +#### Contributors + +Thanks to Bernhard K. Weisshuhn, James Allardice, Mike MacCana, Stephen Fry, +Steven Olmsted, Leith Abdulla, Eric Promislow and Vlad Gurdiga for submitting +patches! diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/LICENSE new file mode 100644 index 00000000..0e247b19 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/LICENSE @@ -0,0 +1,20 @@ +Copyright 2012 Anton Kovalyov (http://jshint.com) + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/README.md new file mode 100644 index 00000000..10ec3e69 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/README.md @@ -0,0 +1,111 @@ +# JSHint, A Static Code Analysis Tool for JavaScript + +\[ [Use it online](http://jshint.com/) • +[Docs](http://jshint.com/docs/) • [FAQ](http://jshint.com/docs/faq) • +[Install](http://jshint.com/install/) • +[Contribute](http://jshint.com/contribute/) • +[Blog](http://jshint.com/blog/) • [Twitter](https://twitter.com/jshint/) \] + +[![NPM version](https://img.shields.io/npm/v/jshint.svg?style=flat)](https://www.npmjs.com/package/jshint) +[![Linux Build Status](https://img.shields.io/travis/jshint/jshint/master.svg?style=flat&label=Linux%20build)](https://travis-ci.org/jshint/jshint) +[![Windows Build status](https://img.shields.io/appveyor/ci/jshint/jshint/master.svg?style=flat&label=Windows%20build)](https://ci.appveyor.com/project/jshint/jshint/branch/master) +[![Dependency Status](https://img.shields.io/david/jshint/jshint.svg?style=flat)](https://david-dm.org/jshint/jshint) +[![devDependency Status](https://img.shields.io/david/dev/jshint/jshint.svg?style=flat)](https://david-dm.org/jshint/jshint#info=devDependencies) +[![Coverage Status](https://img.shields.io/coveralls/jshint/jshint.svg?style=flat)](https://coveralls.io/r/jshint/jshint?branch=master) + +JSHint is a community-driven tool to detect errors and potential problems in +JavaScript code and to enforce your team's coding conventions. It is very +flexible so you can easily adjust it to your particular coding guidelines and +the environment you expect your code to execute in. JSHint is open source and +will always stay this way. + +## Our goal + +The goal of this project is to help JavaScript developers write complex programs +without worrying about typos and language gotchas. + +Any code base eventually becomes huge at some point, and simple mistakes—that +would not show themselves when written—can become show stoppers and waste +hours of debugging. And this is when static code analysis tools come into play +and help developers to spot such problems. JSHint scans a program written in +JavaScript and reports about commonly made mistakes and potential bugs. The +potential problem could be a syntax error, a bug due to implicit type +conversion, a leaking variable or something else. + +Only 15% of all programs linted on [jshint.com](http://jshint.com) pass the +JSHint checks. In all other cases, JSHint finds some red flags that could've +been bugs or potential problems. + +Please note, that while static code analysis tools can spot many different kind +of mistakes, it can't detect if your program is correct, fast or has memory +leaks. You should always combine tools like JSHint with unit and functional +tests as well as with code reviews. + +## Reporting a bug + +To report a bug simply create a +[new GitHub Issue](https://github.com/jshint/jshint/issues/new) and describe +your problem or suggestion. We welcome all kinds of feedback regarding +JSHint including but not limited to: + + * When JSHint doesn't work as expected + * When JSHint complains about valid JavaScript code that works in all browsers + * When you simply want a new option or feature + +Before reporting a bug look around to see if there are any open or closed tickets +that cover your issue. And remember the wisdom: pull request > bug report > tweet. + +## Who uses JSHint? + +Engineers from these companies and projects use JSHint: + +* [Mozilla](https://www.mozilla.org/) +* [Wikipedia](https://wikipedia.org/) +* [Facebook](https://facebook.com/) +* [Twitter](https://twitter.com/) +* [Bootstrap](http://getbootstrap.com/) +* [Disqus](https://disqus.com/) +* [Medium](https://medium.com/) +* [Yahoo!](https://yahoo.com/) +* [SmugMug](http://smugmug.com/) +* [jQuery](http://jquery.com/) +* [PDF.js](http://mozilla.github.io/pdf.js) +* [Coursera](http://coursera.com/) +* [Adobe Brackets](http://brackets.io/) +* [Apache Cordova](http://cordova.io/) +* [RedHat](http://redhat.com/) +* [SoundCloud](http://soundcloud.com/) +* [Nodejitsu](http://nodejitsu.com/) +* [Yelp](https://yelp.com/) +* [Voxer](http://voxer.com/) +* [EnyoJS](http://enyojs.com/) +* [QuickenLoans](http://quickenloans.com/) +* [oDesk](http://www.odesk.com/) +* [Cloud9](http://c9.io/) +* [CodeClimate](https://codeclimate.com/) +* [Pandoo TEK](http://pandootek.com/) +* [Zendesk](http://zendesk.com/) +* [Apache CouchDB](http://couchdb.apache.org/) + +And many more! + +## License + +Most files are published using [the standard MIT Expat +license](https://www.gnu.org/licenses/license-list.html#Expat). One file, +however, is provided under a slightly modified version of that license. The +so-called [JSON license](https://www.gnu.org/licenses/license-list.html#JSON) +is a non-free license, and unfortunately, we can't change it due to historical +reasons. This license is included as an in-line within the file it concerns. + +## The JSHint Team + +JSHint is currently maintained by [Rick Waldron](https://github.com/rwaldron/), +[Caitlin Potter](https://github.com/caitp/), [Mike +Sherov](https://github.com/mikesherov/), [Mike +Pennisi](https://github.com/jugglinmike/), and [Luke +Page](https://github.com/lukeapage). + +## Thank you! + +We really appreciate all kinds of feedback and contributions. Thanks for using and supporting JSHint! diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/bin/apply b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/bin/apply new file mode 100644 index 00000000..35724fe6 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/bin/apply @@ -0,0 +1,6 @@ +#!/usr/bin/env node + +var shjs = require("shelljs"); +var url = "https://github.com/jshint/jshint/pull/" + process.argv[2] + ".diff"; + +shjs.exec('curl "' + url + '" | git apply'); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/bin/build b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/bin/build new file mode 100644 index 00000000..e5ae13a4 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/bin/build @@ -0,0 +1,38 @@ +#!/usr/bin/env node +/*jshint shelljs:true */ + +"use strict"; + +var path = require("path"); +var build = require("../scripts/build"); +require("shelljs/make"); + +var distDir = path.join(__dirname, "../dist"); + +if (!test("-e", distDir)) + mkdir(distDir); + +build("web", function(err, version, src) { + if (err) { + console.error(err); + process.exit(1); + } + + src.to(distDir + "/jshint.js"); + console.log("Built: " + version + " (web)"); +}); + +build("rhino", function(err, version, src) { + var dest; + + if (err) { + console.error(err); + process.exit(1); + } + + dest = distDir + "/jshint-rhino.js"; + chmod("+x", dest); + + src.to(dest); + console.log("Built: " + version + " (Rhino)"); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/bin/jshint b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/bin/jshint new file mode 100644 index 00000000..f56105fd --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/bin/jshint @@ -0,0 +1,3 @@ +#!/usr/bin/env node + +require("../src/cli.js").interpret(process.argv); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/bin/land b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/bin/land new file mode 100644 index 00000000..4ce15fec --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/bin/land @@ -0,0 +1,36 @@ +#!/usr/bin/env node + +"use strict"; + +var url = "https://github.com/jshint/jshint/pull/" + process.argv[2] + ".patch"; +var https = require("https"); +var shjs = require("shelljs"); +var opts = require("url").parse(url); +var msg = process.argv[3]; + +opts.rejectUnauthorized = false; +opts.agent = new https.Agent(opts); + +https.get(opts, succ).on("error", err); + +function succ(res) { + if (res.statusCode !== 200) + return void console.log("error:", res.statusCode); + + var data = ""; + res.on("data", function (chunk) { + data += chunk.toString(); + }); + + res.on("end", function () { + data = data.split("\n"); + data = data[1].replace(/^From\:\s/, ""); + data = data.replace(/"/g, ""); + + shjs.exec("git commit -s --author=\"" + data + "\" --message=\"" + msg + "\""); + }); +} + +function err(res) { + console.log("error:", res.message); +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/data/ascii-identifier-data.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/data/ascii-identifier-data.js new file mode 100644 index 00000000..00b5c644 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/data/ascii-identifier-data.js @@ -0,0 +1,22 @@ +var identifierStartTable = []; + +for (var i = 0; i < 128; i++) { + identifierStartTable[i] = + i === 36 || // $ + i >= 65 && i <= 90 || // A-Z + i === 95 || // _ + i >= 97 && i <= 122; // a-z +} + +var identifierPartTable = []; + +for (var i = 0; i < 128; i++) { + identifierPartTable[i] = + identifierStartTable[i] || // $, _, A-Z, a-z + i >= 48 && i <= 57; // 0-9 +} + +module.exports = { + asciiIdentifierStartTable: identifierStartTable, + asciiIdentifierPartTable: identifierPartTable +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/data/non-ascii-identifier-part-only.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/data/non-ascii-identifier-part-only.js new file mode 100644 index 00000000..979a7aa3 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/data/non-ascii-identifier-part-only.js @@ -0,0 +1,5 @@ +var str = '768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,1155,1156,1157,1158,1159,1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1471,1473,1474,1476,1477,1479,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1648,1750,1751,1752,1753,1754,1755,1756,1759,1760,1761,1762,1763,1764,1767,1768,1770,1771,1772,1773,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1809,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,2027,2028,2029,2030,2031,2032,2033,2034,2035,2070,2071,2072,2073,2075,2076,2077,2078,2079,2080,2081,2082,2083,2085,2086,2087,2089,2090,2091,2092,2093,2137,2138,2139,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2304,2305,2306,2307,2362,2363,2364,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2385,2386,2387,2388,2389,2390,2391,2402,2403,2406,2407,2408,2409,2410,2411,2412,2413,2414,2415,2433,2434,2435,2492,2494,2495,2496,2497,2498,2499,2500,2503,2504,2507,2508,2509,2519,2530,2531,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2561,2562,2563,2620,2622,2623,2624,2625,2626,2631,2632,2635,2636,2637,2641,2662,2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2677,2689,2690,2691,2748,2750,2751,2752,2753,2754,2755,2756,2757,2759,2760,2761,2763,2764,2765,2786,2787,2790,2791,2792,2793,2794,2795,2796,2797,2798,2799,2817,2818,2819,2876,2878,2879,2880,2881,2882,2883,2884,2887,2888,2891,2892,2893,2902,2903,2914,2915,2918,2919,2920,2921,2922,2923,2924,2925,2926,2927,2946,3006,3007,3008,3009,3010,3014,3015,3016,3018,3019,3020,3021,3031,3046,3047,3048,3049,3050,3051,3052,3053,3054,3055,3073,3074,3075,3134,3135,3136,3137,3138,3139,3140,3142,3143,3144,3146,3147,3148,3149,3157,3158,3170,3171,3174,3175,3176,3177,3178,3179,3180,3181,3182,3183,3202,3203,3260,3262,3263,3264,3265,3266,3267,3268,3270,3271,3272,3274,3275,3276,3277,3285,3286,3298,3299,3302,3303,3304,3305,3306,3307,3308,3309,3310,3311,3330,3331,3390,3391,3392,3393,3394,3395,3396,3398,3399,3400,3402,3403,3404,3405,3415,3426,3427,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439,3458,3459,3530,3535,3536,3537,3538,3539,3540,3542,3544,3545,3546,3547,3548,3549,3550,3551,3570,3571,3633,3636,3637,3638,3639,3640,3641,3642,3655,3656,3657,3658,3659,3660,3661,3662,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3761,3764,3765,3766,3767,3768,3769,3771,3772,3784,3785,3786,3787,3788,3789,3792,3793,3794,3795,3796,3797,3798,3799,3800,3801,3864,3865,3872,3873,3874,3875,3876,3877,3878,3879,3880,3881,3893,3895,3897,3902,3903,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964,3965,3966,3967,3968,3969,3970,3971,3972,3974,3975,3981,3982,3983,3984,3985,3986,3987,3988,3989,3990,3991,3993,3994,3995,3996,3997,3998,3999,4000,4001,4002,4003,4004,4005,4006,4007,4008,4009,4010,4011,4012,4013,4014,4015,4016,4017,4018,4019,4020,4021,4022,4023,4024,4025,4026,4027,4028,4038,4139,4140,4141,4142,4143,4144,4145,4146,4147,4148,4149,4150,4151,4152,4153,4154,4155,4156,4157,4158,4160,4161,4162,4163,4164,4165,4166,4167,4168,4169,4182,4183,4184,4185,4190,4191,4192,4194,4195,4196,4199,4200,4201,4202,4203,4204,4205,4209,4210,4211,4212,4226,4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4239,4240,4241,4242,4243,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4957,4958,4959,5906,5907,5908,5938,5939,5940,5970,5971,6002,6003,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6109,6112,6113,6114,6115,6116,6117,6118,6119,6120,6121,6155,6156,6157,6160,6161,6162,6163,6164,6165,6166,6167,6168,6169,6313,6432,6433,6434,6435,6436,6437,6438,6439,6440,6441,6442,6443,6448,6449,6450,6451,6452,6453,6454,6455,6456,6457,6458,6459,6470,6471,6472,6473,6474,6475,6476,6477,6478,6479,6576,6577,6578,6579,6580,6581,6582,6583,6584,6585,6586,6587,6588,6589,6590,6591,6592,6600,6601,6608,6609,6610,6611,6612,6613,6614,6615,6616,6617,6679,6680,6681,6682,6683,6741,6742,6743,6744,6745,6746,6747,6748,6749,6750,6752,6753,6754,6755,6756,6757,6758,6759,6760,6761,6762,6763,6764,6765,6766,6767,6768,6769,6770,6771,6772,6773,6774,6775,6776,6777,6778,6779,6780,6783,6784,6785,6786,6787,6788,6789,6790,6791,6792,6793,6800,6801,6802,6803,6804,6805,6806,6807,6808,6809,6912,6913,6914,6915,6916,6964,6965,6966,6967,6968,6969,6970,6971,6972,6973,6974,6975,6976,6977,6978,6979,6980,6992,6993,6994,6995,6996,6997,6998,6999,7000,7001,7019,7020,7021,7022,7023,7024,7025,7026,7027,7040,7041,7042,7073,7074,7075,7076,7077,7078,7079,7080,7081,7082,7083,7084,7085,7088,7089,7090,7091,7092,7093,7094,7095,7096,7097,7142,7143,7144,7145,7146,7147,7148,7149,7150,7151,7152,7153,7154,7155,7204,7205,7206,7207,7208,7209,7210,7211,7212,7213,7214,7215,7216,7217,7218,7219,7220,7221,7222,7223,7232,7233,7234,7235,7236,7237,7238,7239,7240,7241,7248,7249,7250,7251,7252,7253,7254,7255,7256,7257,7376,7377,7378,7380,7381,7382,7383,7384,7385,7386,7387,7388,7389,7390,7391,7392,7393,7394,7395,7396,7397,7398,7399,7400,7405,7410,7411,7412,7616,7617,7618,7619,7620,7621,7622,7623,7624,7625,7626,7627,7628,7629,7630,7631,7632,7633,7634,7635,7636,7637,7638,7639,7640,7641,7642,7643,7644,7645,7646,7647,7648,7649,7650,7651,7652,7653,7654,7676,7677,7678,7679,8204,8205,8255,8256,8276,8400,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,8411,8412,8417,8421,8422,8423,8424,8425,8426,8427,8428,8429,8430,8431,8432,11503,11504,11505,11647,11744,11745,11746,11747,11748,11749,11750,11751,11752,11753,11754,11755,11756,11757,11758,11759,11760,11761,11762,11763,11764,11765,11766,11767,11768,11769,11770,11771,11772,11773,11774,11775,12330,12331,12332,12333,12334,12335,12441,12442,42528,42529,42530,42531,42532,42533,42534,42535,42536,42537,42607,42612,42613,42614,42615,42616,42617,42618,42619,42620,42621,42655,42736,42737,43010,43014,43019,43043,43044,43045,43046,43047,43136,43137,43188,43189,43190,43191,43192,43193,43194,43195,43196,43197,43198,43199,43200,43201,43202,43203,43204,43216,43217,43218,43219,43220,43221,43222,43223,43224,43225,43232,43233,43234,43235,43236,43237,43238,43239,43240,43241,43242,43243,43244,43245,43246,43247,43248,43249,43264,43265,43266,43267,43268,43269,43270,43271,43272,43273,43302,43303,43304,43305,43306,43307,43308,43309,43335,43336,43337,43338,43339,43340,43341,43342,43343,43344,43345,43346,43347,43392,43393,43394,43395,43443,43444,43445,43446,43447,43448,43449,43450,43451,43452,43453,43454,43455,43456,43472,43473,43474,43475,43476,43477,43478,43479,43480,43481,43561,43562,43563,43564,43565,43566,43567,43568,43569,43570,43571,43572,43573,43574,43587,43596,43597,43600,43601,43602,43603,43604,43605,43606,43607,43608,43609,43643,43696,43698,43699,43700,43703,43704,43710,43711,43713,43755,43756,43757,43758,43759,43765,43766,44003,44004,44005,44006,44007,44008,44009,44010,44012,44013,44016,44017,44018,44019,44020,44021,44022,44023,44024,44025,64286,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65056,65057,65058,65059,65060,65061,65062,65075,65076,65101,65102,65103,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,65343'; +var arr = str.split(',').map(function(code) { + return parseInt(code, 10); +}); +module.exports = arr; \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/data/non-ascii-identifier-start.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/data/non-ascii-identifier-start.js new file mode 100644 index 00000000..7b5b7994 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/data/non-ascii-identifier-start.js @@ -0,0 +1,5 @@ +var str = '170,181,186,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,710,711,712,713,714,715,716,717,718,719,720,721,736,737,738,739,740,748,750,880,881,882,883,884,886,887,890,891,892,893,902,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1369,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1520,1521,1522,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1646,1647,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1749,1765,1766,1774,1775,1786,1787,1788,1791,1808,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1969,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2036,2037,2042,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2074,2084,2088,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2208,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,2308,2309,2310,2311,2312,2313,2314,2315,2316,2317,2318,2319,2320,2321,2322,2323,2324,2325,2326,2327,2328,2329,2330,2331,2332,2333,2334,2335,2336,2337,2338,2339,2340,2341,2342,2343,2344,2345,2346,2347,2348,2349,2350,2351,2352,2353,2354,2355,2356,2357,2358,2359,2360,2361,2365,2384,2392,2393,2394,2395,2396,2397,2398,2399,2400,2401,2417,2418,2419,2420,2421,2422,2423,2425,2426,2427,2428,2429,2430,2431,2437,2438,2439,2440,2441,2442,2443,2444,2447,2448,2451,2452,2453,2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2474,2475,2476,2477,2478,2479,2480,2482,2486,2487,2488,2489,2493,2510,2524,2525,2527,2528,2529,2544,2545,2565,2566,2567,2568,2569,2570,2575,2576,2579,2580,2581,2582,2583,2584,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2602,2603,2604,2605,2606,2607,2608,2610,2611,2613,2614,2616,2617,2649,2650,2651,2652,2654,2674,2675,2676,2693,2694,2695,2696,2697,2698,2699,2700,2701,2703,2704,2705,2707,2708,2709,2710,2711,2712,2713,2714,2715,2716,2717,2718,2719,2720,2721,2722,2723,2724,2725,2726,2727,2728,2730,2731,2732,2733,2734,2735,2736,2738,2739,2741,2742,2743,2744,2745,2749,2768,2784,2785,2821,2822,2823,2824,2825,2826,2827,2828,2831,2832,2835,2836,2837,2838,2839,2840,2841,2842,2843,2844,2845,2846,2847,2848,2849,2850,2851,2852,2853,2854,2855,2856,2858,2859,2860,2861,2862,2863,2864,2866,2867,2869,2870,2871,2872,2873,2877,2908,2909,2911,2912,2913,2929,2947,2949,2950,2951,2952,2953,2954,2958,2959,2960,2962,2963,2964,2965,2969,2970,2972,2974,2975,2979,2980,2984,2985,2986,2990,2991,2992,2993,2994,2995,2996,2997,2998,2999,3000,3001,3024,3077,3078,3079,3080,3081,3082,3083,3084,3086,3087,3088,3090,3091,3092,3093,3094,3095,3096,3097,3098,3099,3100,3101,3102,3103,3104,3105,3106,3107,3108,3109,3110,3111,3112,3114,3115,3116,3117,3118,3119,3120,3121,3122,3123,3125,3126,3127,3128,3129,3133,3160,3161,3168,3169,3205,3206,3207,3208,3209,3210,3211,3212,3214,3215,3216,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3242,3243,3244,3245,3246,3247,3248,3249,3250,3251,3253,3254,3255,3256,3257,3261,3294,3296,3297,3313,3314,3333,3334,3335,3336,3337,3338,3339,3340,3342,3343,3344,3346,3347,3348,3349,3350,3351,3352,3353,3354,3355,3356,3357,3358,3359,3360,3361,3362,3363,3364,3365,3366,3367,3368,3369,3370,3371,3372,3373,3374,3375,3376,3377,3378,3379,3380,3381,3382,3383,3384,3385,3386,3389,3406,3424,3425,3450,3451,3452,3453,3454,3455,3461,3462,3463,3464,3465,3466,3467,3468,3469,3470,3471,3472,3473,3474,3475,3476,3477,3478,3482,3483,3484,3485,3486,3487,3488,3489,3490,3491,3492,3493,3494,3495,3496,3497,3498,3499,3500,3501,3502,3503,3504,3505,3507,3508,3509,3510,3511,3512,3513,3514,3515,3517,3520,3521,3522,3523,3524,3525,3526,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3634,3635,3648,3649,3650,3651,3652,3653,3654,3713,3714,3716,3719,3720,3722,3725,3732,3733,3734,3735,3737,3738,3739,3740,3741,3742,3743,3745,3746,3747,3749,3751,3754,3755,3757,3758,3759,3760,3762,3763,3773,3776,3777,3778,3779,3780,3782,3804,3805,3806,3807,3840,3904,3905,3906,3907,3908,3909,3910,3911,3913,3914,3915,3916,3917,3918,3919,3920,3921,3922,3923,3924,3925,3926,3927,3928,3929,3930,3931,3932,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942,3943,3944,3945,3946,3947,3948,3976,3977,3978,3979,3980,4096,4097,4098,4099,4100,4101,4102,4103,4104,4105,4106,4107,4108,4109,4110,4111,4112,4113,4114,4115,4116,4117,4118,4119,4120,4121,4122,4123,4124,4125,4126,4127,4128,4129,4130,4131,4132,4133,4134,4135,4136,4137,4138,4159,4176,4177,4178,4179,4180,4181,4186,4187,4188,4189,4193,4197,4198,4206,4207,4208,4213,4214,4215,4216,4217,4218,4219,4220,4221,4222,4223,4224,4225,4238,4256,4257,4258,4259,4260,4261,4262,4263,4264,4265,4266,4267,4268,4269,4270,4271,4272,4273,4274,4275,4276,4277,4278,4279,4280,4281,4282,4283,4284,4285,4286,4287,4288,4289,4290,4291,4292,4293,4295,4301,4304,4305,4306,4307,4308,4309,4310,4311,4312,4313,4314,4315,4316,4317,4318,4319,4320,4321,4322,4323,4324,4325,4326,4327,4328,4329,4330,4331,4332,4333,4334,4335,4336,4337,4338,4339,4340,4341,4342,4343,4344,4345,4346,4348,4349,4350,4351,4352,4353,4354,4355,4356,4357,4358,4359,4360,4361,4362,4363,4364,4365,4366,4367,4368,4369,4370,4371,4372,4373,4374,4375,4376,4377,4378,4379,4380,4381,4382,4383,4384,4385,4386,4387,4388,4389,4390,4391,4392,4393,4394,4395,4396,4397,4398,4399,4400,4401,4402,4403,4404,4405,4406,4407,4408,4409,4410,4411,4412,4413,4414,4415,4416,4417,4418,4419,4420,4421,4422,4423,4424,4425,4426,4427,4428,4429,4430,4431,4432,4433,4434,4435,4436,4437,4438,4439,4440,4441,4442,4443,4444,4445,4446,4447,4448,4449,4450,4451,4452,4453,4454,4455,4456,4457,4458,4459,4460,4461,4462,4463,4464,4465,4466,4467,4468,4469,4470,4471,4472,4473,4474,4475,4476,4477,4478,4479,4480,4481,4482,4483,4484,4485,4486,4487,4488,4489,4490,4491,4492,4493,4494,4495,4496,4497,4498,4499,4500,4501,4502,4503,4504,4505,4506,4507,4508,4509,4510,4511,4512,4513,4514,4515,4516,4517,4518,4519,4520,4521,4522,4523,4524,4525,4526,4527,4528,4529,4530,4531,4532,4533,4534,4535,4536,4537,4538,4539,4540,4541,4542,4543,4544,4545,4546,4547,4548,4549,4550,4551,4552,4553,4554,4555,4556,4557,4558,4559,4560,4561,4562,4563,4564,4565,4566,4567,4568,4569,4570,4571,4572,4573,4574,4575,4576,4577,4578,4579,4580,4581,4582,4583,4584,4585,4586,4587,4588,4589,4590,4591,4592,4593,4594,4595,4596,4597,4598,4599,4600,4601,4602,4603,4604,4605,4606,4607,4608,4609,4610,4611,4612,4613,4614,4615,4616,4617,4618,4619,4620,4621,4622,4623,4624,4625,4626,4627,4628,4629,4630,4631,4632,4633,4634,4635,4636,4637,4638,4639,4640,4641,4642,4643,4644,4645,4646,4647,4648,4649,4650,4651,4652,4653,4654,4655,4656,4657,4658,4659,4660,4661,4662,4663,4664,4665,4666,4667,4668,4669,4670,4671,4672,4673,4674,4675,4676,4677,4678,4679,4680,4682,4683,4684,4685,4688,4689,4690,4691,4692,4693,4694,4696,4698,4699,4700,4701,4704,4705,4706,4707,4708,4709,4710,4711,4712,4713,4714,4715,4716,4717,4718,4719,4720,4721,4722,4723,4724,4725,4726,4727,4728,4729,4730,4731,4732,4733,4734,4735,4736,4737,4738,4739,4740,4741,4742,4743,4744,4746,4747,4748,4749,4752,4753,4754,4755,4756,4757,4758,4759,4760,4761,4762,4763,4764,4765,4766,4767,4768,4769,4770,4771,4772,4773,4774,4775,4776,4777,4778,4779,4780,4781,4782,4783,4784,4786,4787,4788,4789,4792,4793,4794,4795,4796,4797,4798,4800,4802,4803,4804,4805,4808,4809,4810,4811,4812,4813,4814,4815,4816,4817,4818,4819,4820,4821,4822,4824,4825,4826,4827,4828,4829,4830,4831,4832,4833,4834,4835,4836,4837,4838,4839,4840,4841,4842,4843,4844,4845,4846,4847,4848,4849,4850,4851,4852,4853,4854,4855,4856,4857,4858,4859,4860,4861,4862,4863,4864,4865,4866,4867,4868,4869,4870,4871,4872,4873,4874,4875,4876,4877,4878,4879,4880,4882,4883,4884,4885,4888,4889,4890,4891,4892,4893,4894,4895,4896,4897,4898,4899,4900,4901,4902,4903,4904,4905,4906,4907,4908,4909,4910,4911,4912,4913,4914,4915,4916,4917,4918,4919,4920,4921,4922,4923,4924,4925,4926,4927,4928,4929,4930,4931,4932,4933,4934,4935,4936,4937,4938,4939,4940,4941,4942,4943,4944,4945,4946,4947,4948,4949,4950,4951,4952,4953,4954,4992,4993,4994,4995,4996,4997,4998,4999,5000,5001,5002,5003,5004,5005,5006,5007,5024,5025,5026,5027,5028,5029,5030,5031,5032,5033,5034,5035,5036,5037,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5053,5054,5055,5056,5057,5058,5059,5060,5061,5062,5063,5064,5065,5066,5067,5068,5069,5070,5071,5072,5073,5074,5075,5076,5077,5078,5079,5080,5081,5082,5083,5084,5085,5086,5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102,5103,5104,5105,5106,5107,5108,5121,5122,5123,5124,5125,5126,5127,5128,5129,5130,5131,5132,5133,5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149,5150,5151,5152,5153,5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164,5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,5176,5177,5178,5179,5180,5181,5182,5183,5184,5185,5186,5187,5188,5189,5190,5191,5192,5193,5194,5195,5196,5197,5198,5199,5200,5201,5202,5203,5204,5205,5206,5207,5208,5209,5210,5211,5212,5213,5214,5215,5216,5217,5218,5219,5220,5221,5222,5223,5224,5225,5226,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,5237,5238,5239,5240,5241,5242,5243,5244,5245,5246,5247,5248,5249,5250,5251,5252,5253,5254,5255,5256,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267,5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283,5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299,5300,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315,5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331,5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5347,5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363,5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379,5380,5381,5382,5383,5384,5385,5386,5387,5388,5389,5390,5391,5392,5393,5394,5395,5396,5397,5398,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408,5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5421,5422,5423,5424,5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440,5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456,5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472,5473,5474,5475,5476,5477,5478,5479,5480,5481,5482,5483,5484,5485,5486,5487,5488,5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520,5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536,5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,5549,5550,5551,5552,5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568,5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584,5585,5586,5587,5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600,5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632,5633,5634,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648,5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664,5665,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,5677,5678,5679,5680,5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696,5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712,5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728,5729,5730,5731,5732,5733,5734,5735,5736,5737,5738,5739,5740,5743,5744,5745,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5761,5762,5763,5764,5765,5766,5767,5768,5769,5770,5771,5772,5773,5774,5775,5776,5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5792,5793,5794,5795,5796,5797,5798,5799,5800,5801,5802,5803,5804,5805,5806,5807,5808,5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824,5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856,5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5870,5871,5872,5888,5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5902,5903,5904,5905,5920,5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936,5937,5952,5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968,5969,5984,5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5998,5999,6000,6016,6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032,6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6065,6066,6067,6103,6108,6176,6177,6178,6179,6180,6181,6182,6183,6184,6185,6186,6187,6188,6189,6190,6191,6192,6193,6194,6195,6196,6197,6198,6199,6200,6201,6202,6203,6204,6205,6206,6207,6208,6209,6210,6211,6212,6213,6214,6215,6216,6217,6218,6219,6220,6221,6222,6223,6224,6225,6226,6227,6228,6229,6230,6231,6232,6233,6234,6235,6236,6237,6238,6239,6240,6241,6242,6243,6244,6245,6246,6247,6248,6249,6250,6251,6252,6253,6254,6255,6256,6257,6258,6259,6260,6261,6262,6263,6272,6273,6274,6275,6276,6277,6278,6279,6280,6281,6282,6283,6284,6285,6286,6287,6288,6289,6290,6291,6292,6293,6294,6295,6296,6297,6298,6299,6300,6301,6302,6303,6304,6305,6306,6307,6308,6309,6310,6311,6312,6314,6320,6321,6322,6323,6324,6325,6326,6327,6328,6329,6330,6331,6332,6333,6334,6335,6336,6337,6338,6339,6340,6341,6342,6343,6344,6345,6346,6347,6348,6349,6350,6351,6352,6353,6354,6355,6356,6357,6358,6359,6360,6361,6362,6363,6364,6365,6366,6367,6368,6369,6370,6371,6372,6373,6374,6375,6376,6377,6378,6379,6380,6381,6382,6383,6384,6385,6386,6387,6388,6389,6400,6401,6402,6403,6404,6405,6406,6407,6408,6409,6410,6411,6412,6413,6414,6415,6416,6417,6418,6419,6420,6421,6422,6423,6424,6425,6426,6427,6428,6480,6481,6482,6483,6484,6485,6486,6487,6488,6489,6490,6491,6492,6493,6494,6495,6496,6497,6498,6499,6500,6501,6502,6503,6504,6505,6506,6507,6508,6509,6512,6513,6514,6515,6516,6528,6529,6530,6531,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6544,6545,6546,6547,6548,6549,6550,6551,6552,6553,6554,6555,6556,6557,6558,6559,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,6570,6571,6593,6594,6595,6596,6597,6598,6599,6656,6657,6658,6659,6660,6661,6662,6663,6664,6665,6666,6667,6668,6669,6670,6671,6672,6673,6674,6675,6676,6677,6678,6688,6689,6690,6691,6692,6693,6694,6695,6696,6697,6698,6699,6700,6701,6702,6703,6704,6705,6706,6707,6708,6709,6710,6711,6712,6713,6714,6715,6716,6717,6718,6719,6720,6721,6722,6723,6724,6725,6726,6727,6728,6729,6730,6731,6732,6733,6734,6735,6736,6737,6738,6739,6740,6823,6917,6918,6919,6920,6921,6922,6923,6924,6925,6926,6927,6928,6929,6930,6931,6932,6933,6934,6935,6936,6937,6938,6939,6940,6941,6942,6943,6944,6945,6946,6947,6948,6949,6950,6951,6952,6953,6954,6955,6956,6957,6958,6959,6960,6961,6962,6963,6981,6982,6983,6984,6985,6986,6987,7043,7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7055,7056,7057,7058,7059,7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,7071,7072,7086,7087,7098,7099,7100,7101,7102,7103,7104,7105,7106,7107,7108,7109,7110,7111,7112,7113,7114,7115,7116,7117,7118,7119,7120,7121,7122,7123,7124,7125,7126,7127,7128,7129,7130,7131,7132,7133,7134,7135,7136,7137,7138,7139,7140,7141,7168,7169,7170,7171,7172,7173,7174,7175,7176,7177,7178,7179,7180,7181,7182,7183,7184,7185,7186,7187,7188,7189,7190,7191,7192,7193,7194,7195,7196,7197,7198,7199,7200,7201,7202,7203,7245,7246,7247,7258,7259,7260,7261,7262,7263,7264,7265,7266,7267,7268,7269,7270,7271,7272,7273,7274,7275,7276,7277,7278,7279,7280,7281,7282,7283,7284,7285,7286,7287,7288,7289,7290,7291,7292,7293,7401,7402,7403,7404,7406,7407,7408,7409,7413,7414,7424,7425,7426,7427,7428,7429,7430,7431,7432,7433,7434,7435,7436,7437,7438,7439,7440,7441,7442,7443,7444,7445,7446,7447,7448,7449,7450,7451,7452,7453,7454,7455,7456,7457,7458,7459,7460,7461,7462,7463,7464,7465,7466,7467,7468,7469,7470,7471,7472,7473,7474,7475,7476,7477,7478,7479,7480,7481,7482,7483,7484,7485,7486,7487,7488,7489,7490,7491,7492,7493,7494,7495,7496,7497,7498,7499,7500,7501,7502,7503,7504,7505,7506,7507,7508,7509,7510,7511,7512,7513,7514,7515,7516,7517,7518,7519,7520,7521,7522,7523,7524,7525,7526,7527,7528,7529,7530,7531,7532,7533,7534,7535,7536,7537,7538,7539,7540,7541,7542,7543,7544,7545,7546,7547,7548,7549,7550,7551,7552,7553,7554,7555,7556,7557,7558,7559,7560,7561,7562,7563,7564,7565,7566,7567,7568,7569,7570,7571,7572,7573,7574,7575,7576,7577,7578,7579,7580,7581,7582,7583,7584,7585,7586,7587,7588,7589,7590,7591,7592,7593,7594,7595,7596,7597,7598,7599,7600,7601,7602,7603,7604,7605,7606,7607,7608,7609,7610,7611,7612,7613,7614,7615,7680,7681,7682,7683,7684,7685,7686,7687,7688,7689,7690,7691,7692,7693,7694,7695,7696,7697,7698,7699,7700,7701,7702,7703,7704,7705,7706,7707,7708,7709,7710,7711,7712,7713,7714,7715,7716,7717,7718,7719,7720,7721,7722,7723,7724,7725,7726,7727,7728,7729,7730,7731,7732,7733,7734,7735,7736,7737,7738,7739,7740,7741,7742,7743,7744,7745,7746,7747,7748,7749,7750,7751,7752,7753,7754,7755,7756,7757,7758,7759,7760,7761,7762,7763,7764,7765,7766,7767,7768,7769,7770,7771,7772,7773,7774,7775,7776,7777,7778,7779,7780,7781,7782,7783,7784,7785,7786,7787,7788,7789,7790,7791,7792,7793,7794,7795,7796,7797,7798,7799,7800,7801,7802,7803,7804,7805,7806,7807,7808,7809,7810,7811,7812,7813,7814,7815,7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,7826,7827,7828,7829,7830,7831,7832,7833,7834,7835,7836,7837,7838,7839,7840,7841,7842,7843,7844,7845,7846,7847,7848,7849,7850,7851,7852,7853,7854,7855,7856,7857,7858,7859,7860,7861,7862,7863,7864,7865,7866,7867,7868,7869,7870,7871,7872,7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886,7887,7888,7889,7890,7891,7892,7893,7894,7895,7896,7897,7898,7899,7900,7901,7902,7903,7904,7905,7906,7907,7908,7909,7910,7911,7912,7913,7914,7915,7916,7917,7918,7919,7920,7921,7922,7923,7924,7925,7926,7927,7928,7929,7930,7931,7932,7933,7934,7935,7936,7937,7938,7939,7940,7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7951,7952,7953,7954,7955,7956,7957,7960,7961,7962,7963,7964,7965,7968,7969,7970,7971,7972,7973,7974,7975,7976,7977,7978,7979,7980,7981,7982,7983,7984,7985,7986,7987,7988,7989,7990,7991,7992,7993,7994,7995,7996,7997,7998,7999,8000,8001,8002,8003,8004,8005,8008,8009,8010,8011,8012,8013,8016,8017,8018,8019,8020,8021,8022,8023,8025,8027,8029,8031,8032,8033,8034,8035,8036,8037,8038,8039,8040,8041,8042,8043,8044,8045,8046,8047,8048,8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8064,8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8096,8097,8098,8099,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111,8112,8113,8114,8115,8116,8118,8119,8120,8121,8122,8123,8124,8126,8130,8131,8132,8134,8135,8136,8137,8138,8139,8140,8144,8145,8146,8147,8150,8151,8152,8153,8154,8155,8160,8161,8162,8163,8164,8165,8166,8167,8168,8169,8170,8171,8172,8178,8179,8180,8182,8183,8184,8185,8186,8187,8188,8305,8319,8336,8337,8338,8339,8340,8341,8342,8343,8344,8345,8346,8347,8348,8450,8455,8458,8459,8460,8461,8462,8463,8464,8465,8466,8467,8469,8473,8474,8475,8476,8477,8484,8486,8488,8490,8491,8492,8493,8495,8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8508,8509,8510,8511,8517,8518,8519,8520,8521,8526,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,8556,8557,8558,8559,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8570,8571,8572,8573,8574,8575,8576,8577,8578,8579,8580,8581,8582,8583,8584,11264,11265,11266,11267,11268,11269,11270,11271,11272,11273,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11284,11285,11286,11287,11288,11289,11290,11291,11292,11293,11294,11295,11296,11297,11298,11299,11300,11301,11302,11303,11304,11305,11306,11307,11308,11309,11310,11312,11313,11314,11315,11316,11317,11318,11319,11320,11321,11322,11323,11324,11325,11326,11327,11328,11329,11330,11331,11332,11333,11334,11335,11336,11337,11338,11339,11340,11341,11342,11343,11344,11345,11346,11347,11348,11349,11350,11351,11352,11353,11354,11355,11356,11357,11358,11360,11361,11362,11363,11364,11365,11366,11367,11368,11369,11370,11371,11372,11373,11374,11375,11376,11377,11378,11379,11380,11381,11382,11383,11384,11385,11386,11387,11388,11389,11390,11391,11392,11393,11394,11395,11396,11397,11398,11399,11400,11401,11402,11403,11404,11405,11406,11407,11408,11409,11410,11411,11412,11413,11414,11415,11416,11417,11418,11419,11420,11421,11422,11423,11424,11425,11426,11427,11428,11429,11430,11431,11432,11433,11434,11435,11436,11437,11438,11439,11440,11441,11442,11443,11444,11445,11446,11447,11448,11449,11450,11451,11452,11453,11454,11455,11456,11457,11458,11459,11460,11461,11462,11463,11464,11465,11466,11467,11468,11469,11470,11471,11472,11473,11474,11475,11476,11477,11478,11479,11480,11481,11482,11483,11484,11485,11486,11487,11488,11489,11490,11491,11492,11499,11500,11501,11502,11506,11507,11520,11521,11522,11523,11524,11525,11526,11527,11528,11529,11530,11531,11532,11533,11534,11535,11536,11537,11538,11539,11540,11541,11542,11543,11544,11545,11546,11547,11548,11549,11550,11551,11552,11553,11554,11555,11556,11557,11559,11565,11568,11569,11570,11571,11572,11573,11574,11575,11576,11577,11578,11579,11580,11581,11582,11583,11584,11585,11586,11587,11588,11589,11590,11591,11592,11593,11594,11595,11596,11597,11598,11599,11600,11601,11602,11603,11604,11605,11606,11607,11608,11609,11610,11611,11612,11613,11614,11615,11616,11617,11618,11619,11620,11621,11622,11623,11631,11648,11649,11650,11651,11652,11653,11654,11655,11656,11657,11658,11659,11660,11661,11662,11663,11664,11665,11666,11667,11668,11669,11670,11680,11681,11682,11683,11684,11685,11686,11688,11689,11690,11691,11692,11693,11694,11696,11697,11698,11699,11700,11701,11702,11704,11705,11706,11707,11708,11709,11710,11712,11713,11714,11715,11716,11717,11718,11720,11721,11722,11723,11724,11725,11726,11728,11729,11730,11731,11732,11733,11734,11736,11737,11738,11739,11740,11741,11742,11823,12293,12294,12295,12321,12322,12323,12324,12325,12326,12327,12328,12329,12337,12338,12339,12340,12341,12344,12345,12346,12347,12348,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,12436,12437,12438,12445,12446,12447,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,12535,12536,12537,12538,12540,12541,12542,12543,12549,12550,12551,12552,12553,12554,12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12575,12576,12577,12578,12579,12580,12581,12582,12583,12584,12585,12586,12587,12588,12589,12593,12594,12595,12596,12597,12598,12599,12600,12601,12602,12603,12604,12605,12606,12607,12608,12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643,12644,12645,12646,12647,12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660,12661,12662,12663,12664,12665,12666,12667,12668,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680,12681,12682,12683,12684,12685,12686,12704,12705,12706,12707,12708,12709,12710,12711,12712,12713,12714,12715,12716,12717,12718,12719,12720,12721,12722,12723,12724,12725,12726,12727,12728,12729,12730,12784,12785,12786,12787,12788,12789,12790,12791,12792,12793,12794,12795,12796,12797,12798,12799,13312,13313,13314,13315,13316,13317,13318,13319,13320,13321,13322,13323,13324,13325,13326,13327,13328,13329,13330,13331,13332,13333,13334,13335,13336,13337,13338,13339,13340,13341,13342,13343,13344,13345,13346,13347,13348,13349,13350,13351,13352,13353,13354,13355,13356,13357,13358,13359,13360,13361,13362,13363,13364,13365,13366,13367,13368,13369,13370,13371,13372,13373,13374,13375,13376,13377,13378,13379,13380,13381,13382,13383,13384,13385,13386,13387,13388,13389,13390,13391,13392,13393,13394,13395,13396,13397,13398,13399,13400,13401,13402,13403,13404,13405,13406,13407,13408,13409,13410,13411,13412,13413,13414,13415,13416,13417,13418,13419,13420,13421,13422,13423,13424,13425,13426,13427,13428,13429,13430,13431,13432,13433,13434,13435,13436,13437,13438,13439,13440,13441,13442,13443,13444,13445,13446,13447,13448,13449,13450,13451,13452,13453,13454,13455,13456,13457,13458,13459,13460,13461,13462,13463,13464,13465,13466,13467,13468,13469,13470,13471,13472,13473,13474,13475,13476,13477,13478,13479,13480,13481,13482,13483,13484,13485,13486,13487,13488,13489,13490,13491,13492,13493,13494,13495,13496,13497,13498,13499,13500,13501,13502,13503,13504,13505,13506,13507,13508,13509,13510,13511,13512,13513,13514,13515,13516,13517,13518,13519,13520,13521,13522,13523,13524,13525,13526,13527,13528,13529,13530,13531,13532,13533,13534,13535,13536,13537,13538,13539,13540,13541,13542,13543,13544,13545,13546,13547,13548,13549,13550,13551,13552,13553,13554,13555,13556,13557,13558,13559,13560,13561,13562,13563,13564,13565,13566,13567,13568,13569,13570,13571,13572,13573,13574,13575,13576,13577,13578,13579,13580,13581,13582,13583,13584,13585,13586,13587,13588,13589,13590,13591,13592,13593,13594,13595,13596,13597,13598,13599,13600,13601,13602,13603,13604,13605,13606,13607,13608,13609,13610,13611,13612,13613,13614,13615,13616,13617,13618,13619,13620,13621,13622,13623,13624,13625,13626,13627,13628,13629,13630,13631,13632,13633,13634,13635,13636,13637,13638,13639,13640,13641,13642,13643,13644,13645,13646,13647,13648,13649,13650,13651,13652,13653,13654,13655,13656,13657,13658,13659,13660,13661,13662,13663,13664,13665,13666,13667,13668,13669,13670,13671,13672,13673,13674,13675,13676,13677,13678,13679,13680,13681,13682,13683,13684,13685,13686,13687,13688,13689,13690,13691,13692,13693,13694,13695,13696,13697,13698,13699,13700,13701,13702,13703,13704,13705,13706,13707,13708,13709,13710,13711,13712,13713,13714,13715,13716,13717,13718,13719,13720,13721,13722,13723,13724,13725,13726,13727,13728,13729,13730,13731,13732,13733,13734,13735,13736,13737,13738,13739,13740,13741,13742,13743,13744,13745,13746,13747,13748,13749,13750,13751,13752,13753,13754,13755,13756,13757,13758,13759,13760,13761,13762,13763,13764,13765,13766,13767,13768,13769,13770,13771,13772,13773,13774,13775,13776,13777,13778,13779,13780,13781,13782,13783,13784,13785,13786,13787,13788,13789,13790,13791,13792,13793,13794,13795,13796,13797,13798,13799,13800,13801,13802,13803,13804,13805,13806,13807,13808,13809,13810,13811,13812,13813,13814,13815,13816,13817,13818,13819,13820,13821,13822,13823,13824,13825,13826,13827,13828,13829,13830,13831,13832,13833,13834,13835,13836,13837,13838,13839,13840,13841,13842,13843,13844,13845,13846,13847,13848,13849,13850,13851,13852,13853,13854,13855,13856,13857,13858,13859,13860,13861,13862,13863,13864,13865,13866,13867,13868,13869,13870,13871,13872,13873,13874,13875,13876,13877,13878,13879,13880,13881,13882,13883,13884,13885,13886,13887,13888,13889,13890,13891,13892,13893,13894,13895,13896,13897,13898,13899,13900,13901,13902,13903,13904,13905,13906,13907,13908,13909,13910,13911,13912,13913,13914,13915,13916,13917,13918,13919,13920,13921,13922,13923,13924,13925,13926,13927,13928,13929,13930,13931,13932,13933,13934,13935,13936,13937,13938,13939,13940,13941,13942,13943,13944,13945,13946,13947,13948,13949,13950,13951,13952,13953,13954,13955,13956,13957,13958,13959,13960,13961,13962,13963,13964,13965,13966,13967,13968,13969,13970,13971,13972,13973,13974,13975,13976,13977,13978,13979,13980,13981,13982,13983,13984,13985,13986,13987,13988,13989,13990,13991,13992,13993,13994,13995,13996,13997,13998,13999,14000,14001,14002,14003,14004,14005,14006,14007,14008,14009,14010,14011,14012,14013,14014,14015,14016,14017,14018,14019,14020,14021,14022,14023,14024,14025,14026,14027,14028,14029,14030,14031,14032,14033,14034,14035,14036,14037,14038,14039,14040,14041,14042,14043,14044,14045,14046,14047,14048,14049,14050,14051,14052,14053,14054,14055,14056,14057,14058,14059,14060,14061,14062,14063,14064,14065,14066,14067,14068,14069,14070,14071,14072,14073,14074,14075,14076,14077,14078,14079,14080,14081,14082,14083,14084,14085,14086,14087,14088,14089,14090,14091,14092,14093,14094,14095,14096,14097,14098,14099,14100,14101,14102,14103,14104,14105,14106,14107,14108,14109,14110,14111,14112,14113,14114,14115,14116,14117,14118,14119,14120,14121,14122,14123,14124,14125,14126,14127,14128,14129,14130,14131,14132,14133,14134,14135,14136,14137,14138,14139,14140,14141,14142,14143,14144,14145,14146,14147,14148,14149,14150,14151,14152,14153,14154,14155,14156,14157,14158,14159,14160,14161,14162,14163,14164,14165,14166,14167,14168,14169,14170,14171,14172,14173,14174,14175,14176,14177,14178,14179,14180,14181,14182,14183,14184,14185,14186,14187,14188,14189,14190,14191,14192,14193,14194,14195,14196,14197,14198,14199,14200,14201,14202,14203,14204,14205,14206,14207,14208,14209,14210,14211,14212,14213,14214,14215,14216,14217,14218,14219,14220,14221,14222,14223,14224,14225,14226,14227,14228,14229,14230,14231,14232,14233,14234,14235,14236,14237,14238,14239,14240,14241,14242,14243,14244,14245,14246,14247,14248,14249,14250,14251,14252,14253,14254,14255,14256,14257,14258,14259,14260,14261,14262,14263,14264,14265,14266,14267,14268,14269,14270,14271,14272,14273,14274,14275,14276,14277,14278,14279,14280,14281,14282,14283,14284,14285,14286,14287,14288,14289,14290,14291,14292,14293,14294,14295,14296,14297,14298,14299,14300,14301,14302,14303,14304,14305,14306,14307,14308,14309,14310,14311,14312,14313,14314,14315,14316,14317,14318,14319,14320,14321,14322,14323,14324,14325,14326,14327,14328,14329,14330,14331,14332,14333,14334,14335,14336,14337,14338,14339,14340,14341,14342,14343,14344,14345,14346,14347,14348,14349,14350,14351,14352,14353,14354,14355,14356,14357,14358,14359,14360,14361,14362,14363,14364,14365,14366,14367,14368,14369,14370,14371,14372,14373,14374,14375,14376,14377,14378,14379,14380,14381,14382,14383,14384,14385,14386,14387,14388,14389,14390,14391,14392,14393,14394,14395,14396,14397,14398,14399,14400,14401,14402,14403,14404,14405,14406,14407,14408,14409,14410,14411,14412,14413,14414,14415,14416,14417,14418,14419,14420,14421,14422,14423,14424,14425,14426,14427,14428,14429,14430,14431,14432,14433,14434,14435,14436,14437,14438,14439,14440,14441,14442,14443,14444,14445,14446,14447,14448,14449,14450,14451,14452,14453,14454,14455,14456,14457,14458,14459,14460,14461,14462,14463,14464,14465,14466,14467,14468,14469,14470,14471,14472,14473,14474,14475,14476,14477,14478,14479,14480,14481,14482,14483,14484,14485,14486,14487,14488,14489,14490,14491,14492,14493,14494,14495,14496,14497,14498,14499,14500,14501,14502,14503,14504,14505,14506,14507,14508,14509,14510,14511,14512,14513,14514,14515,14516,14517,14518,14519,14520,14521,14522,14523,14524,14525,14526,14527,14528,14529,14530,14531,14532,14533,14534,14535,14536,14537,14538,14539,14540,14541,14542,14543,14544,14545,14546,14547,14548,14549,14550,14551,14552,14553,14554,14555,14556,14557,14558,14559,14560,14561,14562,14563,14564,14565,14566,14567,14568,14569,14570,14571,14572,14573,14574,14575,14576,14577,14578,14579,14580,14581,14582,14583,14584,14585,14586,14587,14588,14589,14590,14591,14592,14593,14594,14595,14596,14597,14598,14599,14600,14601,14602,14603,14604,14605,14606,14607,14608,14609,14610,14611,14612,14613,14614,14615,14616,14617,14618,14619,14620,14621,14622,14623,14624,14625,14626,14627,14628,14629,14630,14631,14632,14633,14634,14635,14636,14637,14638,14639,14640,14641,14642,14643,14644,14645,14646,14647,14648,14649,14650,14651,14652,14653,14654,14655,14656,14657,14658,14659,14660,14661,14662,14663,14664,14665,14666,14667,14668,14669,14670,14671,14672,14673,14674,14675,14676,14677,14678,14679,14680,14681,14682,14683,14684,14685,14686,14687,14688,14689,14690,14691,14692,14693,14694,14695,14696,14697,14698,14699,14700,14701,14702,14703,14704,14705,14706,14707,14708,14709,14710,14711,14712,14713,14714,14715,14716,14717,14718,14719,14720,14721,14722,14723,14724,14725,14726,14727,14728,14729,14730,14731,14732,14733,14734,14735,14736,14737,14738,14739,14740,14741,14742,14743,14744,14745,14746,14747,14748,14749,14750,14751,14752,14753,14754,14755,14756,14757,14758,14759,14760,14761,14762,14763,14764,14765,14766,14767,14768,14769,14770,14771,14772,14773,14774,14775,14776,14777,14778,14779,14780,14781,14782,14783,14784,14785,14786,14787,14788,14789,14790,14791,14792,14793,14794,14795,14796,14797,14798,14799,14800,14801,14802,14803,14804,14805,14806,14807,14808,14809,14810,14811,14812,14813,14814,14815,14816,14817,14818,14819,14820,14821,14822,14823,14824,14825,14826,14827,14828,14829,14830,14831,14832,14833,14834,14835,14836,14837,14838,14839,14840,14841,14842,14843,14844,14845,14846,14847,14848,14849,14850,14851,14852,14853,14854,14855,14856,14857,14858,14859,14860,14861,14862,14863,14864,14865,14866,14867,14868,14869,14870,14871,14872,14873,14874,14875,14876,14877,14878,14879,14880,14881,14882,14883,14884,14885,14886,14887,14888,14889,14890,14891,14892,14893,14894,14895,14896,14897,14898,14899,14900,14901,14902,14903,14904,14905,14906,14907,14908,14909,14910,14911,14912,14913,14914,14915,14916,14917,14918,14919,14920,14921,14922,14923,14924,14925,14926,14927,14928,14929,14930,14931,14932,14933,14934,14935,14936,14937,14938,14939,14940,14941,14942,14943,14944,14945,14946,14947,14948,14949,14950,14951,14952,14953,14954,14955,14956,14957,14958,14959,14960,14961,14962,14963,14964,14965,14966,14967,14968,14969,14970,14971,14972,14973,14974,14975,14976,14977,14978,14979,14980,14981,14982,14983,14984,14985,14986,14987,14988,14989,14990,14991,14992,14993,14994,14995,14996,14997,14998,14999,15000,15001,15002,15003,15004,15005,15006,15007,15008,15009,15010,15011,15012,15013,15014,15015,15016,15017,15018,15019,15020,15021,15022,15023,15024,15025,15026,15027,15028,15029,15030,15031,15032,15033,15034,15035,15036,15037,15038,15039,15040,15041,15042,15043,15044,15045,15046,15047,15048,15049,15050,15051,15052,15053,15054,15055,15056,15057,15058,15059,15060,15061,15062,15063,15064,15065,15066,15067,15068,15069,15070,15071,15072,15073,15074,15075,15076,15077,15078,15079,15080,15081,15082,15083,15084,15085,15086,15087,15088,15089,15090,15091,15092,15093,15094,15095,15096,15097,15098,15099,15100,15101,15102,15103,15104,15105,15106,15107,15108,15109,15110,15111,15112,15113,15114,15115,15116,15117,15118,15119,15120,15121,15122,15123,15124,15125,15126,15127,15128,15129,15130,15131,15132,15133,15134,15135,15136,15137,15138,15139,15140,15141,15142,15143,15144,15145,15146,15147,15148,15149,15150,15151,15152,15153,15154,15155,15156,15157,15158,15159,15160,15161,15162,15163,15164,15165,15166,15167,15168,15169,15170,15171,15172,15173,15174,15175,15176,15177,15178,15179,15180,15181,15182,15183,15184,15185,15186,15187,15188,15189,15190,15191,15192,15193,15194,15195,15196,15197,15198,15199,15200,15201,15202,15203,15204,15205,15206,15207,15208,15209,15210,15211,15212,15213,15214,15215,15216,15217,15218,15219,15220,15221,15222,15223,15224,15225,15226,15227,15228,15229,15230,15231,15232,15233,15234,15235,15236,15237,15238,15239,15240,15241,15242,15243,15244,15245,15246,15247,15248,15249,15250,15251,15252,15253,15254,15255,15256,15257,15258,15259,15260,15261,15262,15263,15264,15265,15266,15267,15268,15269,15270,15271,15272,15273,15274,15275,15276,15277,15278,15279,15280,15281,15282,15283,15284,15285,15286,15287,15288,15289,15290,15291,15292,15293,15294,15295,15296,15297,15298,15299,15300,15301,15302,15303,15304,15305,15306,15307,15308,15309,15310,15311,15312,15313,15314,15315,15316,15317,15318,15319,15320,15321,15322,15323,15324,15325,15326,15327,15328,15329,15330,15331,15332,15333,15334,15335,15336,15337,15338,15339,15340,15341,15342,15343,15344,15345,15346,15347,15348,15349,15350,15351,15352,15353,15354,15355,15356,15357,15358,15359,15360,15361,15362,15363,15364,15365,15366,15367,15368,15369,15370,15371,15372,15373,15374,15375,15376,15377,15378,15379,15380,15381,15382,15383,15384,15385,15386,15387,15388,15389,15390,15391,15392,15393,15394,15395,15396,15397,15398,15399,15400,15401,15402,15403,15404,15405,15406,15407,15408,15409,15410,15411,15412,15413,15414,15415,15416,15417,15418,15419,15420,15421,15422,15423,15424,15425,15426,15427,15428,15429,15430,15431,15432,15433,15434,15435,15436,15437,15438,15439,15440,15441,15442,15443,15444,15445,15446,15447,15448,15449,15450,15451,15452,15453,15454,15455,15456,15457,15458,15459,15460,15461,15462,15463,15464,15465,15466,15467,15468,15469,15470,15471,15472,15473,15474,15475,15476,15477,15478,15479,15480,15481,15482,15483,15484,15485,15486,15487,15488,15489,15490,15491,15492,15493,15494,15495,15496,15497,15498,15499,15500,15501,15502,15503,15504,15505,15506,15507,15508,15509,15510,15511,15512,15513,15514,15515,15516,15517,15518,15519,15520,15521,15522,15523,15524,15525,15526,15527,15528,15529,15530,15531,15532,15533,15534,15535,15536,15537,15538,15539,15540,15541,15542,15543,15544,15545,15546,15547,15548,15549,15550,15551,15552,15553,15554,15555,15556,15557,15558,15559,15560,15561,15562,15563,15564,15565,15566,15567,15568,15569,15570,15571,15572,15573,15574,15575,15576,15577,15578,15579,15580,15581,15582,15583,15584,15585,15586,15587,15588,15589,15590,15591,15592,15593,15594,15595,15596,15597,15598,15599,15600,15601,15602,15603,15604,15605,15606,15607,15608,15609,15610,15611,15612,15613,15614,15615,15616,15617,15618,15619,15620,15621,15622,15623,15624,15625,15626,15627,15628,15629,15630,15631,15632,15633,15634,15635,15636,15637,15638,15639,15640,15641,15642,15643,15644,15645,15646,15647,15648,15649,15650,15651,15652,15653,15654,15655,15656,15657,15658,15659,15660,15661,15662,15663,15664,15665,15666,15667,15668,15669,15670,15671,15672,15673,15674,15675,15676,15677,15678,15679,15680,15681,15682,15683,15684,15685,15686,15687,15688,15689,15690,15691,15692,15693,15694,15695,15696,15697,15698,15699,15700,15701,15702,15703,15704,15705,15706,15707,15708,15709,15710,15711,15712,15713,15714,15715,15716,15717,15718,15719,15720,15721,15722,15723,15724,15725,15726,15727,15728,15729,15730,15731,15732,15733,15734,15735,15736,15737,15738,15739,15740,15741,15742,15743,15744,15745,15746,15747,15748,15749,15750,15751,15752,15753,15754,15755,15756,15757,15758,15759,15760,15761,15762,15763,15764,15765,15766,15767,15768,15769,15770,15771,15772,15773,15774,15775,15776,15777,15778,15779,15780,15781,15782,15783,15784,15785,15786,15787,15788,15789,15790,15791,15792,15793,15794,15795,15796,15797,15798,15799,15800,15801,15802,15803,15804,15805,15806,15807,15808,15809,15810,15811,15812,15813,15814,15815,15816,15817,15818,15819,15820,15821,15822,15823,15824,15825,15826,15827,15828,15829,15830,15831,15832,15833,15834,15835,15836,15837,15838,15839,15840,15841,15842,15843,15844,15845,15846,15847,15848,15849,15850,15851,15852,15853,15854,15855,15856,15857,15858,15859,15860,15861,15862,15863,15864,15865,15866,15867,15868,15869,15870,15871,15872,15873,15874,15875,15876,15877,15878,15879,15880,15881,15882,15883,15884,15885,15886,15887,15888,15889,15890,15891,15892,15893,15894,15895,15896,15897,15898,15899,15900,15901,15902,15903,15904,15905,15906,15907,15908,15909,15910,15911,15912,15913,15914,15915,15916,15917,15918,15919,15920,15921,15922,15923,15924,15925,15926,15927,15928,15929,15930,15931,15932,15933,15934,15935,15936,15937,15938,15939,15940,15941,15942,15943,15944,15945,15946,15947,15948,15949,15950,15951,15952,15953,15954,15955,15956,15957,15958,15959,15960,15961,15962,15963,15964,15965,15966,15967,15968,15969,15970,15971,15972,15973,15974,15975,15976,15977,15978,15979,15980,15981,15982,15983,15984,15985,15986,15987,15988,15989,15990,15991,15992,15993,15994,15995,15996,15997,15998,15999,16000,16001,16002,16003,16004,16005,16006,16007,16008,16009,16010,16011,16012,16013,16014,16015,16016,16017,16018,16019,16020,16021,16022,16023,16024,16025,16026,16027,16028,16029,16030,16031,16032,16033,16034,16035,16036,16037,16038,16039,16040,16041,16042,16043,16044,16045,16046,16047,16048,16049,16050,16051,16052,16053,16054,16055,16056,16057,16058,16059,16060,16061,16062,16063,16064,16065,16066,16067,16068,16069,16070,16071,16072,16073,16074,16075,16076,16077,16078,16079,16080,16081,16082,16083,16084,16085,16086,16087,16088,16089,16090,16091,16092,16093,16094,16095,16096,16097,16098,16099,16100,16101,16102,16103,16104,16105,16106,16107,16108,16109,16110,16111,16112,16113,16114,16115,16116,16117,16118,16119,16120,16121,16122,16123,16124,16125,16126,16127,16128,16129,16130,16131,16132,16133,16134,16135,16136,16137,16138,16139,16140,16141,16142,16143,16144,16145,16146,16147,16148,16149,16150,16151,16152,16153,16154,16155,16156,16157,16158,16159,16160,16161,16162,16163,16164,16165,16166,16167,16168,16169,16170,16171,16172,16173,16174,16175,16176,16177,16178,16179,16180,16181,16182,16183,16184,16185,16186,16187,16188,16189,16190,16191,16192,16193,16194,16195,16196,16197,16198,16199,16200,16201,16202,16203,16204,16205,16206,16207,16208,16209,16210,16211,16212,16213,16214,16215,16216,16217,16218,16219,16220,16221,16222,16223,16224,16225,16226,16227,16228,16229,16230,16231,16232,16233,16234,16235,16236,16237,16238,16239,16240,16241,16242,16243,16244,16245,16246,16247,16248,16249,16250,16251,16252,16253,16254,16255,16256,16257,16258,16259,16260,16261,16262,16263,16264,16265,16266,16267,16268,16269,16270,16271,16272,16273,16274,16275,16276,16277,16278,16279,16280,16281,16282,16283,16284,16285,16286,16287,16288,16289,16290,16291,16292,16293,16294,16295,16296,16297,16298,16299,16300,16301,16302,16303,16304,16305,16306,16307,16308,16309,16310,16311,16312,16313,16314,16315,16316,16317,16318,16319,16320,16321,16322,16323,16324,16325,16326,16327,16328,16329,16330,16331,16332,16333,16334,16335,16336,16337,16338,16339,16340,16341,16342,16343,16344,16345,16346,16347,16348,16349,16350,16351,16352,16353,16354,16355,16356,16357,16358,16359,16360,16361,16362,16363,16364,16365,16366,16367,16368,16369,16370,16371,16372,16373,16374,16375,16376,16377,16378,16379,16380,16381,16382,16383,16384,16385,16386,16387,16388,16389,16390,16391,16392,16393,16394,16395,16396,16397,16398,16399,16400,16401,16402,16403,16404,16405,16406,16407,16408,16409,16410,16411,16412,16413,16414,16415,16416,16417,16418,16419,16420,16421,16422,16423,16424,16425,16426,16427,16428,16429,16430,16431,16432,16433,16434,16435,16436,16437,16438,16439,16440,16441,16442,16443,16444,16445,16446,16447,16448,16449,16450,16451,16452,16453,16454,16455,16456,16457,16458,16459,16460,16461,16462,16463,16464,16465,16466,16467,16468,16469,16470,16471,16472,16473,16474,16475,16476,16477,16478,16479,16480,16481,16482,16483,16484,16485,16486,16487,16488,16489,16490,16491,16492,16493,16494,16495,16496,16497,16498,16499,16500,16501,16502,16503,16504,16505,16506,16507,16508,16509,16510,16511,16512,16513,16514,16515,16516,16517,16518,16519,16520,16521,16522,16523,16524,16525,16526,16527,16528,16529,16530,16531,16532,16533,16534,16535,16536,16537,16538,16539,16540,16541,16542,16543,16544,16545,16546,16547,16548,16549,16550,16551,16552,16553,16554,16555,16556,16557,16558,16559,16560,16561,16562,16563,16564,16565,16566,16567,16568,16569,16570,16571,16572,16573,16574,16575,16576,16577,16578,16579,16580,16581,16582,16583,16584,16585,16586,16587,16588,16589,16590,16591,16592,16593,16594,16595,16596,16597,16598,16599,16600,16601,16602,16603,16604,16605,16606,16607,16608,16609,16610,16611,16612,16613,16614,16615,16616,16617,16618,16619,16620,16621,16622,16623,16624,16625,16626,16627,16628,16629,16630,16631,16632,16633,16634,16635,16636,16637,16638,16639,16640,16641,16642,16643,16644,16645,16646,16647,16648,16649,16650,16651,16652,16653,16654,16655,16656,16657,16658,16659,16660,16661,16662,16663,16664,16665,16666,16667,16668,16669,16670,16671,16672,16673,16674,16675,16676,16677,16678,16679,16680,16681,16682,16683,16684,16685,16686,16687,16688,16689,16690,16691,16692,16693,16694,16695,16696,16697,16698,16699,16700,16701,16702,16703,16704,16705,16706,16707,16708,16709,16710,16711,16712,16713,16714,16715,16716,16717,16718,16719,16720,16721,16722,16723,16724,16725,16726,16727,16728,16729,16730,16731,16732,16733,16734,16735,16736,16737,16738,16739,16740,16741,16742,16743,16744,16745,16746,16747,16748,16749,16750,16751,16752,16753,16754,16755,16756,16757,16758,16759,16760,16761,16762,16763,16764,16765,16766,16767,16768,16769,16770,16771,16772,16773,16774,16775,16776,16777,16778,16779,16780,16781,16782,16783,16784,16785,16786,16787,16788,16789,16790,16791,16792,16793,16794,16795,16796,16797,16798,16799,16800,16801,16802,16803,16804,16805,16806,16807,16808,16809,16810,16811,16812,16813,16814,16815,16816,16817,16818,16819,16820,16821,16822,16823,16824,16825,16826,16827,16828,16829,16830,16831,16832,16833,16834,16835,16836,16837,16838,16839,16840,16841,16842,16843,16844,16845,16846,16847,16848,16849,16850,16851,16852,16853,16854,16855,16856,16857,16858,16859,16860,16861,16862,16863,16864,16865,16866,16867,16868,16869,16870,16871,16872,16873,16874,16875,16876,16877,16878,16879,16880,16881,16882,16883,16884,16885,16886,16887,16888,16889,16890,16891,16892,16893,16894,16895,16896,16897,16898,16899,16900,16901,16902,16903,16904,16905,16906,16907,16908,16909,16910,16911,16912,16913,16914,16915,16916,16917,16918,16919,16920,16921,16922,16923,16924,16925,16926,16927,16928,16929,16930,16931,16932,16933,16934,16935,16936,16937,16938,16939,16940,16941,16942,16943,16944,16945,16946,16947,16948,16949,16950,16951,16952,16953,16954,16955,16956,16957,16958,16959,16960,16961,16962,16963,16964,16965,16966,16967,16968,16969,16970,16971,16972,16973,16974,16975,16976,16977,16978,16979,16980,16981,16982,16983,16984,16985,16986,16987,16988,16989,16990,16991,16992,16993,16994,16995,16996,16997,16998,16999,17000,17001,17002,17003,17004,17005,17006,17007,17008,17009,17010,17011,17012,17013,17014,17015,17016,17017,17018,17019,17020,17021,17022,17023,17024,17025,17026,17027,17028,17029,17030,17031,17032,17033,17034,17035,17036,17037,17038,17039,17040,17041,17042,17043,17044,17045,17046,17047,17048,17049,17050,17051,17052,17053,17054,17055,17056,17057,17058,17059,17060,17061,17062,17063,17064,17065,17066,17067,17068,17069,17070,17071,17072,17073,17074,17075,17076,17077,17078,17079,17080,17081,17082,17083,17084,17085,17086,17087,17088,17089,17090,17091,17092,17093,17094,17095,17096,17097,17098,17099,17100,17101,17102,17103,17104,17105,17106,17107,17108,17109,17110,17111,17112,17113,17114,17115,17116,17117,17118,17119,17120,17121,17122,17123,17124,17125,17126,17127,17128,17129,17130,17131,17132,17133,17134,17135,17136,17137,17138,17139,17140,17141,17142,17143,17144,17145,17146,17147,17148,17149,17150,17151,17152,17153,17154,17155,17156,17157,17158,17159,17160,17161,17162,17163,17164,17165,17166,17167,17168,17169,17170,17171,17172,17173,17174,17175,17176,17177,17178,17179,17180,17181,17182,17183,17184,17185,17186,17187,17188,17189,17190,17191,17192,17193,17194,17195,17196,17197,17198,17199,17200,17201,17202,17203,17204,17205,17206,17207,17208,17209,17210,17211,17212,17213,17214,17215,17216,17217,17218,17219,17220,17221,17222,17223,17224,17225,17226,17227,17228,17229,17230,17231,17232,17233,17234,17235,17236,17237,17238,17239,17240,17241,17242,17243,17244,17245,17246,17247,17248,17249,17250,17251,17252,17253,17254,17255,17256,17257,17258,17259,17260,17261,17262,17263,17264,17265,17266,17267,17268,17269,17270,17271,17272,17273,17274,17275,17276,17277,17278,17279,17280,17281,17282,17283,17284,17285,17286,17287,17288,17289,17290,17291,17292,17293,17294,17295,17296,17297,17298,17299,17300,17301,17302,17303,17304,17305,17306,17307,17308,17309,17310,17311,17312,17313,17314,17315,17316,17317,17318,17319,17320,17321,17322,17323,17324,17325,17326,17327,17328,17329,17330,17331,17332,17333,17334,17335,17336,17337,17338,17339,17340,17341,17342,17343,17344,17345,17346,17347,17348,17349,17350,17351,17352,17353,17354,17355,17356,17357,17358,17359,17360,17361,17362,17363,17364,17365,17366,17367,17368,17369,17370,17371,17372,17373,17374,17375,17376,17377,17378,17379,17380,17381,17382,17383,17384,17385,17386,17387,17388,17389,17390,17391,17392,17393,17394,17395,17396,17397,17398,17399,17400,17401,17402,17403,17404,17405,17406,17407,17408,17409,17410,17411,17412,17413,17414,17415,17416,17417,17418,17419,17420,17421,17422,17423,17424,17425,17426,17427,17428,17429,17430,17431,17432,17433,17434,17435,17436,17437,17438,17439,17440,17441,17442,17443,17444,17445,17446,17447,17448,17449,17450,17451,17452,17453,17454,17455,17456,17457,17458,17459,17460,17461,17462,17463,17464,17465,17466,17467,17468,17469,17470,17471,17472,17473,17474,17475,17476,17477,17478,17479,17480,17481,17482,17483,17484,17485,17486,17487,17488,17489,17490,17491,17492,17493,17494,17495,17496,17497,17498,17499,17500,17501,17502,17503,17504,17505,17506,17507,17508,17509,17510,17511,17512,17513,17514,17515,17516,17517,17518,17519,17520,17521,17522,17523,17524,17525,17526,17527,17528,17529,17530,17531,17532,17533,17534,17535,17536,17537,17538,17539,17540,17541,17542,17543,17544,17545,17546,17547,17548,17549,17550,17551,17552,17553,17554,17555,17556,17557,17558,17559,17560,17561,17562,17563,17564,17565,17566,17567,17568,17569,17570,17571,17572,17573,17574,17575,17576,17577,17578,17579,17580,17581,17582,17583,17584,17585,17586,17587,17588,17589,17590,17591,17592,17593,17594,17595,17596,17597,17598,17599,17600,17601,17602,17603,17604,17605,17606,17607,17608,17609,17610,17611,17612,17613,17614,17615,17616,17617,17618,17619,17620,17621,17622,17623,17624,17625,17626,17627,17628,17629,17630,17631,17632,17633,17634,17635,17636,17637,17638,17639,17640,17641,17642,17643,17644,17645,17646,17647,17648,17649,17650,17651,17652,17653,17654,17655,17656,17657,17658,17659,17660,17661,17662,17663,17664,17665,17666,17667,17668,17669,17670,17671,17672,17673,17674,17675,17676,17677,17678,17679,17680,17681,17682,17683,17684,17685,17686,17687,17688,17689,17690,17691,17692,17693,17694,17695,17696,17697,17698,17699,17700,17701,17702,17703,17704,17705,17706,17707,17708,17709,17710,17711,17712,17713,17714,17715,17716,17717,17718,17719,17720,17721,17722,17723,17724,17725,17726,17727,17728,17729,17730,17731,17732,17733,17734,17735,17736,17737,17738,17739,17740,17741,17742,17743,17744,17745,17746,17747,17748,17749,17750,17751,17752,17753,17754,17755,17756,17757,17758,17759,17760,17761,17762,17763,17764,17765,17766,17767,17768,17769,17770,17771,17772,17773,17774,17775,17776,17777,17778,17779,17780,17781,17782,17783,17784,17785,17786,17787,17788,17789,17790,17791,17792,17793,17794,17795,17796,17797,17798,17799,17800,17801,17802,17803,17804,17805,17806,17807,17808,17809,17810,17811,17812,17813,17814,17815,17816,17817,17818,17819,17820,17821,17822,17823,17824,17825,17826,17827,17828,17829,17830,17831,17832,17833,17834,17835,17836,17837,17838,17839,17840,17841,17842,17843,17844,17845,17846,17847,17848,17849,17850,17851,17852,17853,17854,17855,17856,17857,17858,17859,17860,17861,17862,17863,17864,17865,17866,17867,17868,17869,17870,17871,17872,17873,17874,17875,17876,17877,17878,17879,17880,17881,17882,17883,17884,17885,17886,17887,17888,17889,17890,17891,17892,17893,17894,17895,17896,17897,17898,17899,17900,17901,17902,17903,17904,17905,17906,17907,17908,17909,17910,17911,17912,17913,17914,17915,17916,17917,17918,17919,17920,17921,17922,17923,17924,17925,17926,17927,17928,17929,17930,17931,17932,17933,17934,17935,17936,17937,17938,17939,17940,17941,17942,17943,17944,17945,17946,17947,17948,17949,17950,17951,17952,17953,17954,17955,17956,17957,17958,17959,17960,17961,17962,17963,17964,17965,17966,17967,17968,17969,17970,17971,17972,17973,17974,17975,17976,17977,17978,17979,17980,17981,17982,17983,17984,17985,17986,17987,17988,17989,17990,17991,17992,17993,17994,17995,17996,17997,17998,17999,18000,18001,18002,18003,18004,18005,18006,18007,18008,18009,18010,18011,18012,18013,18014,18015,18016,18017,18018,18019,18020,18021,18022,18023,18024,18025,18026,18027,18028,18029,18030,18031,18032,18033,18034,18035,18036,18037,18038,18039,18040,18041,18042,18043,18044,18045,18046,18047,18048,18049,18050,18051,18052,18053,18054,18055,18056,18057,18058,18059,18060,18061,18062,18063,18064,18065,18066,18067,18068,18069,18070,18071,18072,18073,18074,18075,18076,18077,18078,18079,18080,18081,18082,18083,18084,18085,18086,18087,18088,18089,18090,18091,18092,18093,18094,18095,18096,18097,18098,18099,18100,18101,18102,18103,18104,18105,18106,18107,18108,18109,18110,18111,18112,18113,18114,18115,18116,18117,18118,18119,18120,18121,18122,18123,18124,18125,18126,18127,18128,18129,18130,18131,18132,18133,18134,18135,18136,18137,18138,18139,18140,18141,18142,18143,18144,18145,18146,18147,18148,18149,18150,18151,18152,18153,18154,18155,18156,18157,18158,18159,18160,18161,18162,18163,18164,18165,18166,18167,18168,18169,18170,18171,18172,18173,18174,18175,18176,18177,18178,18179,18180,18181,18182,18183,18184,18185,18186,18187,18188,18189,18190,18191,18192,18193,18194,18195,18196,18197,18198,18199,18200,18201,18202,18203,18204,18205,18206,18207,18208,18209,18210,18211,18212,18213,18214,18215,18216,18217,18218,18219,18220,18221,18222,18223,18224,18225,18226,18227,18228,18229,18230,18231,18232,18233,18234,18235,18236,18237,18238,18239,18240,18241,18242,18243,18244,18245,18246,18247,18248,18249,18250,18251,18252,18253,18254,18255,18256,18257,18258,18259,18260,18261,18262,18263,18264,18265,18266,18267,18268,18269,18270,18271,18272,18273,18274,18275,18276,18277,18278,18279,18280,18281,18282,18283,18284,18285,18286,18287,18288,18289,18290,18291,18292,18293,18294,18295,18296,18297,18298,18299,18300,18301,18302,18303,18304,18305,18306,18307,18308,18309,18310,18311,18312,18313,18314,18315,18316,18317,18318,18319,18320,18321,18322,18323,18324,18325,18326,18327,18328,18329,18330,18331,18332,18333,18334,18335,18336,18337,18338,18339,18340,18341,18342,18343,18344,18345,18346,18347,18348,18349,18350,18351,18352,18353,18354,18355,18356,18357,18358,18359,18360,18361,18362,18363,18364,18365,18366,18367,18368,18369,18370,18371,18372,18373,18374,18375,18376,18377,18378,18379,18380,18381,18382,18383,18384,18385,18386,18387,18388,18389,18390,18391,18392,18393,18394,18395,18396,18397,18398,18399,18400,18401,18402,18403,18404,18405,18406,18407,18408,18409,18410,18411,18412,18413,18414,18415,18416,18417,18418,18419,18420,18421,18422,18423,18424,18425,18426,18427,18428,18429,18430,18431,18432,18433,18434,18435,18436,18437,18438,18439,18440,18441,18442,18443,18444,18445,18446,18447,18448,18449,18450,18451,18452,18453,18454,18455,18456,18457,18458,18459,18460,18461,18462,18463,18464,18465,18466,18467,18468,18469,18470,18471,18472,18473,18474,18475,18476,18477,18478,18479,18480,18481,18482,18483,18484,18485,18486,18487,18488,18489,18490,18491,18492,18493,18494,18495,18496,18497,18498,18499,18500,18501,18502,18503,18504,18505,18506,18507,18508,18509,18510,18511,18512,18513,18514,18515,18516,18517,18518,18519,18520,18521,18522,18523,18524,18525,18526,18527,18528,18529,18530,18531,18532,18533,18534,18535,18536,18537,18538,18539,18540,18541,18542,18543,18544,18545,18546,18547,18548,18549,18550,18551,18552,18553,18554,18555,18556,18557,18558,18559,18560,18561,18562,18563,18564,18565,18566,18567,18568,18569,18570,18571,18572,18573,18574,18575,18576,18577,18578,18579,18580,18581,18582,18583,18584,18585,18586,18587,18588,18589,18590,18591,18592,18593,18594,18595,18596,18597,18598,18599,18600,18601,18602,18603,18604,18605,18606,18607,18608,18609,18610,18611,18612,18613,18614,18615,18616,18617,18618,18619,18620,18621,18622,18623,18624,18625,18626,18627,18628,18629,18630,18631,18632,18633,18634,18635,18636,18637,18638,18639,18640,18641,18642,18643,18644,18645,18646,18647,18648,18649,18650,18651,18652,18653,18654,18655,18656,18657,18658,18659,18660,18661,18662,18663,18664,18665,18666,18667,18668,18669,18670,18671,18672,18673,18674,18675,18676,18677,18678,18679,18680,18681,18682,18683,18684,18685,18686,18687,18688,18689,18690,18691,18692,18693,18694,18695,18696,18697,18698,18699,18700,18701,18702,18703,18704,18705,18706,18707,18708,18709,18710,18711,18712,18713,18714,18715,18716,18717,18718,18719,18720,18721,18722,18723,18724,18725,18726,18727,18728,18729,18730,18731,18732,18733,18734,18735,18736,18737,18738,18739,18740,18741,18742,18743,18744,18745,18746,18747,18748,18749,18750,18751,18752,18753,18754,18755,18756,18757,18758,18759,18760,18761,18762,18763,18764,18765,18766,18767,18768,18769,18770,18771,18772,18773,18774,18775,18776,18777,18778,18779,18780,18781,18782,18783,18784,18785,18786,18787,18788,18789,18790,18791,18792,18793,18794,18795,18796,18797,18798,18799,18800,18801,18802,18803,18804,18805,18806,18807,18808,18809,18810,18811,18812,18813,18814,18815,18816,18817,18818,18819,18820,18821,18822,18823,18824,18825,18826,18827,18828,18829,18830,18831,18832,18833,18834,18835,18836,18837,18838,18839,18840,18841,18842,18843,18844,18845,18846,18847,18848,18849,18850,18851,18852,18853,18854,18855,18856,18857,18858,18859,18860,18861,18862,18863,18864,18865,18866,18867,18868,18869,18870,18871,18872,18873,18874,18875,18876,18877,18878,18879,18880,18881,18882,18883,18884,18885,18886,18887,18888,18889,18890,18891,18892,18893,18894,18895,18896,18897,18898,18899,18900,18901,18902,18903,18904,18905,18906,18907,18908,18909,18910,18911,18912,18913,18914,18915,18916,18917,18918,18919,18920,18921,18922,18923,18924,18925,18926,18927,18928,18929,18930,18931,18932,18933,18934,18935,18936,18937,18938,18939,18940,18941,18942,18943,18944,18945,18946,18947,18948,18949,18950,18951,18952,18953,18954,18955,18956,18957,18958,18959,18960,18961,18962,18963,18964,18965,18966,18967,18968,18969,18970,18971,18972,18973,18974,18975,18976,18977,18978,18979,18980,18981,18982,18983,18984,18985,18986,18987,18988,18989,18990,18991,18992,18993,18994,18995,18996,18997,18998,18999,19000,19001,19002,19003,19004,19005,19006,19007,19008,19009,19010,19011,19012,19013,19014,19015,19016,19017,19018,19019,19020,19021,19022,19023,19024,19025,19026,19027,19028,19029,19030,19031,19032,19033,19034,19035,19036,19037,19038,19039,19040,19041,19042,19043,19044,19045,19046,19047,19048,19049,19050,19051,19052,19053,19054,19055,19056,19057,19058,19059,19060,19061,19062,19063,19064,19065,19066,19067,19068,19069,19070,19071,19072,19073,19074,19075,19076,19077,19078,19079,19080,19081,19082,19083,19084,19085,19086,19087,19088,19089,19090,19091,19092,19093,19094,19095,19096,19097,19098,19099,19100,19101,19102,19103,19104,19105,19106,19107,19108,19109,19110,19111,19112,19113,19114,19115,19116,19117,19118,19119,19120,19121,19122,19123,19124,19125,19126,19127,19128,19129,19130,19131,19132,19133,19134,19135,19136,19137,19138,19139,19140,19141,19142,19143,19144,19145,19146,19147,19148,19149,19150,19151,19152,19153,19154,19155,19156,19157,19158,19159,19160,19161,19162,19163,19164,19165,19166,19167,19168,19169,19170,19171,19172,19173,19174,19175,19176,19177,19178,19179,19180,19181,19182,19183,19184,19185,19186,19187,19188,19189,19190,19191,19192,19193,19194,19195,19196,19197,19198,19199,19200,19201,19202,19203,19204,19205,19206,19207,19208,19209,19210,19211,19212,19213,19214,19215,19216,19217,19218,19219,19220,19221,19222,19223,19224,19225,19226,19227,19228,19229,19230,19231,19232,19233,19234,19235,19236,19237,19238,19239,19240,19241,19242,19243,19244,19245,19246,19247,19248,19249,19250,19251,19252,19253,19254,19255,19256,19257,19258,19259,19260,19261,19262,19263,19264,19265,19266,19267,19268,19269,19270,19271,19272,19273,19274,19275,19276,19277,19278,19279,19280,19281,19282,19283,19284,19285,19286,19287,19288,19289,19290,19291,19292,19293,19294,19295,19296,19297,19298,19299,19300,19301,19302,19303,19304,19305,19306,19307,19308,19309,19310,19311,19312,19313,19314,19315,19316,19317,19318,19319,19320,19321,19322,19323,19324,19325,19326,19327,19328,19329,19330,19331,19332,19333,19334,19335,19336,19337,19338,19339,19340,19341,19342,19343,19344,19345,19346,19347,19348,19349,19350,19351,19352,19353,19354,19355,19356,19357,19358,19359,19360,19361,19362,19363,19364,19365,19366,19367,19368,19369,19370,19371,19372,19373,19374,19375,19376,19377,19378,19379,19380,19381,19382,19383,19384,19385,19386,19387,19388,19389,19390,19391,19392,19393,19394,19395,19396,19397,19398,19399,19400,19401,19402,19403,19404,19405,19406,19407,19408,19409,19410,19411,19412,19413,19414,19415,19416,19417,19418,19419,19420,19421,19422,19423,19424,19425,19426,19427,19428,19429,19430,19431,19432,19433,19434,19435,19436,19437,19438,19439,19440,19441,19442,19443,19444,19445,19446,19447,19448,19449,19450,19451,19452,19453,19454,19455,19456,19457,19458,19459,19460,19461,19462,19463,19464,19465,19466,19467,19468,19469,19470,19471,19472,19473,19474,19475,19476,19477,19478,19479,19480,19481,19482,19483,19484,19485,19486,19487,19488,19489,19490,19491,19492,19493,19494,19495,19496,19497,19498,19499,19500,19501,19502,19503,19504,19505,19506,19507,19508,19509,19510,19511,19512,19513,19514,19515,19516,19517,19518,19519,19520,19521,19522,19523,19524,19525,19526,19527,19528,19529,19530,19531,19532,19533,19534,19535,19536,19537,19538,19539,19540,19541,19542,19543,19544,19545,19546,19547,19548,19549,19550,19551,19552,19553,19554,19555,19556,19557,19558,19559,19560,19561,19562,19563,19564,19565,19566,19567,19568,19569,19570,19571,19572,19573,19574,19575,19576,19577,19578,19579,19580,19581,19582,19583,19584,19585,19586,19587,19588,19589,19590,19591,19592,19593,19594,19595,19596,19597,19598,19599,19600,19601,19602,19603,19604,19605,19606,19607,19608,19609,19610,19611,19612,19613,19614,19615,19616,19617,19618,19619,19620,19621,19622,19623,19624,19625,19626,19627,19628,19629,19630,19631,19632,19633,19634,19635,19636,19637,19638,19639,19640,19641,19642,19643,19644,19645,19646,19647,19648,19649,19650,19651,19652,19653,19654,19655,19656,19657,19658,19659,19660,19661,19662,19663,19664,19665,19666,19667,19668,19669,19670,19671,19672,19673,19674,19675,19676,19677,19678,19679,19680,19681,19682,19683,19684,19685,19686,19687,19688,19689,19690,19691,19692,19693,19694,19695,19696,19697,19698,19699,19700,19701,19702,19703,19704,19705,19706,19707,19708,19709,19710,19711,19712,19713,19714,19715,19716,19717,19718,19719,19720,19721,19722,19723,19724,19725,19726,19727,19728,19729,19730,19731,19732,19733,19734,19735,19736,19737,19738,19739,19740,19741,19742,19743,19744,19745,19746,19747,19748,19749,19750,19751,19752,19753,19754,19755,19756,19757,19758,19759,19760,19761,19762,19763,19764,19765,19766,19767,19768,19769,19770,19771,19772,19773,19774,19775,19776,19777,19778,19779,19780,19781,19782,19783,19784,19785,19786,19787,19788,19789,19790,19791,19792,19793,19794,19795,19796,19797,19798,19799,19800,19801,19802,19803,19804,19805,19806,19807,19808,19809,19810,19811,19812,19813,19814,19815,19816,19817,19818,19819,19820,19821,19822,19823,19824,19825,19826,19827,19828,19829,19830,19831,19832,19833,19834,19835,19836,19837,19838,19839,19840,19841,19842,19843,19844,19845,19846,19847,19848,19849,19850,19851,19852,19853,19854,19855,19856,19857,19858,19859,19860,19861,19862,19863,19864,19865,19866,19867,19868,19869,19870,19871,19872,19873,19874,19875,19876,19877,19878,19879,19880,19881,19882,19883,19884,19885,19886,19887,19888,19889,19890,19891,19892,19893,19968,19969,19970,19971,19972,19973,19974,19975,19976,19977,19978,19979,19980,19981,19982,19983,19984,19985,19986,19987,19988,19989,19990,19991,19992,19993,19994,19995,19996,19997,19998,19999,20000,20001,20002,20003,20004,20005,20006,20007,20008,20009,20010,20011,20012,20013,20014,20015,20016,20017,20018,20019,20020,20021,20022,20023,20024,20025,20026,20027,20028,20029,20030,20031,20032,20033,20034,20035,20036,20037,20038,20039,20040,20041,20042,20043,20044,20045,20046,20047,20048,20049,20050,20051,20052,20053,20054,20055,20056,20057,20058,20059,20060,20061,20062,20063,20064,20065,20066,20067,20068,20069,20070,20071,20072,20073,20074,20075,20076,20077,20078,20079,20080,20081,20082,20083,20084,20085,20086,20087,20088,20089,20090,20091,20092,20093,20094,20095,20096,20097,20098,20099,20100,20101,20102,20103,20104,20105,20106,20107,20108,20109,20110,20111,20112,20113,20114,20115,20116,20117,20118,20119,20120,20121,20122,20123,20124,20125,20126,20127,20128,20129,20130,20131,20132,20133,20134,20135,20136,20137,20138,20139,20140,20141,20142,20143,20144,20145,20146,20147,20148,20149,20150,20151,20152,20153,20154,20155,20156,20157,20158,20159,20160,20161,20162,20163,20164,20165,20166,20167,20168,20169,20170,20171,20172,20173,20174,20175,20176,20177,20178,20179,20180,20181,20182,20183,20184,20185,20186,20187,20188,20189,20190,20191,20192,20193,20194,20195,20196,20197,20198,20199,20200,20201,20202,20203,20204,20205,20206,20207,20208,20209,20210,20211,20212,20213,20214,20215,20216,20217,20218,20219,20220,20221,20222,20223,20224,20225,20226,20227,20228,20229,20230,20231,20232,20233,20234,20235,20236,20237,20238,20239,20240,20241,20242,20243,20244,20245,20246,20247,20248,20249,20250,20251,20252,20253,20254,20255,20256,20257,20258,20259,20260,20261,20262,20263,20264,20265,20266,20267,20268,20269,20270,20271,20272,20273,20274,20275,20276,20277,20278,20279,20280,20281,20282,20283,20284,20285,20286,20287,20288,20289,20290,20291,20292,20293,20294,20295,20296,20297,20298,20299,20300,20301,20302,20303,20304,20305,20306,20307,20308,20309,20310,20311,20312,20313,20314,20315,20316,20317,20318,20319,20320,20321,20322,20323,20324,20325,20326,20327,20328,20329,20330,20331,20332,20333,20334,20335,20336,20337,20338,20339,20340,20341,20342,20343,20344,20345,20346,20347,20348,20349,20350,20351,20352,20353,20354,20355,20356,20357,20358,20359,20360,20361,20362,20363,20364,20365,20366,20367,20368,20369,20370,20371,20372,20373,20374,20375,20376,20377,20378,20379,20380,20381,20382,20383,20384,20385,20386,20387,20388,20389,20390,20391,20392,20393,20394,20395,20396,20397,20398,20399,20400,20401,20402,20403,20404,20405,20406,20407,20408,20409,20410,20411,20412,20413,20414,20415,20416,20417,20418,20419,20420,20421,20422,20423,20424,20425,20426,20427,20428,20429,20430,20431,20432,20433,20434,20435,20436,20437,20438,20439,20440,20441,20442,20443,20444,20445,20446,20447,20448,20449,20450,20451,20452,20453,20454,20455,20456,20457,20458,20459,20460,20461,20462,20463,20464,20465,20466,20467,20468,20469,20470,20471,20472,20473,20474,20475,20476,20477,20478,20479,20480,20481,20482,20483,20484,20485,20486,20487,20488,20489,20490,20491,20492,20493,20494,20495,20496,20497,20498,20499,20500,20501,20502,20503,20504,20505,20506,20507,20508,20509,20510,20511,20512,20513,20514,20515,20516,20517,20518,20519,20520,20521,20522,20523,20524,20525,20526,20527,20528,20529,20530,20531,20532,20533,20534,20535,20536,20537,20538,20539,20540,20541,20542,20543,20544,20545,20546,20547,20548,20549,20550,20551,20552,20553,20554,20555,20556,20557,20558,20559,20560,20561,20562,20563,20564,20565,20566,20567,20568,20569,20570,20571,20572,20573,20574,20575,20576,20577,20578,20579,20580,20581,20582,20583,20584,20585,20586,20587,20588,20589,20590,20591,20592,20593,20594,20595,20596,20597,20598,20599,20600,20601,20602,20603,20604,20605,20606,20607,20608,20609,20610,20611,20612,20613,20614,20615,20616,20617,20618,20619,20620,20621,20622,20623,20624,20625,20626,20627,20628,20629,20630,20631,20632,20633,20634,20635,20636,20637,20638,20639,20640,20641,20642,20643,20644,20645,20646,20647,20648,20649,20650,20651,20652,20653,20654,20655,20656,20657,20658,20659,20660,20661,20662,20663,20664,20665,20666,20667,20668,20669,20670,20671,20672,20673,20674,20675,20676,20677,20678,20679,20680,20681,20682,20683,20684,20685,20686,20687,20688,20689,20690,20691,20692,20693,20694,20695,20696,20697,20698,20699,20700,20701,20702,20703,20704,20705,20706,20707,20708,20709,20710,20711,20712,20713,20714,20715,20716,20717,20718,20719,20720,20721,20722,20723,20724,20725,20726,20727,20728,20729,20730,20731,20732,20733,20734,20735,20736,20737,20738,20739,20740,20741,20742,20743,20744,20745,20746,20747,20748,20749,20750,20751,20752,20753,20754,20755,20756,20757,20758,20759,20760,20761,20762,20763,20764,20765,20766,20767,20768,20769,20770,20771,20772,20773,20774,20775,20776,20777,20778,20779,20780,20781,20782,20783,20784,20785,20786,20787,20788,20789,20790,20791,20792,20793,20794,20795,20796,20797,20798,20799,20800,20801,20802,20803,20804,20805,20806,20807,20808,20809,20810,20811,20812,20813,20814,20815,20816,20817,20818,20819,20820,20821,20822,20823,20824,20825,20826,20827,20828,20829,20830,20831,20832,20833,20834,20835,20836,20837,20838,20839,20840,20841,20842,20843,20844,20845,20846,20847,20848,20849,20850,20851,20852,20853,20854,20855,20856,20857,20858,20859,20860,20861,20862,20863,20864,20865,20866,20867,20868,20869,20870,20871,20872,20873,20874,20875,20876,20877,20878,20879,20880,20881,20882,20883,20884,20885,20886,20887,20888,20889,20890,20891,20892,20893,20894,20895,20896,20897,20898,20899,20900,20901,20902,20903,20904,20905,20906,20907,20908,20909,20910,20911,20912,20913,20914,20915,20916,20917,20918,20919,20920,20921,20922,20923,20924,20925,20926,20927,20928,20929,20930,20931,20932,20933,20934,20935,20936,20937,20938,20939,20940,20941,20942,20943,20944,20945,20946,20947,20948,20949,20950,20951,20952,20953,20954,20955,20956,20957,20958,20959,20960,20961,20962,20963,20964,20965,20966,20967,20968,20969,20970,20971,20972,20973,20974,20975,20976,20977,20978,20979,20980,20981,20982,20983,20984,20985,20986,20987,20988,20989,20990,20991,20992,20993,20994,20995,20996,20997,20998,20999,21000,21001,21002,21003,21004,21005,21006,21007,21008,21009,21010,21011,21012,21013,21014,21015,21016,21017,21018,21019,21020,21021,21022,21023,21024,21025,21026,21027,21028,21029,21030,21031,21032,21033,21034,21035,21036,21037,21038,21039,21040,21041,21042,21043,21044,21045,21046,21047,21048,21049,21050,21051,21052,21053,21054,21055,21056,21057,21058,21059,21060,21061,21062,21063,21064,21065,21066,21067,21068,21069,21070,21071,21072,21073,21074,21075,21076,21077,21078,21079,21080,21081,21082,21083,21084,21085,21086,21087,21088,21089,21090,21091,21092,21093,21094,21095,21096,21097,21098,21099,21100,21101,21102,21103,21104,21105,21106,21107,21108,21109,21110,21111,21112,21113,21114,21115,21116,21117,21118,21119,21120,21121,21122,21123,21124,21125,21126,21127,21128,21129,21130,21131,21132,21133,21134,21135,21136,21137,21138,21139,21140,21141,21142,21143,21144,21145,21146,21147,21148,21149,21150,21151,21152,21153,21154,21155,21156,21157,21158,21159,21160,21161,21162,21163,21164,21165,21166,21167,21168,21169,21170,21171,21172,21173,21174,21175,21176,21177,21178,21179,21180,21181,21182,21183,21184,21185,21186,21187,21188,21189,21190,21191,21192,21193,21194,21195,21196,21197,21198,21199,21200,21201,21202,21203,21204,21205,21206,21207,21208,21209,21210,21211,21212,21213,21214,21215,21216,21217,21218,21219,21220,21221,21222,21223,21224,21225,21226,21227,21228,21229,21230,21231,21232,21233,21234,21235,21236,21237,21238,21239,21240,21241,21242,21243,21244,21245,21246,21247,21248,21249,21250,21251,21252,21253,21254,21255,21256,21257,21258,21259,21260,21261,21262,21263,21264,21265,21266,21267,21268,21269,21270,21271,21272,21273,21274,21275,21276,21277,21278,21279,21280,21281,21282,21283,21284,21285,21286,21287,21288,21289,21290,21291,21292,21293,21294,21295,21296,21297,21298,21299,21300,21301,21302,21303,21304,21305,21306,21307,21308,21309,21310,21311,21312,21313,21314,21315,21316,21317,21318,21319,21320,21321,21322,21323,21324,21325,21326,21327,21328,21329,21330,21331,21332,21333,21334,21335,21336,21337,21338,21339,21340,21341,21342,21343,21344,21345,21346,21347,21348,21349,21350,21351,21352,21353,21354,21355,21356,21357,21358,21359,21360,21361,21362,21363,21364,21365,21366,21367,21368,21369,21370,21371,21372,21373,21374,21375,21376,21377,21378,21379,21380,21381,21382,21383,21384,21385,21386,21387,21388,21389,21390,21391,21392,21393,21394,21395,21396,21397,21398,21399,21400,21401,21402,21403,21404,21405,21406,21407,21408,21409,21410,21411,21412,21413,21414,21415,21416,21417,21418,21419,21420,21421,21422,21423,21424,21425,21426,21427,21428,21429,21430,21431,21432,21433,21434,21435,21436,21437,21438,21439,21440,21441,21442,21443,21444,21445,21446,21447,21448,21449,21450,21451,21452,21453,21454,21455,21456,21457,21458,21459,21460,21461,21462,21463,21464,21465,21466,21467,21468,21469,21470,21471,21472,21473,21474,21475,21476,21477,21478,21479,21480,21481,21482,21483,21484,21485,21486,21487,21488,21489,21490,21491,21492,21493,21494,21495,21496,21497,21498,21499,21500,21501,21502,21503,21504,21505,21506,21507,21508,21509,21510,21511,21512,21513,21514,21515,21516,21517,21518,21519,21520,21521,21522,21523,21524,21525,21526,21527,21528,21529,21530,21531,21532,21533,21534,21535,21536,21537,21538,21539,21540,21541,21542,21543,21544,21545,21546,21547,21548,21549,21550,21551,21552,21553,21554,21555,21556,21557,21558,21559,21560,21561,21562,21563,21564,21565,21566,21567,21568,21569,21570,21571,21572,21573,21574,21575,21576,21577,21578,21579,21580,21581,21582,21583,21584,21585,21586,21587,21588,21589,21590,21591,21592,21593,21594,21595,21596,21597,21598,21599,21600,21601,21602,21603,21604,21605,21606,21607,21608,21609,21610,21611,21612,21613,21614,21615,21616,21617,21618,21619,21620,21621,21622,21623,21624,21625,21626,21627,21628,21629,21630,21631,21632,21633,21634,21635,21636,21637,21638,21639,21640,21641,21642,21643,21644,21645,21646,21647,21648,21649,21650,21651,21652,21653,21654,21655,21656,21657,21658,21659,21660,21661,21662,21663,21664,21665,21666,21667,21668,21669,21670,21671,21672,21673,21674,21675,21676,21677,21678,21679,21680,21681,21682,21683,21684,21685,21686,21687,21688,21689,21690,21691,21692,21693,21694,21695,21696,21697,21698,21699,21700,21701,21702,21703,21704,21705,21706,21707,21708,21709,21710,21711,21712,21713,21714,21715,21716,21717,21718,21719,21720,21721,21722,21723,21724,21725,21726,21727,21728,21729,21730,21731,21732,21733,21734,21735,21736,21737,21738,21739,21740,21741,21742,21743,21744,21745,21746,21747,21748,21749,21750,21751,21752,21753,21754,21755,21756,21757,21758,21759,21760,21761,21762,21763,21764,21765,21766,21767,21768,21769,21770,21771,21772,21773,21774,21775,21776,21777,21778,21779,21780,21781,21782,21783,21784,21785,21786,21787,21788,21789,21790,21791,21792,21793,21794,21795,21796,21797,21798,21799,21800,21801,21802,21803,21804,21805,21806,21807,21808,21809,21810,21811,21812,21813,21814,21815,21816,21817,21818,21819,21820,21821,21822,21823,21824,21825,21826,21827,21828,21829,21830,21831,21832,21833,21834,21835,21836,21837,21838,21839,21840,21841,21842,21843,21844,21845,21846,21847,21848,21849,21850,21851,21852,21853,21854,21855,21856,21857,21858,21859,21860,21861,21862,21863,21864,21865,21866,21867,21868,21869,21870,21871,21872,21873,21874,21875,21876,21877,21878,21879,21880,21881,21882,21883,21884,21885,21886,21887,21888,21889,21890,21891,21892,21893,21894,21895,21896,21897,21898,21899,21900,21901,21902,21903,21904,21905,21906,21907,21908,21909,21910,21911,21912,21913,21914,21915,21916,21917,21918,21919,21920,21921,21922,21923,21924,21925,21926,21927,21928,21929,21930,21931,21932,21933,21934,21935,21936,21937,21938,21939,21940,21941,21942,21943,21944,21945,21946,21947,21948,21949,21950,21951,21952,21953,21954,21955,21956,21957,21958,21959,21960,21961,21962,21963,21964,21965,21966,21967,21968,21969,21970,21971,21972,21973,21974,21975,21976,21977,21978,21979,21980,21981,21982,21983,21984,21985,21986,21987,21988,21989,21990,21991,21992,21993,21994,21995,21996,21997,21998,21999,22000,22001,22002,22003,22004,22005,22006,22007,22008,22009,22010,22011,22012,22013,22014,22015,22016,22017,22018,22019,22020,22021,22022,22023,22024,22025,22026,22027,22028,22029,22030,22031,22032,22033,22034,22035,22036,22037,22038,22039,22040,22041,22042,22043,22044,22045,22046,22047,22048,22049,22050,22051,22052,22053,22054,22055,22056,22057,22058,22059,22060,22061,22062,22063,22064,22065,22066,22067,22068,22069,22070,22071,22072,22073,22074,22075,22076,22077,22078,22079,22080,22081,22082,22083,22084,22085,22086,22087,22088,22089,22090,22091,22092,22093,22094,22095,22096,22097,22098,22099,22100,22101,22102,22103,22104,22105,22106,22107,22108,22109,22110,22111,22112,22113,22114,22115,22116,22117,22118,22119,22120,22121,22122,22123,22124,22125,22126,22127,22128,22129,22130,22131,22132,22133,22134,22135,22136,22137,22138,22139,22140,22141,22142,22143,22144,22145,22146,22147,22148,22149,22150,22151,22152,22153,22154,22155,22156,22157,22158,22159,22160,22161,22162,22163,22164,22165,22166,22167,22168,22169,22170,22171,22172,22173,22174,22175,22176,22177,22178,22179,22180,22181,22182,22183,22184,22185,22186,22187,22188,22189,22190,22191,22192,22193,22194,22195,22196,22197,22198,22199,22200,22201,22202,22203,22204,22205,22206,22207,22208,22209,22210,22211,22212,22213,22214,22215,22216,22217,22218,22219,22220,22221,22222,22223,22224,22225,22226,22227,22228,22229,22230,22231,22232,22233,22234,22235,22236,22237,22238,22239,22240,22241,22242,22243,22244,22245,22246,22247,22248,22249,22250,22251,22252,22253,22254,22255,22256,22257,22258,22259,22260,22261,22262,22263,22264,22265,22266,22267,22268,22269,22270,22271,22272,22273,22274,22275,22276,22277,22278,22279,22280,22281,22282,22283,22284,22285,22286,22287,22288,22289,22290,22291,22292,22293,22294,22295,22296,22297,22298,22299,22300,22301,22302,22303,22304,22305,22306,22307,22308,22309,22310,22311,22312,22313,22314,22315,22316,22317,22318,22319,22320,22321,22322,22323,22324,22325,22326,22327,22328,22329,22330,22331,22332,22333,22334,22335,22336,22337,22338,22339,22340,22341,22342,22343,22344,22345,22346,22347,22348,22349,22350,22351,22352,22353,22354,22355,22356,22357,22358,22359,22360,22361,22362,22363,22364,22365,22366,22367,22368,22369,22370,22371,22372,22373,22374,22375,22376,22377,22378,22379,22380,22381,22382,22383,22384,22385,22386,22387,22388,22389,22390,22391,22392,22393,22394,22395,22396,22397,22398,22399,22400,22401,22402,22403,22404,22405,22406,22407,22408,22409,22410,22411,22412,22413,22414,22415,22416,22417,22418,22419,22420,22421,22422,22423,22424,22425,22426,22427,22428,22429,22430,22431,22432,22433,22434,22435,22436,22437,22438,22439,22440,22441,22442,22443,22444,22445,22446,22447,22448,22449,22450,22451,22452,22453,22454,22455,22456,22457,22458,22459,22460,22461,22462,22463,22464,22465,22466,22467,22468,22469,22470,22471,22472,22473,22474,22475,22476,22477,22478,22479,22480,22481,22482,22483,22484,22485,22486,22487,22488,22489,22490,22491,22492,22493,22494,22495,22496,22497,22498,22499,22500,22501,22502,22503,22504,22505,22506,22507,22508,22509,22510,22511,22512,22513,22514,22515,22516,22517,22518,22519,22520,22521,22522,22523,22524,22525,22526,22527,22528,22529,22530,22531,22532,22533,22534,22535,22536,22537,22538,22539,22540,22541,22542,22543,22544,22545,22546,22547,22548,22549,22550,22551,22552,22553,22554,22555,22556,22557,22558,22559,22560,22561,22562,22563,22564,22565,22566,22567,22568,22569,22570,22571,22572,22573,22574,22575,22576,22577,22578,22579,22580,22581,22582,22583,22584,22585,22586,22587,22588,22589,22590,22591,22592,22593,22594,22595,22596,22597,22598,22599,22600,22601,22602,22603,22604,22605,22606,22607,22608,22609,22610,22611,22612,22613,22614,22615,22616,22617,22618,22619,22620,22621,22622,22623,22624,22625,22626,22627,22628,22629,22630,22631,22632,22633,22634,22635,22636,22637,22638,22639,22640,22641,22642,22643,22644,22645,22646,22647,22648,22649,22650,22651,22652,22653,22654,22655,22656,22657,22658,22659,22660,22661,22662,22663,22664,22665,22666,22667,22668,22669,22670,22671,22672,22673,22674,22675,22676,22677,22678,22679,22680,22681,22682,22683,22684,22685,22686,22687,22688,22689,22690,22691,22692,22693,22694,22695,22696,22697,22698,22699,22700,22701,22702,22703,22704,22705,22706,22707,22708,22709,22710,22711,22712,22713,22714,22715,22716,22717,22718,22719,22720,22721,22722,22723,22724,22725,22726,22727,22728,22729,22730,22731,22732,22733,22734,22735,22736,22737,22738,22739,22740,22741,22742,22743,22744,22745,22746,22747,22748,22749,22750,22751,22752,22753,22754,22755,22756,22757,22758,22759,22760,22761,22762,22763,22764,22765,22766,22767,22768,22769,22770,22771,22772,22773,22774,22775,22776,22777,22778,22779,22780,22781,22782,22783,22784,22785,22786,22787,22788,22789,22790,22791,22792,22793,22794,22795,22796,22797,22798,22799,22800,22801,22802,22803,22804,22805,22806,22807,22808,22809,22810,22811,22812,22813,22814,22815,22816,22817,22818,22819,22820,22821,22822,22823,22824,22825,22826,22827,22828,22829,22830,22831,22832,22833,22834,22835,22836,22837,22838,22839,22840,22841,22842,22843,22844,22845,22846,22847,22848,22849,22850,22851,22852,22853,22854,22855,22856,22857,22858,22859,22860,22861,22862,22863,22864,22865,22866,22867,22868,22869,22870,22871,22872,22873,22874,22875,22876,22877,22878,22879,22880,22881,22882,22883,22884,22885,22886,22887,22888,22889,22890,22891,22892,22893,22894,22895,22896,22897,22898,22899,22900,22901,22902,22903,22904,22905,22906,22907,22908,22909,22910,22911,22912,22913,22914,22915,22916,22917,22918,22919,22920,22921,22922,22923,22924,22925,22926,22927,22928,22929,22930,22931,22932,22933,22934,22935,22936,22937,22938,22939,22940,22941,22942,22943,22944,22945,22946,22947,22948,22949,22950,22951,22952,22953,22954,22955,22956,22957,22958,22959,22960,22961,22962,22963,22964,22965,22966,22967,22968,22969,22970,22971,22972,22973,22974,22975,22976,22977,22978,22979,22980,22981,22982,22983,22984,22985,22986,22987,22988,22989,22990,22991,22992,22993,22994,22995,22996,22997,22998,22999,23000,23001,23002,23003,23004,23005,23006,23007,23008,23009,23010,23011,23012,23013,23014,23015,23016,23017,23018,23019,23020,23021,23022,23023,23024,23025,23026,23027,23028,23029,23030,23031,23032,23033,23034,23035,23036,23037,23038,23039,23040,23041,23042,23043,23044,23045,23046,23047,23048,23049,23050,23051,23052,23053,23054,23055,23056,23057,23058,23059,23060,23061,23062,23063,23064,23065,23066,23067,23068,23069,23070,23071,23072,23073,23074,23075,23076,23077,23078,23079,23080,23081,23082,23083,23084,23085,23086,23087,23088,23089,23090,23091,23092,23093,23094,23095,23096,23097,23098,23099,23100,23101,23102,23103,23104,23105,23106,23107,23108,23109,23110,23111,23112,23113,23114,23115,23116,23117,23118,23119,23120,23121,23122,23123,23124,23125,23126,23127,23128,23129,23130,23131,23132,23133,23134,23135,23136,23137,23138,23139,23140,23141,23142,23143,23144,23145,23146,23147,23148,23149,23150,23151,23152,23153,23154,23155,23156,23157,23158,23159,23160,23161,23162,23163,23164,23165,23166,23167,23168,23169,23170,23171,23172,23173,23174,23175,23176,23177,23178,23179,23180,23181,23182,23183,23184,23185,23186,23187,23188,23189,23190,23191,23192,23193,23194,23195,23196,23197,23198,23199,23200,23201,23202,23203,23204,23205,23206,23207,23208,23209,23210,23211,23212,23213,23214,23215,23216,23217,23218,23219,23220,23221,23222,23223,23224,23225,23226,23227,23228,23229,23230,23231,23232,23233,23234,23235,23236,23237,23238,23239,23240,23241,23242,23243,23244,23245,23246,23247,23248,23249,23250,23251,23252,23253,23254,23255,23256,23257,23258,23259,23260,23261,23262,23263,23264,23265,23266,23267,23268,23269,23270,23271,23272,23273,23274,23275,23276,23277,23278,23279,23280,23281,23282,23283,23284,23285,23286,23287,23288,23289,23290,23291,23292,23293,23294,23295,23296,23297,23298,23299,23300,23301,23302,23303,23304,23305,23306,23307,23308,23309,23310,23311,23312,23313,23314,23315,23316,23317,23318,23319,23320,23321,23322,23323,23324,23325,23326,23327,23328,23329,23330,23331,23332,23333,23334,23335,23336,23337,23338,23339,23340,23341,23342,23343,23344,23345,23346,23347,23348,23349,23350,23351,23352,23353,23354,23355,23356,23357,23358,23359,23360,23361,23362,23363,23364,23365,23366,23367,23368,23369,23370,23371,23372,23373,23374,23375,23376,23377,23378,23379,23380,23381,23382,23383,23384,23385,23386,23387,23388,23389,23390,23391,23392,23393,23394,23395,23396,23397,23398,23399,23400,23401,23402,23403,23404,23405,23406,23407,23408,23409,23410,23411,23412,23413,23414,23415,23416,23417,23418,23419,23420,23421,23422,23423,23424,23425,23426,23427,23428,23429,23430,23431,23432,23433,23434,23435,23436,23437,23438,23439,23440,23441,23442,23443,23444,23445,23446,23447,23448,23449,23450,23451,23452,23453,23454,23455,23456,23457,23458,23459,23460,23461,23462,23463,23464,23465,23466,23467,23468,23469,23470,23471,23472,23473,23474,23475,23476,23477,23478,23479,23480,23481,23482,23483,23484,23485,23486,23487,23488,23489,23490,23491,23492,23493,23494,23495,23496,23497,23498,23499,23500,23501,23502,23503,23504,23505,23506,23507,23508,23509,23510,23511,23512,23513,23514,23515,23516,23517,23518,23519,23520,23521,23522,23523,23524,23525,23526,23527,23528,23529,23530,23531,23532,23533,23534,23535,23536,23537,23538,23539,23540,23541,23542,23543,23544,23545,23546,23547,23548,23549,23550,23551,23552,23553,23554,23555,23556,23557,23558,23559,23560,23561,23562,23563,23564,23565,23566,23567,23568,23569,23570,23571,23572,23573,23574,23575,23576,23577,23578,23579,23580,23581,23582,23583,23584,23585,23586,23587,23588,23589,23590,23591,23592,23593,23594,23595,23596,23597,23598,23599,23600,23601,23602,23603,23604,23605,23606,23607,23608,23609,23610,23611,23612,23613,23614,23615,23616,23617,23618,23619,23620,23621,23622,23623,23624,23625,23626,23627,23628,23629,23630,23631,23632,23633,23634,23635,23636,23637,23638,23639,23640,23641,23642,23643,23644,23645,23646,23647,23648,23649,23650,23651,23652,23653,23654,23655,23656,23657,23658,23659,23660,23661,23662,23663,23664,23665,23666,23667,23668,23669,23670,23671,23672,23673,23674,23675,23676,23677,23678,23679,23680,23681,23682,23683,23684,23685,23686,23687,23688,23689,23690,23691,23692,23693,23694,23695,23696,23697,23698,23699,23700,23701,23702,23703,23704,23705,23706,23707,23708,23709,23710,23711,23712,23713,23714,23715,23716,23717,23718,23719,23720,23721,23722,23723,23724,23725,23726,23727,23728,23729,23730,23731,23732,23733,23734,23735,23736,23737,23738,23739,23740,23741,23742,23743,23744,23745,23746,23747,23748,23749,23750,23751,23752,23753,23754,23755,23756,23757,23758,23759,23760,23761,23762,23763,23764,23765,23766,23767,23768,23769,23770,23771,23772,23773,23774,23775,23776,23777,23778,23779,23780,23781,23782,23783,23784,23785,23786,23787,23788,23789,23790,23791,23792,23793,23794,23795,23796,23797,23798,23799,23800,23801,23802,23803,23804,23805,23806,23807,23808,23809,23810,23811,23812,23813,23814,23815,23816,23817,23818,23819,23820,23821,23822,23823,23824,23825,23826,23827,23828,23829,23830,23831,23832,23833,23834,23835,23836,23837,23838,23839,23840,23841,23842,23843,23844,23845,23846,23847,23848,23849,23850,23851,23852,23853,23854,23855,23856,23857,23858,23859,23860,23861,23862,23863,23864,23865,23866,23867,23868,23869,23870,23871,23872,23873,23874,23875,23876,23877,23878,23879,23880,23881,23882,23883,23884,23885,23886,23887,23888,23889,23890,23891,23892,23893,23894,23895,23896,23897,23898,23899,23900,23901,23902,23903,23904,23905,23906,23907,23908,23909,23910,23911,23912,23913,23914,23915,23916,23917,23918,23919,23920,23921,23922,23923,23924,23925,23926,23927,23928,23929,23930,23931,23932,23933,23934,23935,23936,23937,23938,23939,23940,23941,23942,23943,23944,23945,23946,23947,23948,23949,23950,23951,23952,23953,23954,23955,23956,23957,23958,23959,23960,23961,23962,23963,23964,23965,23966,23967,23968,23969,23970,23971,23972,23973,23974,23975,23976,23977,23978,23979,23980,23981,23982,23983,23984,23985,23986,23987,23988,23989,23990,23991,23992,23993,23994,23995,23996,23997,23998,23999,24000,24001,24002,24003,24004,24005,24006,24007,24008,24009,24010,24011,24012,24013,24014,24015,24016,24017,24018,24019,24020,24021,24022,24023,24024,24025,24026,24027,24028,24029,24030,24031,24032,24033,24034,24035,24036,24037,24038,24039,24040,24041,24042,24043,24044,24045,24046,24047,24048,24049,24050,24051,24052,24053,24054,24055,24056,24057,24058,24059,24060,24061,24062,24063,24064,24065,24066,24067,24068,24069,24070,24071,24072,24073,24074,24075,24076,24077,24078,24079,24080,24081,24082,24083,24084,24085,24086,24087,24088,24089,24090,24091,24092,24093,24094,24095,24096,24097,24098,24099,24100,24101,24102,24103,24104,24105,24106,24107,24108,24109,24110,24111,24112,24113,24114,24115,24116,24117,24118,24119,24120,24121,24122,24123,24124,24125,24126,24127,24128,24129,24130,24131,24132,24133,24134,24135,24136,24137,24138,24139,24140,24141,24142,24143,24144,24145,24146,24147,24148,24149,24150,24151,24152,24153,24154,24155,24156,24157,24158,24159,24160,24161,24162,24163,24164,24165,24166,24167,24168,24169,24170,24171,24172,24173,24174,24175,24176,24177,24178,24179,24180,24181,24182,24183,24184,24185,24186,24187,24188,24189,24190,24191,24192,24193,24194,24195,24196,24197,24198,24199,24200,24201,24202,24203,24204,24205,24206,24207,24208,24209,24210,24211,24212,24213,24214,24215,24216,24217,24218,24219,24220,24221,24222,24223,24224,24225,24226,24227,24228,24229,24230,24231,24232,24233,24234,24235,24236,24237,24238,24239,24240,24241,24242,24243,24244,24245,24246,24247,24248,24249,24250,24251,24252,24253,24254,24255,24256,24257,24258,24259,24260,24261,24262,24263,24264,24265,24266,24267,24268,24269,24270,24271,24272,24273,24274,24275,24276,24277,24278,24279,24280,24281,24282,24283,24284,24285,24286,24287,24288,24289,24290,24291,24292,24293,24294,24295,24296,24297,24298,24299,24300,24301,24302,24303,24304,24305,24306,24307,24308,24309,24310,24311,24312,24313,24314,24315,24316,24317,24318,24319,24320,24321,24322,24323,24324,24325,24326,24327,24328,24329,24330,24331,24332,24333,24334,24335,24336,24337,24338,24339,24340,24341,24342,24343,24344,24345,24346,24347,24348,24349,24350,24351,24352,24353,24354,24355,24356,24357,24358,24359,24360,24361,24362,24363,24364,24365,24366,24367,24368,24369,24370,24371,24372,24373,24374,24375,24376,24377,24378,24379,24380,24381,24382,24383,24384,24385,24386,24387,24388,24389,24390,24391,24392,24393,24394,24395,24396,24397,24398,24399,24400,24401,24402,24403,24404,24405,24406,24407,24408,24409,24410,24411,24412,24413,24414,24415,24416,24417,24418,24419,24420,24421,24422,24423,24424,24425,24426,24427,24428,24429,24430,24431,24432,24433,24434,24435,24436,24437,24438,24439,24440,24441,24442,24443,24444,24445,24446,24447,24448,24449,24450,24451,24452,24453,24454,24455,24456,24457,24458,24459,24460,24461,24462,24463,24464,24465,24466,24467,24468,24469,24470,24471,24472,24473,24474,24475,24476,24477,24478,24479,24480,24481,24482,24483,24484,24485,24486,24487,24488,24489,24490,24491,24492,24493,24494,24495,24496,24497,24498,24499,24500,24501,24502,24503,24504,24505,24506,24507,24508,24509,24510,24511,24512,24513,24514,24515,24516,24517,24518,24519,24520,24521,24522,24523,24524,24525,24526,24527,24528,24529,24530,24531,24532,24533,24534,24535,24536,24537,24538,24539,24540,24541,24542,24543,24544,24545,24546,24547,24548,24549,24550,24551,24552,24553,24554,24555,24556,24557,24558,24559,24560,24561,24562,24563,24564,24565,24566,24567,24568,24569,24570,24571,24572,24573,24574,24575,24576,24577,24578,24579,24580,24581,24582,24583,24584,24585,24586,24587,24588,24589,24590,24591,24592,24593,24594,24595,24596,24597,24598,24599,24600,24601,24602,24603,24604,24605,24606,24607,24608,24609,24610,24611,24612,24613,24614,24615,24616,24617,24618,24619,24620,24621,24622,24623,24624,24625,24626,24627,24628,24629,24630,24631,24632,24633,24634,24635,24636,24637,24638,24639,24640,24641,24642,24643,24644,24645,24646,24647,24648,24649,24650,24651,24652,24653,24654,24655,24656,24657,24658,24659,24660,24661,24662,24663,24664,24665,24666,24667,24668,24669,24670,24671,24672,24673,24674,24675,24676,24677,24678,24679,24680,24681,24682,24683,24684,24685,24686,24687,24688,24689,24690,24691,24692,24693,24694,24695,24696,24697,24698,24699,24700,24701,24702,24703,24704,24705,24706,24707,24708,24709,24710,24711,24712,24713,24714,24715,24716,24717,24718,24719,24720,24721,24722,24723,24724,24725,24726,24727,24728,24729,24730,24731,24732,24733,24734,24735,24736,24737,24738,24739,24740,24741,24742,24743,24744,24745,24746,24747,24748,24749,24750,24751,24752,24753,24754,24755,24756,24757,24758,24759,24760,24761,24762,24763,24764,24765,24766,24767,24768,24769,24770,24771,24772,24773,24774,24775,24776,24777,24778,24779,24780,24781,24782,24783,24784,24785,24786,24787,24788,24789,24790,24791,24792,24793,24794,24795,24796,24797,24798,24799,24800,24801,24802,24803,24804,24805,24806,24807,24808,24809,24810,24811,24812,24813,24814,24815,24816,24817,24818,24819,24820,24821,24822,24823,24824,24825,24826,24827,24828,24829,24830,24831,24832,24833,24834,24835,24836,24837,24838,24839,24840,24841,24842,24843,24844,24845,24846,24847,24848,24849,24850,24851,24852,24853,24854,24855,24856,24857,24858,24859,24860,24861,24862,24863,24864,24865,24866,24867,24868,24869,24870,24871,24872,24873,24874,24875,24876,24877,24878,24879,24880,24881,24882,24883,24884,24885,24886,24887,24888,24889,24890,24891,24892,24893,24894,24895,24896,24897,24898,24899,24900,24901,24902,24903,24904,24905,24906,24907,24908,24909,24910,24911,24912,24913,24914,24915,24916,24917,24918,24919,24920,24921,24922,24923,24924,24925,24926,24927,24928,24929,24930,24931,24932,24933,24934,24935,24936,24937,24938,24939,24940,24941,24942,24943,24944,24945,24946,24947,24948,24949,24950,24951,24952,24953,24954,24955,24956,24957,24958,24959,24960,24961,24962,24963,24964,24965,24966,24967,24968,24969,24970,24971,24972,24973,24974,24975,24976,24977,24978,24979,24980,24981,24982,24983,24984,24985,24986,24987,24988,24989,24990,24991,24992,24993,24994,24995,24996,24997,24998,24999,25000,25001,25002,25003,25004,25005,25006,25007,25008,25009,25010,25011,25012,25013,25014,25015,25016,25017,25018,25019,25020,25021,25022,25023,25024,25025,25026,25027,25028,25029,25030,25031,25032,25033,25034,25035,25036,25037,25038,25039,25040,25041,25042,25043,25044,25045,25046,25047,25048,25049,25050,25051,25052,25053,25054,25055,25056,25057,25058,25059,25060,25061,25062,25063,25064,25065,25066,25067,25068,25069,25070,25071,25072,25073,25074,25075,25076,25077,25078,25079,25080,25081,25082,25083,25084,25085,25086,25087,25088,25089,25090,25091,25092,25093,25094,25095,25096,25097,25098,25099,25100,25101,25102,25103,25104,25105,25106,25107,25108,25109,25110,25111,25112,25113,25114,25115,25116,25117,25118,25119,25120,25121,25122,25123,25124,25125,25126,25127,25128,25129,25130,25131,25132,25133,25134,25135,25136,25137,25138,25139,25140,25141,25142,25143,25144,25145,25146,25147,25148,25149,25150,25151,25152,25153,25154,25155,25156,25157,25158,25159,25160,25161,25162,25163,25164,25165,25166,25167,25168,25169,25170,25171,25172,25173,25174,25175,25176,25177,25178,25179,25180,25181,25182,25183,25184,25185,25186,25187,25188,25189,25190,25191,25192,25193,25194,25195,25196,25197,25198,25199,25200,25201,25202,25203,25204,25205,25206,25207,25208,25209,25210,25211,25212,25213,25214,25215,25216,25217,25218,25219,25220,25221,25222,25223,25224,25225,25226,25227,25228,25229,25230,25231,25232,25233,25234,25235,25236,25237,25238,25239,25240,25241,25242,25243,25244,25245,25246,25247,25248,25249,25250,25251,25252,25253,25254,25255,25256,25257,25258,25259,25260,25261,25262,25263,25264,25265,25266,25267,25268,25269,25270,25271,25272,25273,25274,25275,25276,25277,25278,25279,25280,25281,25282,25283,25284,25285,25286,25287,25288,25289,25290,25291,25292,25293,25294,25295,25296,25297,25298,25299,25300,25301,25302,25303,25304,25305,25306,25307,25308,25309,25310,25311,25312,25313,25314,25315,25316,25317,25318,25319,25320,25321,25322,25323,25324,25325,25326,25327,25328,25329,25330,25331,25332,25333,25334,25335,25336,25337,25338,25339,25340,25341,25342,25343,25344,25345,25346,25347,25348,25349,25350,25351,25352,25353,25354,25355,25356,25357,25358,25359,25360,25361,25362,25363,25364,25365,25366,25367,25368,25369,25370,25371,25372,25373,25374,25375,25376,25377,25378,25379,25380,25381,25382,25383,25384,25385,25386,25387,25388,25389,25390,25391,25392,25393,25394,25395,25396,25397,25398,25399,25400,25401,25402,25403,25404,25405,25406,25407,25408,25409,25410,25411,25412,25413,25414,25415,25416,25417,25418,25419,25420,25421,25422,25423,25424,25425,25426,25427,25428,25429,25430,25431,25432,25433,25434,25435,25436,25437,25438,25439,25440,25441,25442,25443,25444,25445,25446,25447,25448,25449,25450,25451,25452,25453,25454,25455,25456,25457,25458,25459,25460,25461,25462,25463,25464,25465,25466,25467,25468,25469,25470,25471,25472,25473,25474,25475,25476,25477,25478,25479,25480,25481,25482,25483,25484,25485,25486,25487,25488,25489,25490,25491,25492,25493,25494,25495,25496,25497,25498,25499,25500,25501,25502,25503,25504,25505,25506,25507,25508,25509,25510,25511,25512,25513,25514,25515,25516,25517,25518,25519,25520,25521,25522,25523,25524,25525,25526,25527,25528,25529,25530,25531,25532,25533,25534,25535,25536,25537,25538,25539,25540,25541,25542,25543,25544,25545,25546,25547,25548,25549,25550,25551,25552,25553,25554,25555,25556,25557,25558,25559,25560,25561,25562,25563,25564,25565,25566,25567,25568,25569,25570,25571,25572,25573,25574,25575,25576,25577,25578,25579,25580,25581,25582,25583,25584,25585,25586,25587,25588,25589,25590,25591,25592,25593,25594,25595,25596,25597,25598,25599,25600,25601,25602,25603,25604,25605,25606,25607,25608,25609,25610,25611,25612,25613,25614,25615,25616,25617,25618,25619,25620,25621,25622,25623,25624,25625,25626,25627,25628,25629,25630,25631,25632,25633,25634,25635,25636,25637,25638,25639,25640,25641,25642,25643,25644,25645,25646,25647,25648,25649,25650,25651,25652,25653,25654,25655,25656,25657,25658,25659,25660,25661,25662,25663,25664,25665,25666,25667,25668,25669,25670,25671,25672,25673,25674,25675,25676,25677,25678,25679,25680,25681,25682,25683,25684,25685,25686,25687,25688,25689,25690,25691,25692,25693,25694,25695,25696,25697,25698,25699,25700,25701,25702,25703,25704,25705,25706,25707,25708,25709,25710,25711,25712,25713,25714,25715,25716,25717,25718,25719,25720,25721,25722,25723,25724,25725,25726,25727,25728,25729,25730,25731,25732,25733,25734,25735,25736,25737,25738,25739,25740,25741,25742,25743,25744,25745,25746,25747,25748,25749,25750,25751,25752,25753,25754,25755,25756,25757,25758,25759,25760,25761,25762,25763,25764,25765,25766,25767,25768,25769,25770,25771,25772,25773,25774,25775,25776,25777,25778,25779,25780,25781,25782,25783,25784,25785,25786,25787,25788,25789,25790,25791,25792,25793,25794,25795,25796,25797,25798,25799,25800,25801,25802,25803,25804,25805,25806,25807,25808,25809,25810,25811,25812,25813,25814,25815,25816,25817,25818,25819,25820,25821,25822,25823,25824,25825,25826,25827,25828,25829,25830,25831,25832,25833,25834,25835,25836,25837,25838,25839,25840,25841,25842,25843,25844,25845,25846,25847,25848,25849,25850,25851,25852,25853,25854,25855,25856,25857,25858,25859,25860,25861,25862,25863,25864,25865,25866,25867,25868,25869,25870,25871,25872,25873,25874,25875,25876,25877,25878,25879,25880,25881,25882,25883,25884,25885,25886,25887,25888,25889,25890,25891,25892,25893,25894,25895,25896,25897,25898,25899,25900,25901,25902,25903,25904,25905,25906,25907,25908,25909,25910,25911,25912,25913,25914,25915,25916,25917,25918,25919,25920,25921,25922,25923,25924,25925,25926,25927,25928,25929,25930,25931,25932,25933,25934,25935,25936,25937,25938,25939,25940,25941,25942,25943,25944,25945,25946,25947,25948,25949,25950,25951,25952,25953,25954,25955,25956,25957,25958,25959,25960,25961,25962,25963,25964,25965,25966,25967,25968,25969,25970,25971,25972,25973,25974,25975,25976,25977,25978,25979,25980,25981,25982,25983,25984,25985,25986,25987,25988,25989,25990,25991,25992,25993,25994,25995,25996,25997,25998,25999,26000,26001,26002,26003,26004,26005,26006,26007,26008,26009,26010,26011,26012,26013,26014,26015,26016,26017,26018,26019,26020,26021,26022,26023,26024,26025,26026,26027,26028,26029,26030,26031,26032,26033,26034,26035,26036,26037,26038,26039,26040,26041,26042,26043,26044,26045,26046,26047,26048,26049,26050,26051,26052,26053,26054,26055,26056,26057,26058,26059,26060,26061,26062,26063,26064,26065,26066,26067,26068,26069,26070,26071,26072,26073,26074,26075,26076,26077,26078,26079,26080,26081,26082,26083,26084,26085,26086,26087,26088,26089,26090,26091,26092,26093,26094,26095,26096,26097,26098,26099,26100,26101,26102,26103,26104,26105,26106,26107,26108,26109,26110,26111,26112,26113,26114,26115,26116,26117,26118,26119,26120,26121,26122,26123,26124,26125,26126,26127,26128,26129,26130,26131,26132,26133,26134,26135,26136,26137,26138,26139,26140,26141,26142,26143,26144,26145,26146,26147,26148,26149,26150,26151,26152,26153,26154,26155,26156,26157,26158,26159,26160,26161,26162,26163,26164,26165,26166,26167,26168,26169,26170,26171,26172,26173,26174,26175,26176,26177,26178,26179,26180,26181,26182,26183,26184,26185,26186,26187,26188,26189,26190,26191,26192,26193,26194,26195,26196,26197,26198,26199,26200,26201,26202,26203,26204,26205,26206,26207,26208,26209,26210,26211,26212,26213,26214,26215,26216,26217,26218,26219,26220,26221,26222,26223,26224,26225,26226,26227,26228,26229,26230,26231,26232,26233,26234,26235,26236,26237,26238,26239,26240,26241,26242,26243,26244,26245,26246,26247,26248,26249,26250,26251,26252,26253,26254,26255,26256,26257,26258,26259,26260,26261,26262,26263,26264,26265,26266,26267,26268,26269,26270,26271,26272,26273,26274,26275,26276,26277,26278,26279,26280,26281,26282,26283,26284,26285,26286,26287,26288,26289,26290,26291,26292,26293,26294,26295,26296,26297,26298,26299,26300,26301,26302,26303,26304,26305,26306,26307,26308,26309,26310,26311,26312,26313,26314,26315,26316,26317,26318,26319,26320,26321,26322,26323,26324,26325,26326,26327,26328,26329,26330,26331,26332,26333,26334,26335,26336,26337,26338,26339,26340,26341,26342,26343,26344,26345,26346,26347,26348,26349,26350,26351,26352,26353,26354,26355,26356,26357,26358,26359,26360,26361,26362,26363,26364,26365,26366,26367,26368,26369,26370,26371,26372,26373,26374,26375,26376,26377,26378,26379,26380,26381,26382,26383,26384,26385,26386,26387,26388,26389,26390,26391,26392,26393,26394,26395,26396,26397,26398,26399,26400,26401,26402,26403,26404,26405,26406,26407,26408,26409,26410,26411,26412,26413,26414,26415,26416,26417,26418,26419,26420,26421,26422,26423,26424,26425,26426,26427,26428,26429,26430,26431,26432,26433,26434,26435,26436,26437,26438,26439,26440,26441,26442,26443,26444,26445,26446,26447,26448,26449,26450,26451,26452,26453,26454,26455,26456,26457,26458,26459,26460,26461,26462,26463,26464,26465,26466,26467,26468,26469,26470,26471,26472,26473,26474,26475,26476,26477,26478,26479,26480,26481,26482,26483,26484,26485,26486,26487,26488,26489,26490,26491,26492,26493,26494,26495,26496,26497,26498,26499,26500,26501,26502,26503,26504,26505,26506,26507,26508,26509,26510,26511,26512,26513,26514,26515,26516,26517,26518,26519,26520,26521,26522,26523,26524,26525,26526,26527,26528,26529,26530,26531,26532,26533,26534,26535,26536,26537,26538,26539,26540,26541,26542,26543,26544,26545,26546,26547,26548,26549,26550,26551,26552,26553,26554,26555,26556,26557,26558,26559,26560,26561,26562,26563,26564,26565,26566,26567,26568,26569,26570,26571,26572,26573,26574,26575,26576,26577,26578,26579,26580,26581,26582,26583,26584,26585,26586,26587,26588,26589,26590,26591,26592,26593,26594,26595,26596,26597,26598,26599,26600,26601,26602,26603,26604,26605,26606,26607,26608,26609,26610,26611,26612,26613,26614,26615,26616,26617,26618,26619,26620,26621,26622,26623,26624,26625,26626,26627,26628,26629,26630,26631,26632,26633,26634,26635,26636,26637,26638,26639,26640,26641,26642,26643,26644,26645,26646,26647,26648,26649,26650,26651,26652,26653,26654,26655,26656,26657,26658,26659,26660,26661,26662,26663,26664,26665,26666,26667,26668,26669,26670,26671,26672,26673,26674,26675,26676,26677,26678,26679,26680,26681,26682,26683,26684,26685,26686,26687,26688,26689,26690,26691,26692,26693,26694,26695,26696,26697,26698,26699,26700,26701,26702,26703,26704,26705,26706,26707,26708,26709,26710,26711,26712,26713,26714,26715,26716,26717,26718,26719,26720,26721,26722,26723,26724,26725,26726,26727,26728,26729,26730,26731,26732,26733,26734,26735,26736,26737,26738,26739,26740,26741,26742,26743,26744,26745,26746,26747,26748,26749,26750,26751,26752,26753,26754,26755,26756,26757,26758,26759,26760,26761,26762,26763,26764,26765,26766,26767,26768,26769,26770,26771,26772,26773,26774,26775,26776,26777,26778,26779,26780,26781,26782,26783,26784,26785,26786,26787,26788,26789,26790,26791,26792,26793,26794,26795,26796,26797,26798,26799,26800,26801,26802,26803,26804,26805,26806,26807,26808,26809,26810,26811,26812,26813,26814,26815,26816,26817,26818,26819,26820,26821,26822,26823,26824,26825,26826,26827,26828,26829,26830,26831,26832,26833,26834,26835,26836,26837,26838,26839,26840,26841,26842,26843,26844,26845,26846,26847,26848,26849,26850,26851,26852,26853,26854,26855,26856,26857,26858,26859,26860,26861,26862,26863,26864,26865,26866,26867,26868,26869,26870,26871,26872,26873,26874,26875,26876,26877,26878,26879,26880,26881,26882,26883,26884,26885,26886,26887,26888,26889,26890,26891,26892,26893,26894,26895,26896,26897,26898,26899,26900,26901,26902,26903,26904,26905,26906,26907,26908,26909,26910,26911,26912,26913,26914,26915,26916,26917,26918,26919,26920,26921,26922,26923,26924,26925,26926,26927,26928,26929,26930,26931,26932,26933,26934,26935,26936,26937,26938,26939,26940,26941,26942,26943,26944,26945,26946,26947,26948,26949,26950,26951,26952,26953,26954,26955,26956,26957,26958,26959,26960,26961,26962,26963,26964,26965,26966,26967,26968,26969,26970,26971,26972,26973,26974,26975,26976,26977,26978,26979,26980,26981,26982,26983,26984,26985,26986,26987,26988,26989,26990,26991,26992,26993,26994,26995,26996,26997,26998,26999,27000,27001,27002,27003,27004,27005,27006,27007,27008,27009,27010,27011,27012,27013,27014,27015,27016,27017,27018,27019,27020,27021,27022,27023,27024,27025,27026,27027,27028,27029,27030,27031,27032,27033,27034,27035,27036,27037,27038,27039,27040,27041,27042,27043,27044,27045,27046,27047,27048,27049,27050,27051,27052,27053,27054,27055,27056,27057,27058,27059,27060,27061,27062,27063,27064,27065,27066,27067,27068,27069,27070,27071,27072,27073,27074,27075,27076,27077,27078,27079,27080,27081,27082,27083,27084,27085,27086,27087,27088,27089,27090,27091,27092,27093,27094,27095,27096,27097,27098,27099,27100,27101,27102,27103,27104,27105,27106,27107,27108,27109,27110,27111,27112,27113,27114,27115,27116,27117,27118,27119,27120,27121,27122,27123,27124,27125,27126,27127,27128,27129,27130,27131,27132,27133,27134,27135,27136,27137,27138,27139,27140,27141,27142,27143,27144,27145,27146,27147,27148,27149,27150,27151,27152,27153,27154,27155,27156,27157,27158,27159,27160,27161,27162,27163,27164,27165,27166,27167,27168,27169,27170,27171,27172,27173,27174,27175,27176,27177,27178,27179,27180,27181,27182,27183,27184,27185,27186,27187,27188,27189,27190,27191,27192,27193,27194,27195,27196,27197,27198,27199,27200,27201,27202,27203,27204,27205,27206,27207,27208,27209,27210,27211,27212,27213,27214,27215,27216,27217,27218,27219,27220,27221,27222,27223,27224,27225,27226,27227,27228,27229,27230,27231,27232,27233,27234,27235,27236,27237,27238,27239,27240,27241,27242,27243,27244,27245,27246,27247,27248,27249,27250,27251,27252,27253,27254,27255,27256,27257,27258,27259,27260,27261,27262,27263,27264,27265,27266,27267,27268,27269,27270,27271,27272,27273,27274,27275,27276,27277,27278,27279,27280,27281,27282,27283,27284,27285,27286,27287,27288,27289,27290,27291,27292,27293,27294,27295,27296,27297,27298,27299,27300,27301,27302,27303,27304,27305,27306,27307,27308,27309,27310,27311,27312,27313,27314,27315,27316,27317,27318,27319,27320,27321,27322,27323,27324,27325,27326,27327,27328,27329,27330,27331,27332,27333,27334,27335,27336,27337,27338,27339,27340,27341,27342,27343,27344,27345,27346,27347,27348,27349,27350,27351,27352,27353,27354,27355,27356,27357,27358,27359,27360,27361,27362,27363,27364,27365,27366,27367,27368,27369,27370,27371,27372,27373,27374,27375,27376,27377,27378,27379,27380,27381,27382,27383,27384,27385,27386,27387,27388,27389,27390,27391,27392,27393,27394,27395,27396,27397,27398,27399,27400,27401,27402,27403,27404,27405,27406,27407,27408,27409,27410,27411,27412,27413,27414,27415,27416,27417,27418,27419,27420,27421,27422,27423,27424,27425,27426,27427,27428,27429,27430,27431,27432,27433,27434,27435,27436,27437,27438,27439,27440,27441,27442,27443,27444,27445,27446,27447,27448,27449,27450,27451,27452,27453,27454,27455,27456,27457,27458,27459,27460,27461,27462,27463,27464,27465,27466,27467,27468,27469,27470,27471,27472,27473,27474,27475,27476,27477,27478,27479,27480,27481,27482,27483,27484,27485,27486,27487,27488,27489,27490,27491,27492,27493,27494,27495,27496,27497,27498,27499,27500,27501,27502,27503,27504,27505,27506,27507,27508,27509,27510,27511,27512,27513,27514,27515,27516,27517,27518,27519,27520,27521,27522,27523,27524,27525,27526,27527,27528,27529,27530,27531,27532,27533,27534,27535,27536,27537,27538,27539,27540,27541,27542,27543,27544,27545,27546,27547,27548,27549,27550,27551,27552,27553,27554,27555,27556,27557,27558,27559,27560,27561,27562,27563,27564,27565,27566,27567,27568,27569,27570,27571,27572,27573,27574,27575,27576,27577,27578,27579,27580,27581,27582,27583,27584,27585,27586,27587,27588,27589,27590,27591,27592,27593,27594,27595,27596,27597,27598,27599,27600,27601,27602,27603,27604,27605,27606,27607,27608,27609,27610,27611,27612,27613,27614,27615,27616,27617,27618,27619,27620,27621,27622,27623,27624,27625,27626,27627,27628,27629,27630,27631,27632,27633,27634,27635,27636,27637,27638,27639,27640,27641,27642,27643,27644,27645,27646,27647,27648,27649,27650,27651,27652,27653,27654,27655,27656,27657,27658,27659,27660,27661,27662,27663,27664,27665,27666,27667,27668,27669,27670,27671,27672,27673,27674,27675,27676,27677,27678,27679,27680,27681,27682,27683,27684,27685,27686,27687,27688,27689,27690,27691,27692,27693,27694,27695,27696,27697,27698,27699,27700,27701,27702,27703,27704,27705,27706,27707,27708,27709,27710,27711,27712,27713,27714,27715,27716,27717,27718,27719,27720,27721,27722,27723,27724,27725,27726,27727,27728,27729,27730,27731,27732,27733,27734,27735,27736,27737,27738,27739,27740,27741,27742,27743,27744,27745,27746,27747,27748,27749,27750,27751,27752,27753,27754,27755,27756,27757,27758,27759,27760,27761,27762,27763,27764,27765,27766,27767,27768,27769,27770,27771,27772,27773,27774,27775,27776,27777,27778,27779,27780,27781,27782,27783,27784,27785,27786,27787,27788,27789,27790,27791,27792,27793,27794,27795,27796,27797,27798,27799,27800,27801,27802,27803,27804,27805,27806,27807,27808,27809,27810,27811,27812,27813,27814,27815,27816,27817,27818,27819,27820,27821,27822,27823,27824,27825,27826,27827,27828,27829,27830,27831,27832,27833,27834,27835,27836,27837,27838,27839,27840,27841,27842,27843,27844,27845,27846,27847,27848,27849,27850,27851,27852,27853,27854,27855,27856,27857,27858,27859,27860,27861,27862,27863,27864,27865,27866,27867,27868,27869,27870,27871,27872,27873,27874,27875,27876,27877,27878,27879,27880,27881,27882,27883,27884,27885,27886,27887,27888,27889,27890,27891,27892,27893,27894,27895,27896,27897,27898,27899,27900,27901,27902,27903,27904,27905,27906,27907,27908,27909,27910,27911,27912,27913,27914,27915,27916,27917,27918,27919,27920,27921,27922,27923,27924,27925,27926,27927,27928,27929,27930,27931,27932,27933,27934,27935,27936,27937,27938,27939,27940,27941,27942,27943,27944,27945,27946,27947,27948,27949,27950,27951,27952,27953,27954,27955,27956,27957,27958,27959,27960,27961,27962,27963,27964,27965,27966,27967,27968,27969,27970,27971,27972,27973,27974,27975,27976,27977,27978,27979,27980,27981,27982,27983,27984,27985,27986,27987,27988,27989,27990,27991,27992,27993,27994,27995,27996,27997,27998,27999,28000,28001,28002,28003,28004,28005,28006,28007,28008,28009,28010,28011,28012,28013,28014,28015,28016,28017,28018,28019,28020,28021,28022,28023,28024,28025,28026,28027,28028,28029,28030,28031,28032,28033,28034,28035,28036,28037,28038,28039,28040,28041,28042,28043,28044,28045,28046,28047,28048,28049,28050,28051,28052,28053,28054,28055,28056,28057,28058,28059,28060,28061,28062,28063,28064,28065,28066,28067,28068,28069,28070,28071,28072,28073,28074,28075,28076,28077,28078,28079,28080,28081,28082,28083,28084,28085,28086,28087,28088,28089,28090,28091,28092,28093,28094,28095,28096,28097,28098,28099,28100,28101,28102,28103,28104,28105,28106,28107,28108,28109,28110,28111,28112,28113,28114,28115,28116,28117,28118,28119,28120,28121,28122,28123,28124,28125,28126,28127,28128,28129,28130,28131,28132,28133,28134,28135,28136,28137,28138,28139,28140,28141,28142,28143,28144,28145,28146,28147,28148,28149,28150,28151,28152,28153,28154,28155,28156,28157,28158,28159,28160,28161,28162,28163,28164,28165,28166,28167,28168,28169,28170,28171,28172,28173,28174,28175,28176,28177,28178,28179,28180,28181,28182,28183,28184,28185,28186,28187,28188,28189,28190,28191,28192,28193,28194,28195,28196,28197,28198,28199,28200,28201,28202,28203,28204,28205,28206,28207,28208,28209,28210,28211,28212,28213,28214,28215,28216,28217,28218,28219,28220,28221,28222,28223,28224,28225,28226,28227,28228,28229,28230,28231,28232,28233,28234,28235,28236,28237,28238,28239,28240,28241,28242,28243,28244,28245,28246,28247,28248,28249,28250,28251,28252,28253,28254,28255,28256,28257,28258,28259,28260,28261,28262,28263,28264,28265,28266,28267,28268,28269,28270,28271,28272,28273,28274,28275,28276,28277,28278,28279,28280,28281,28282,28283,28284,28285,28286,28287,28288,28289,28290,28291,28292,28293,28294,28295,28296,28297,28298,28299,28300,28301,28302,28303,28304,28305,28306,28307,28308,28309,28310,28311,28312,28313,28314,28315,28316,28317,28318,28319,28320,28321,28322,28323,28324,28325,28326,28327,28328,28329,28330,28331,28332,28333,28334,28335,28336,28337,28338,28339,28340,28341,28342,28343,28344,28345,28346,28347,28348,28349,28350,28351,28352,28353,28354,28355,28356,28357,28358,28359,28360,28361,28362,28363,28364,28365,28366,28367,28368,28369,28370,28371,28372,28373,28374,28375,28376,28377,28378,28379,28380,28381,28382,28383,28384,28385,28386,28387,28388,28389,28390,28391,28392,28393,28394,28395,28396,28397,28398,28399,28400,28401,28402,28403,28404,28405,28406,28407,28408,28409,28410,28411,28412,28413,28414,28415,28416,28417,28418,28419,28420,28421,28422,28423,28424,28425,28426,28427,28428,28429,28430,28431,28432,28433,28434,28435,28436,28437,28438,28439,28440,28441,28442,28443,28444,28445,28446,28447,28448,28449,28450,28451,28452,28453,28454,28455,28456,28457,28458,28459,28460,28461,28462,28463,28464,28465,28466,28467,28468,28469,28470,28471,28472,28473,28474,28475,28476,28477,28478,28479,28480,28481,28482,28483,28484,28485,28486,28487,28488,28489,28490,28491,28492,28493,28494,28495,28496,28497,28498,28499,28500,28501,28502,28503,28504,28505,28506,28507,28508,28509,28510,28511,28512,28513,28514,28515,28516,28517,28518,28519,28520,28521,28522,28523,28524,28525,28526,28527,28528,28529,28530,28531,28532,28533,28534,28535,28536,28537,28538,28539,28540,28541,28542,28543,28544,28545,28546,28547,28548,28549,28550,28551,28552,28553,28554,28555,28556,28557,28558,28559,28560,28561,28562,28563,28564,28565,28566,28567,28568,28569,28570,28571,28572,28573,28574,28575,28576,28577,28578,28579,28580,28581,28582,28583,28584,28585,28586,28587,28588,28589,28590,28591,28592,28593,28594,28595,28596,28597,28598,28599,28600,28601,28602,28603,28604,28605,28606,28607,28608,28609,28610,28611,28612,28613,28614,28615,28616,28617,28618,28619,28620,28621,28622,28623,28624,28625,28626,28627,28628,28629,28630,28631,28632,28633,28634,28635,28636,28637,28638,28639,28640,28641,28642,28643,28644,28645,28646,28647,28648,28649,28650,28651,28652,28653,28654,28655,28656,28657,28658,28659,28660,28661,28662,28663,28664,28665,28666,28667,28668,28669,28670,28671,28672,28673,28674,28675,28676,28677,28678,28679,28680,28681,28682,28683,28684,28685,28686,28687,28688,28689,28690,28691,28692,28693,28694,28695,28696,28697,28698,28699,28700,28701,28702,28703,28704,28705,28706,28707,28708,28709,28710,28711,28712,28713,28714,28715,28716,28717,28718,28719,28720,28721,28722,28723,28724,28725,28726,28727,28728,28729,28730,28731,28732,28733,28734,28735,28736,28737,28738,28739,28740,28741,28742,28743,28744,28745,28746,28747,28748,28749,28750,28751,28752,28753,28754,28755,28756,28757,28758,28759,28760,28761,28762,28763,28764,28765,28766,28767,28768,28769,28770,28771,28772,28773,28774,28775,28776,28777,28778,28779,28780,28781,28782,28783,28784,28785,28786,28787,28788,28789,28790,28791,28792,28793,28794,28795,28796,28797,28798,28799,28800,28801,28802,28803,28804,28805,28806,28807,28808,28809,28810,28811,28812,28813,28814,28815,28816,28817,28818,28819,28820,28821,28822,28823,28824,28825,28826,28827,28828,28829,28830,28831,28832,28833,28834,28835,28836,28837,28838,28839,28840,28841,28842,28843,28844,28845,28846,28847,28848,28849,28850,28851,28852,28853,28854,28855,28856,28857,28858,28859,28860,28861,28862,28863,28864,28865,28866,28867,28868,28869,28870,28871,28872,28873,28874,28875,28876,28877,28878,28879,28880,28881,28882,28883,28884,28885,28886,28887,28888,28889,28890,28891,28892,28893,28894,28895,28896,28897,28898,28899,28900,28901,28902,28903,28904,28905,28906,28907,28908,28909,28910,28911,28912,28913,28914,28915,28916,28917,28918,28919,28920,28921,28922,28923,28924,28925,28926,28927,28928,28929,28930,28931,28932,28933,28934,28935,28936,28937,28938,28939,28940,28941,28942,28943,28944,28945,28946,28947,28948,28949,28950,28951,28952,28953,28954,28955,28956,28957,28958,28959,28960,28961,28962,28963,28964,28965,28966,28967,28968,28969,28970,28971,28972,28973,28974,28975,28976,28977,28978,28979,28980,28981,28982,28983,28984,28985,28986,28987,28988,28989,28990,28991,28992,28993,28994,28995,28996,28997,28998,28999,29000,29001,29002,29003,29004,29005,29006,29007,29008,29009,29010,29011,29012,29013,29014,29015,29016,29017,29018,29019,29020,29021,29022,29023,29024,29025,29026,29027,29028,29029,29030,29031,29032,29033,29034,29035,29036,29037,29038,29039,29040,29041,29042,29043,29044,29045,29046,29047,29048,29049,29050,29051,29052,29053,29054,29055,29056,29057,29058,29059,29060,29061,29062,29063,29064,29065,29066,29067,29068,29069,29070,29071,29072,29073,29074,29075,29076,29077,29078,29079,29080,29081,29082,29083,29084,29085,29086,29087,29088,29089,29090,29091,29092,29093,29094,29095,29096,29097,29098,29099,29100,29101,29102,29103,29104,29105,29106,29107,29108,29109,29110,29111,29112,29113,29114,29115,29116,29117,29118,29119,29120,29121,29122,29123,29124,29125,29126,29127,29128,29129,29130,29131,29132,29133,29134,29135,29136,29137,29138,29139,29140,29141,29142,29143,29144,29145,29146,29147,29148,29149,29150,29151,29152,29153,29154,29155,29156,29157,29158,29159,29160,29161,29162,29163,29164,29165,29166,29167,29168,29169,29170,29171,29172,29173,29174,29175,29176,29177,29178,29179,29180,29181,29182,29183,29184,29185,29186,29187,29188,29189,29190,29191,29192,29193,29194,29195,29196,29197,29198,29199,29200,29201,29202,29203,29204,29205,29206,29207,29208,29209,29210,29211,29212,29213,29214,29215,29216,29217,29218,29219,29220,29221,29222,29223,29224,29225,29226,29227,29228,29229,29230,29231,29232,29233,29234,29235,29236,29237,29238,29239,29240,29241,29242,29243,29244,29245,29246,29247,29248,29249,29250,29251,29252,29253,29254,29255,29256,29257,29258,29259,29260,29261,29262,29263,29264,29265,29266,29267,29268,29269,29270,29271,29272,29273,29274,29275,29276,29277,29278,29279,29280,29281,29282,29283,29284,29285,29286,29287,29288,29289,29290,29291,29292,29293,29294,29295,29296,29297,29298,29299,29300,29301,29302,29303,29304,29305,29306,29307,29308,29309,29310,29311,29312,29313,29314,29315,29316,29317,29318,29319,29320,29321,29322,29323,29324,29325,29326,29327,29328,29329,29330,29331,29332,29333,29334,29335,29336,29337,29338,29339,29340,29341,29342,29343,29344,29345,29346,29347,29348,29349,29350,29351,29352,29353,29354,29355,29356,29357,29358,29359,29360,29361,29362,29363,29364,29365,29366,29367,29368,29369,29370,29371,29372,29373,29374,29375,29376,29377,29378,29379,29380,29381,29382,29383,29384,29385,29386,29387,29388,29389,29390,29391,29392,29393,29394,29395,29396,29397,29398,29399,29400,29401,29402,29403,29404,29405,29406,29407,29408,29409,29410,29411,29412,29413,29414,29415,29416,29417,29418,29419,29420,29421,29422,29423,29424,29425,29426,29427,29428,29429,29430,29431,29432,29433,29434,29435,29436,29437,29438,29439,29440,29441,29442,29443,29444,29445,29446,29447,29448,29449,29450,29451,29452,29453,29454,29455,29456,29457,29458,29459,29460,29461,29462,29463,29464,29465,29466,29467,29468,29469,29470,29471,29472,29473,29474,29475,29476,29477,29478,29479,29480,29481,29482,29483,29484,29485,29486,29487,29488,29489,29490,29491,29492,29493,29494,29495,29496,29497,29498,29499,29500,29501,29502,29503,29504,29505,29506,29507,29508,29509,29510,29511,29512,29513,29514,29515,29516,29517,29518,29519,29520,29521,29522,29523,29524,29525,29526,29527,29528,29529,29530,29531,29532,29533,29534,29535,29536,29537,29538,29539,29540,29541,29542,29543,29544,29545,29546,29547,29548,29549,29550,29551,29552,29553,29554,29555,29556,29557,29558,29559,29560,29561,29562,29563,29564,29565,29566,29567,29568,29569,29570,29571,29572,29573,29574,29575,29576,29577,29578,29579,29580,29581,29582,29583,29584,29585,29586,29587,29588,29589,29590,29591,29592,29593,29594,29595,29596,29597,29598,29599,29600,29601,29602,29603,29604,29605,29606,29607,29608,29609,29610,29611,29612,29613,29614,29615,29616,29617,29618,29619,29620,29621,29622,29623,29624,29625,29626,29627,29628,29629,29630,29631,29632,29633,29634,29635,29636,29637,29638,29639,29640,29641,29642,29643,29644,29645,29646,29647,29648,29649,29650,29651,29652,29653,29654,29655,29656,29657,29658,29659,29660,29661,29662,29663,29664,29665,29666,29667,29668,29669,29670,29671,29672,29673,29674,29675,29676,29677,29678,29679,29680,29681,29682,29683,29684,29685,29686,29687,29688,29689,29690,29691,29692,29693,29694,29695,29696,29697,29698,29699,29700,29701,29702,29703,29704,29705,29706,29707,29708,29709,29710,29711,29712,29713,29714,29715,29716,29717,29718,29719,29720,29721,29722,29723,29724,29725,29726,29727,29728,29729,29730,29731,29732,29733,29734,29735,29736,29737,29738,29739,29740,29741,29742,29743,29744,29745,29746,29747,29748,29749,29750,29751,29752,29753,29754,29755,29756,29757,29758,29759,29760,29761,29762,29763,29764,29765,29766,29767,29768,29769,29770,29771,29772,29773,29774,29775,29776,29777,29778,29779,29780,29781,29782,29783,29784,29785,29786,29787,29788,29789,29790,29791,29792,29793,29794,29795,29796,29797,29798,29799,29800,29801,29802,29803,29804,29805,29806,29807,29808,29809,29810,29811,29812,29813,29814,29815,29816,29817,29818,29819,29820,29821,29822,29823,29824,29825,29826,29827,29828,29829,29830,29831,29832,29833,29834,29835,29836,29837,29838,29839,29840,29841,29842,29843,29844,29845,29846,29847,29848,29849,29850,29851,29852,29853,29854,29855,29856,29857,29858,29859,29860,29861,29862,29863,29864,29865,29866,29867,29868,29869,29870,29871,29872,29873,29874,29875,29876,29877,29878,29879,29880,29881,29882,29883,29884,29885,29886,29887,29888,29889,29890,29891,29892,29893,29894,29895,29896,29897,29898,29899,29900,29901,29902,29903,29904,29905,29906,29907,29908,29909,29910,29911,29912,29913,29914,29915,29916,29917,29918,29919,29920,29921,29922,29923,29924,29925,29926,29927,29928,29929,29930,29931,29932,29933,29934,29935,29936,29937,29938,29939,29940,29941,29942,29943,29944,29945,29946,29947,29948,29949,29950,29951,29952,29953,29954,29955,29956,29957,29958,29959,29960,29961,29962,29963,29964,29965,29966,29967,29968,29969,29970,29971,29972,29973,29974,29975,29976,29977,29978,29979,29980,29981,29982,29983,29984,29985,29986,29987,29988,29989,29990,29991,29992,29993,29994,29995,29996,29997,29998,29999,30000,30001,30002,30003,30004,30005,30006,30007,30008,30009,30010,30011,30012,30013,30014,30015,30016,30017,30018,30019,30020,30021,30022,30023,30024,30025,30026,30027,30028,30029,30030,30031,30032,30033,30034,30035,30036,30037,30038,30039,30040,30041,30042,30043,30044,30045,30046,30047,30048,30049,30050,30051,30052,30053,30054,30055,30056,30057,30058,30059,30060,30061,30062,30063,30064,30065,30066,30067,30068,30069,30070,30071,30072,30073,30074,30075,30076,30077,30078,30079,30080,30081,30082,30083,30084,30085,30086,30087,30088,30089,30090,30091,30092,30093,30094,30095,30096,30097,30098,30099,30100,30101,30102,30103,30104,30105,30106,30107,30108,30109,30110,30111,30112,30113,30114,30115,30116,30117,30118,30119,30120,30121,30122,30123,30124,30125,30126,30127,30128,30129,30130,30131,30132,30133,30134,30135,30136,30137,30138,30139,30140,30141,30142,30143,30144,30145,30146,30147,30148,30149,30150,30151,30152,30153,30154,30155,30156,30157,30158,30159,30160,30161,30162,30163,30164,30165,30166,30167,30168,30169,30170,30171,30172,30173,30174,30175,30176,30177,30178,30179,30180,30181,30182,30183,30184,30185,30186,30187,30188,30189,30190,30191,30192,30193,30194,30195,30196,30197,30198,30199,30200,30201,30202,30203,30204,30205,30206,30207,30208,30209,30210,30211,30212,30213,30214,30215,30216,30217,30218,30219,30220,30221,30222,30223,30224,30225,30226,30227,30228,30229,30230,30231,30232,30233,30234,30235,30236,30237,30238,30239,30240,30241,30242,30243,30244,30245,30246,30247,30248,30249,30250,30251,30252,30253,30254,30255,30256,30257,30258,30259,30260,30261,30262,30263,30264,30265,30266,30267,30268,30269,30270,30271,30272,30273,30274,30275,30276,30277,30278,30279,30280,30281,30282,30283,30284,30285,30286,30287,30288,30289,30290,30291,30292,30293,30294,30295,30296,30297,30298,30299,30300,30301,30302,30303,30304,30305,30306,30307,30308,30309,30310,30311,30312,30313,30314,30315,30316,30317,30318,30319,30320,30321,30322,30323,30324,30325,30326,30327,30328,30329,30330,30331,30332,30333,30334,30335,30336,30337,30338,30339,30340,30341,30342,30343,30344,30345,30346,30347,30348,30349,30350,30351,30352,30353,30354,30355,30356,30357,30358,30359,30360,30361,30362,30363,30364,30365,30366,30367,30368,30369,30370,30371,30372,30373,30374,30375,30376,30377,30378,30379,30380,30381,30382,30383,30384,30385,30386,30387,30388,30389,30390,30391,30392,30393,30394,30395,30396,30397,30398,30399,30400,30401,30402,30403,30404,30405,30406,30407,30408,30409,30410,30411,30412,30413,30414,30415,30416,30417,30418,30419,30420,30421,30422,30423,30424,30425,30426,30427,30428,30429,30430,30431,30432,30433,30434,30435,30436,30437,30438,30439,30440,30441,30442,30443,30444,30445,30446,30447,30448,30449,30450,30451,30452,30453,30454,30455,30456,30457,30458,30459,30460,30461,30462,30463,30464,30465,30466,30467,30468,30469,30470,30471,30472,30473,30474,30475,30476,30477,30478,30479,30480,30481,30482,30483,30484,30485,30486,30487,30488,30489,30490,30491,30492,30493,30494,30495,30496,30497,30498,30499,30500,30501,30502,30503,30504,30505,30506,30507,30508,30509,30510,30511,30512,30513,30514,30515,30516,30517,30518,30519,30520,30521,30522,30523,30524,30525,30526,30527,30528,30529,30530,30531,30532,30533,30534,30535,30536,30537,30538,30539,30540,30541,30542,30543,30544,30545,30546,30547,30548,30549,30550,30551,30552,30553,30554,30555,30556,30557,30558,30559,30560,30561,30562,30563,30564,30565,30566,30567,30568,30569,30570,30571,30572,30573,30574,30575,30576,30577,30578,30579,30580,30581,30582,30583,30584,30585,30586,30587,30588,30589,30590,30591,30592,30593,30594,30595,30596,30597,30598,30599,30600,30601,30602,30603,30604,30605,30606,30607,30608,30609,30610,30611,30612,30613,30614,30615,30616,30617,30618,30619,30620,30621,30622,30623,30624,30625,30626,30627,30628,30629,30630,30631,30632,30633,30634,30635,30636,30637,30638,30639,30640,30641,30642,30643,30644,30645,30646,30647,30648,30649,30650,30651,30652,30653,30654,30655,30656,30657,30658,30659,30660,30661,30662,30663,30664,30665,30666,30667,30668,30669,30670,30671,30672,30673,30674,30675,30676,30677,30678,30679,30680,30681,30682,30683,30684,30685,30686,30687,30688,30689,30690,30691,30692,30693,30694,30695,30696,30697,30698,30699,30700,30701,30702,30703,30704,30705,30706,30707,30708,30709,30710,30711,30712,30713,30714,30715,30716,30717,30718,30719,30720,30721,30722,30723,30724,30725,30726,30727,30728,30729,30730,30731,30732,30733,30734,30735,30736,30737,30738,30739,30740,30741,30742,30743,30744,30745,30746,30747,30748,30749,30750,30751,30752,30753,30754,30755,30756,30757,30758,30759,30760,30761,30762,30763,30764,30765,30766,30767,30768,30769,30770,30771,30772,30773,30774,30775,30776,30777,30778,30779,30780,30781,30782,30783,30784,30785,30786,30787,30788,30789,30790,30791,30792,30793,30794,30795,30796,30797,30798,30799,30800,30801,30802,30803,30804,30805,30806,30807,30808,30809,30810,30811,30812,30813,30814,30815,30816,30817,30818,30819,30820,30821,30822,30823,30824,30825,30826,30827,30828,30829,30830,30831,30832,30833,30834,30835,30836,30837,30838,30839,30840,30841,30842,30843,30844,30845,30846,30847,30848,30849,30850,30851,30852,30853,30854,30855,30856,30857,30858,30859,30860,30861,30862,30863,30864,30865,30866,30867,30868,30869,30870,30871,30872,30873,30874,30875,30876,30877,30878,30879,30880,30881,30882,30883,30884,30885,30886,30887,30888,30889,30890,30891,30892,30893,30894,30895,30896,30897,30898,30899,30900,30901,30902,30903,30904,30905,30906,30907,30908,30909,30910,30911,30912,30913,30914,30915,30916,30917,30918,30919,30920,30921,30922,30923,30924,30925,30926,30927,30928,30929,30930,30931,30932,30933,30934,30935,30936,30937,30938,30939,30940,30941,30942,30943,30944,30945,30946,30947,30948,30949,30950,30951,30952,30953,30954,30955,30956,30957,30958,30959,30960,30961,30962,30963,30964,30965,30966,30967,30968,30969,30970,30971,30972,30973,30974,30975,30976,30977,30978,30979,30980,30981,30982,30983,30984,30985,30986,30987,30988,30989,30990,30991,30992,30993,30994,30995,30996,30997,30998,30999,31000,31001,31002,31003,31004,31005,31006,31007,31008,31009,31010,31011,31012,31013,31014,31015,31016,31017,31018,31019,31020,31021,31022,31023,31024,31025,31026,31027,31028,31029,31030,31031,31032,31033,31034,31035,31036,31037,31038,31039,31040,31041,31042,31043,31044,31045,31046,31047,31048,31049,31050,31051,31052,31053,31054,31055,31056,31057,31058,31059,31060,31061,31062,31063,31064,31065,31066,31067,31068,31069,31070,31071,31072,31073,31074,31075,31076,31077,31078,31079,31080,31081,31082,31083,31084,31085,31086,31087,31088,31089,31090,31091,31092,31093,31094,31095,31096,31097,31098,31099,31100,31101,31102,31103,31104,31105,31106,31107,31108,31109,31110,31111,31112,31113,31114,31115,31116,31117,31118,31119,31120,31121,31122,31123,31124,31125,31126,31127,31128,31129,31130,31131,31132,31133,31134,31135,31136,31137,31138,31139,31140,31141,31142,31143,31144,31145,31146,31147,31148,31149,31150,31151,31152,31153,31154,31155,31156,31157,31158,31159,31160,31161,31162,31163,31164,31165,31166,31167,31168,31169,31170,31171,31172,31173,31174,31175,31176,31177,31178,31179,31180,31181,31182,31183,31184,31185,31186,31187,31188,31189,31190,31191,31192,31193,31194,31195,31196,31197,31198,31199,31200,31201,31202,31203,31204,31205,31206,31207,31208,31209,31210,31211,31212,31213,31214,31215,31216,31217,31218,31219,31220,31221,31222,31223,31224,31225,31226,31227,31228,31229,31230,31231,31232,31233,31234,31235,31236,31237,31238,31239,31240,31241,31242,31243,31244,31245,31246,31247,31248,31249,31250,31251,31252,31253,31254,31255,31256,31257,31258,31259,31260,31261,31262,31263,31264,31265,31266,31267,31268,31269,31270,31271,31272,31273,31274,31275,31276,31277,31278,31279,31280,31281,31282,31283,31284,31285,31286,31287,31288,31289,31290,31291,31292,31293,31294,31295,31296,31297,31298,31299,31300,31301,31302,31303,31304,31305,31306,31307,31308,31309,31310,31311,31312,31313,31314,31315,31316,31317,31318,31319,31320,31321,31322,31323,31324,31325,31326,31327,31328,31329,31330,31331,31332,31333,31334,31335,31336,31337,31338,31339,31340,31341,31342,31343,31344,31345,31346,31347,31348,31349,31350,31351,31352,31353,31354,31355,31356,31357,31358,31359,31360,31361,31362,31363,31364,31365,31366,31367,31368,31369,31370,31371,31372,31373,31374,31375,31376,31377,31378,31379,31380,31381,31382,31383,31384,31385,31386,31387,31388,31389,31390,31391,31392,31393,31394,31395,31396,31397,31398,31399,31400,31401,31402,31403,31404,31405,31406,31407,31408,31409,31410,31411,31412,31413,31414,31415,31416,31417,31418,31419,31420,31421,31422,31423,31424,31425,31426,31427,31428,31429,31430,31431,31432,31433,31434,31435,31436,31437,31438,31439,31440,31441,31442,31443,31444,31445,31446,31447,31448,31449,31450,31451,31452,31453,31454,31455,31456,31457,31458,31459,31460,31461,31462,31463,31464,31465,31466,31467,31468,31469,31470,31471,31472,31473,31474,31475,31476,31477,31478,31479,31480,31481,31482,31483,31484,31485,31486,31487,31488,31489,31490,31491,31492,31493,31494,31495,31496,31497,31498,31499,31500,31501,31502,31503,31504,31505,31506,31507,31508,31509,31510,31511,31512,31513,31514,31515,31516,31517,31518,31519,31520,31521,31522,31523,31524,31525,31526,31527,31528,31529,31530,31531,31532,31533,31534,31535,31536,31537,31538,31539,31540,31541,31542,31543,31544,31545,31546,31547,31548,31549,31550,31551,31552,31553,31554,31555,31556,31557,31558,31559,31560,31561,31562,31563,31564,31565,31566,31567,31568,31569,31570,31571,31572,31573,31574,31575,31576,31577,31578,31579,31580,31581,31582,31583,31584,31585,31586,31587,31588,31589,31590,31591,31592,31593,31594,31595,31596,31597,31598,31599,31600,31601,31602,31603,31604,31605,31606,31607,31608,31609,31610,31611,31612,31613,31614,31615,31616,31617,31618,31619,31620,31621,31622,31623,31624,31625,31626,31627,31628,31629,31630,31631,31632,31633,31634,31635,31636,31637,31638,31639,31640,31641,31642,31643,31644,31645,31646,31647,31648,31649,31650,31651,31652,31653,31654,31655,31656,31657,31658,31659,31660,31661,31662,31663,31664,31665,31666,31667,31668,31669,31670,31671,31672,31673,31674,31675,31676,31677,31678,31679,31680,31681,31682,31683,31684,31685,31686,31687,31688,31689,31690,31691,31692,31693,31694,31695,31696,31697,31698,31699,31700,31701,31702,31703,31704,31705,31706,31707,31708,31709,31710,31711,31712,31713,31714,31715,31716,31717,31718,31719,31720,31721,31722,31723,31724,31725,31726,31727,31728,31729,31730,31731,31732,31733,31734,31735,31736,31737,31738,31739,31740,31741,31742,31743,31744,31745,31746,31747,31748,31749,31750,31751,31752,31753,31754,31755,31756,31757,31758,31759,31760,31761,31762,31763,31764,31765,31766,31767,31768,31769,31770,31771,31772,31773,31774,31775,31776,31777,31778,31779,31780,31781,31782,31783,31784,31785,31786,31787,31788,31789,31790,31791,31792,31793,31794,31795,31796,31797,31798,31799,31800,31801,31802,31803,31804,31805,31806,31807,31808,31809,31810,31811,31812,31813,31814,31815,31816,31817,31818,31819,31820,31821,31822,31823,31824,31825,31826,31827,31828,31829,31830,31831,31832,31833,31834,31835,31836,31837,31838,31839,31840,31841,31842,31843,31844,31845,31846,31847,31848,31849,31850,31851,31852,31853,31854,31855,31856,31857,31858,31859,31860,31861,31862,31863,31864,31865,31866,31867,31868,31869,31870,31871,31872,31873,31874,31875,31876,31877,31878,31879,31880,31881,31882,31883,31884,31885,31886,31887,31888,31889,31890,31891,31892,31893,31894,31895,31896,31897,31898,31899,31900,31901,31902,31903,31904,31905,31906,31907,31908,31909,31910,31911,31912,31913,31914,31915,31916,31917,31918,31919,31920,31921,31922,31923,31924,31925,31926,31927,31928,31929,31930,31931,31932,31933,31934,31935,31936,31937,31938,31939,31940,31941,31942,31943,31944,31945,31946,31947,31948,31949,31950,31951,31952,31953,31954,31955,31956,31957,31958,31959,31960,31961,31962,31963,31964,31965,31966,31967,31968,31969,31970,31971,31972,31973,31974,31975,31976,31977,31978,31979,31980,31981,31982,31983,31984,31985,31986,31987,31988,31989,31990,31991,31992,31993,31994,31995,31996,31997,31998,31999,32000,32001,32002,32003,32004,32005,32006,32007,32008,32009,32010,32011,32012,32013,32014,32015,32016,32017,32018,32019,32020,32021,32022,32023,32024,32025,32026,32027,32028,32029,32030,32031,32032,32033,32034,32035,32036,32037,32038,32039,32040,32041,32042,32043,32044,32045,32046,32047,32048,32049,32050,32051,32052,32053,32054,32055,32056,32057,32058,32059,32060,32061,32062,32063,32064,32065,32066,32067,32068,32069,32070,32071,32072,32073,32074,32075,32076,32077,32078,32079,32080,32081,32082,32083,32084,32085,32086,32087,32088,32089,32090,32091,32092,32093,32094,32095,32096,32097,32098,32099,32100,32101,32102,32103,32104,32105,32106,32107,32108,32109,32110,32111,32112,32113,32114,32115,32116,32117,32118,32119,32120,32121,32122,32123,32124,32125,32126,32127,32128,32129,32130,32131,32132,32133,32134,32135,32136,32137,32138,32139,32140,32141,32142,32143,32144,32145,32146,32147,32148,32149,32150,32151,32152,32153,32154,32155,32156,32157,32158,32159,32160,32161,32162,32163,32164,32165,32166,32167,32168,32169,32170,32171,32172,32173,32174,32175,32176,32177,32178,32179,32180,32181,32182,32183,32184,32185,32186,32187,32188,32189,32190,32191,32192,32193,32194,32195,32196,32197,32198,32199,32200,32201,32202,32203,32204,32205,32206,32207,32208,32209,32210,32211,32212,32213,32214,32215,32216,32217,32218,32219,32220,32221,32222,32223,32224,32225,32226,32227,32228,32229,32230,32231,32232,32233,32234,32235,32236,32237,32238,32239,32240,32241,32242,32243,32244,32245,32246,32247,32248,32249,32250,32251,32252,32253,32254,32255,32256,32257,32258,32259,32260,32261,32262,32263,32264,32265,32266,32267,32268,32269,32270,32271,32272,32273,32274,32275,32276,32277,32278,32279,32280,32281,32282,32283,32284,32285,32286,32287,32288,32289,32290,32291,32292,32293,32294,32295,32296,32297,32298,32299,32300,32301,32302,32303,32304,32305,32306,32307,32308,32309,32310,32311,32312,32313,32314,32315,32316,32317,32318,32319,32320,32321,32322,32323,32324,32325,32326,32327,32328,32329,32330,32331,32332,32333,32334,32335,32336,32337,32338,32339,32340,32341,32342,32343,32344,32345,32346,32347,32348,32349,32350,32351,32352,32353,32354,32355,32356,32357,32358,32359,32360,32361,32362,32363,32364,32365,32366,32367,32368,32369,32370,32371,32372,32373,32374,32375,32376,32377,32378,32379,32380,32381,32382,32383,32384,32385,32386,32387,32388,32389,32390,32391,32392,32393,32394,32395,32396,32397,32398,32399,32400,32401,32402,32403,32404,32405,32406,32407,32408,32409,32410,32411,32412,32413,32414,32415,32416,32417,32418,32419,32420,32421,32422,32423,32424,32425,32426,32427,32428,32429,32430,32431,32432,32433,32434,32435,32436,32437,32438,32439,32440,32441,32442,32443,32444,32445,32446,32447,32448,32449,32450,32451,32452,32453,32454,32455,32456,32457,32458,32459,32460,32461,32462,32463,32464,32465,32466,32467,32468,32469,32470,32471,32472,32473,32474,32475,32476,32477,32478,32479,32480,32481,32482,32483,32484,32485,32486,32487,32488,32489,32490,32491,32492,32493,32494,32495,32496,32497,32498,32499,32500,32501,32502,32503,32504,32505,32506,32507,32508,32509,32510,32511,32512,32513,32514,32515,32516,32517,32518,32519,32520,32521,32522,32523,32524,32525,32526,32527,32528,32529,32530,32531,32532,32533,32534,32535,32536,32537,32538,32539,32540,32541,32542,32543,32544,32545,32546,32547,32548,32549,32550,32551,32552,32553,32554,32555,32556,32557,32558,32559,32560,32561,32562,32563,32564,32565,32566,32567,32568,32569,32570,32571,32572,32573,32574,32575,32576,32577,32578,32579,32580,32581,32582,32583,32584,32585,32586,32587,32588,32589,32590,32591,32592,32593,32594,32595,32596,32597,32598,32599,32600,32601,32602,32603,32604,32605,32606,32607,32608,32609,32610,32611,32612,32613,32614,32615,32616,32617,32618,32619,32620,32621,32622,32623,32624,32625,32626,32627,32628,32629,32630,32631,32632,32633,32634,32635,32636,32637,32638,32639,32640,32641,32642,32643,32644,32645,32646,32647,32648,32649,32650,32651,32652,32653,32654,32655,32656,32657,32658,32659,32660,32661,32662,32663,32664,32665,32666,32667,32668,32669,32670,32671,32672,32673,32674,32675,32676,32677,32678,32679,32680,32681,32682,32683,32684,32685,32686,32687,32688,32689,32690,32691,32692,32693,32694,32695,32696,32697,32698,32699,32700,32701,32702,32703,32704,32705,32706,32707,32708,32709,32710,32711,32712,32713,32714,32715,32716,32717,32718,32719,32720,32721,32722,32723,32724,32725,32726,32727,32728,32729,32730,32731,32732,32733,32734,32735,32736,32737,32738,32739,32740,32741,32742,32743,32744,32745,32746,32747,32748,32749,32750,32751,32752,32753,32754,32755,32756,32757,32758,32759,32760,32761,32762,32763,32764,32765,32766,32767,32768,32769,32770,32771,32772,32773,32774,32775,32776,32777,32778,32779,32780,32781,32782,32783,32784,32785,32786,32787,32788,32789,32790,32791,32792,32793,32794,32795,32796,32797,32798,32799,32800,32801,32802,32803,32804,32805,32806,32807,32808,32809,32810,32811,32812,32813,32814,32815,32816,32817,32818,32819,32820,32821,32822,32823,32824,32825,32826,32827,32828,32829,32830,32831,32832,32833,32834,32835,32836,32837,32838,32839,32840,32841,32842,32843,32844,32845,32846,32847,32848,32849,32850,32851,32852,32853,32854,32855,32856,32857,32858,32859,32860,32861,32862,32863,32864,32865,32866,32867,32868,32869,32870,32871,32872,32873,32874,32875,32876,32877,32878,32879,32880,32881,32882,32883,32884,32885,32886,32887,32888,32889,32890,32891,32892,32893,32894,32895,32896,32897,32898,32899,32900,32901,32902,32903,32904,32905,32906,32907,32908,32909,32910,32911,32912,32913,32914,32915,32916,32917,32918,32919,32920,32921,32922,32923,32924,32925,32926,32927,32928,32929,32930,32931,32932,32933,32934,32935,32936,32937,32938,32939,32940,32941,32942,32943,32944,32945,32946,32947,32948,32949,32950,32951,32952,32953,32954,32955,32956,32957,32958,32959,32960,32961,32962,32963,32964,32965,32966,32967,32968,32969,32970,32971,32972,32973,32974,32975,32976,32977,32978,32979,32980,32981,32982,32983,32984,32985,32986,32987,32988,32989,32990,32991,32992,32993,32994,32995,32996,32997,32998,32999,33000,33001,33002,33003,33004,33005,33006,33007,33008,33009,33010,33011,33012,33013,33014,33015,33016,33017,33018,33019,33020,33021,33022,33023,33024,33025,33026,33027,33028,33029,33030,33031,33032,33033,33034,33035,33036,33037,33038,33039,33040,33041,33042,33043,33044,33045,33046,33047,33048,33049,33050,33051,33052,33053,33054,33055,33056,33057,33058,33059,33060,33061,33062,33063,33064,33065,33066,33067,33068,33069,33070,33071,33072,33073,33074,33075,33076,33077,33078,33079,33080,33081,33082,33083,33084,33085,33086,33087,33088,33089,33090,33091,33092,33093,33094,33095,33096,33097,33098,33099,33100,33101,33102,33103,33104,33105,33106,33107,33108,33109,33110,33111,33112,33113,33114,33115,33116,33117,33118,33119,33120,33121,33122,33123,33124,33125,33126,33127,33128,33129,33130,33131,33132,33133,33134,33135,33136,33137,33138,33139,33140,33141,33142,33143,33144,33145,33146,33147,33148,33149,33150,33151,33152,33153,33154,33155,33156,33157,33158,33159,33160,33161,33162,33163,33164,33165,33166,33167,33168,33169,33170,33171,33172,33173,33174,33175,33176,33177,33178,33179,33180,33181,33182,33183,33184,33185,33186,33187,33188,33189,33190,33191,33192,33193,33194,33195,33196,33197,33198,33199,33200,33201,33202,33203,33204,33205,33206,33207,33208,33209,33210,33211,33212,33213,33214,33215,33216,33217,33218,33219,33220,33221,33222,33223,33224,33225,33226,33227,33228,33229,33230,33231,33232,33233,33234,33235,33236,33237,33238,33239,33240,33241,33242,33243,33244,33245,33246,33247,33248,33249,33250,33251,33252,33253,33254,33255,33256,33257,33258,33259,33260,33261,33262,33263,33264,33265,33266,33267,33268,33269,33270,33271,33272,33273,33274,33275,33276,33277,33278,33279,33280,33281,33282,33283,33284,33285,33286,33287,33288,33289,33290,33291,33292,33293,33294,33295,33296,33297,33298,33299,33300,33301,33302,33303,33304,33305,33306,33307,33308,33309,33310,33311,33312,33313,33314,33315,33316,33317,33318,33319,33320,33321,33322,33323,33324,33325,33326,33327,33328,33329,33330,33331,33332,33333,33334,33335,33336,33337,33338,33339,33340,33341,33342,33343,33344,33345,33346,33347,33348,33349,33350,33351,33352,33353,33354,33355,33356,33357,33358,33359,33360,33361,33362,33363,33364,33365,33366,33367,33368,33369,33370,33371,33372,33373,33374,33375,33376,33377,33378,33379,33380,33381,33382,33383,33384,33385,33386,33387,33388,33389,33390,33391,33392,33393,33394,33395,33396,33397,33398,33399,33400,33401,33402,33403,33404,33405,33406,33407,33408,33409,33410,33411,33412,33413,33414,33415,33416,33417,33418,33419,33420,33421,33422,33423,33424,33425,33426,33427,33428,33429,33430,33431,33432,33433,33434,33435,33436,33437,33438,33439,33440,33441,33442,33443,33444,33445,33446,33447,33448,33449,33450,33451,33452,33453,33454,33455,33456,33457,33458,33459,33460,33461,33462,33463,33464,33465,33466,33467,33468,33469,33470,33471,33472,33473,33474,33475,33476,33477,33478,33479,33480,33481,33482,33483,33484,33485,33486,33487,33488,33489,33490,33491,33492,33493,33494,33495,33496,33497,33498,33499,33500,33501,33502,33503,33504,33505,33506,33507,33508,33509,33510,33511,33512,33513,33514,33515,33516,33517,33518,33519,33520,33521,33522,33523,33524,33525,33526,33527,33528,33529,33530,33531,33532,33533,33534,33535,33536,33537,33538,33539,33540,33541,33542,33543,33544,33545,33546,33547,33548,33549,33550,33551,33552,33553,33554,33555,33556,33557,33558,33559,33560,33561,33562,33563,33564,33565,33566,33567,33568,33569,33570,33571,33572,33573,33574,33575,33576,33577,33578,33579,33580,33581,33582,33583,33584,33585,33586,33587,33588,33589,33590,33591,33592,33593,33594,33595,33596,33597,33598,33599,33600,33601,33602,33603,33604,33605,33606,33607,33608,33609,33610,33611,33612,33613,33614,33615,33616,33617,33618,33619,33620,33621,33622,33623,33624,33625,33626,33627,33628,33629,33630,33631,33632,33633,33634,33635,33636,33637,33638,33639,33640,33641,33642,33643,33644,33645,33646,33647,33648,33649,33650,33651,33652,33653,33654,33655,33656,33657,33658,33659,33660,33661,33662,33663,33664,33665,33666,33667,33668,33669,33670,33671,33672,33673,33674,33675,33676,33677,33678,33679,33680,33681,33682,33683,33684,33685,33686,33687,33688,33689,33690,33691,33692,33693,33694,33695,33696,33697,33698,33699,33700,33701,33702,33703,33704,33705,33706,33707,33708,33709,33710,33711,33712,33713,33714,33715,33716,33717,33718,33719,33720,33721,33722,33723,33724,33725,33726,33727,33728,33729,33730,33731,33732,33733,33734,33735,33736,33737,33738,33739,33740,33741,33742,33743,33744,33745,33746,33747,33748,33749,33750,33751,33752,33753,33754,33755,33756,33757,33758,33759,33760,33761,33762,33763,33764,33765,33766,33767,33768,33769,33770,33771,33772,33773,33774,33775,33776,33777,33778,33779,33780,33781,33782,33783,33784,33785,33786,33787,33788,33789,33790,33791,33792,33793,33794,33795,33796,33797,33798,33799,33800,33801,33802,33803,33804,33805,33806,33807,33808,33809,33810,33811,33812,33813,33814,33815,33816,33817,33818,33819,33820,33821,33822,33823,33824,33825,33826,33827,33828,33829,33830,33831,33832,33833,33834,33835,33836,33837,33838,33839,33840,33841,33842,33843,33844,33845,33846,33847,33848,33849,33850,33851,33852,33853,33854,33855,33856,33857,33858,33859,33860,33861,33862,33863,33864,33865,33866,33867,33868,33869,33870,33871,33872,33873,33874,33875,33876,33877,33878,33879,33880,33881,33882,33883,33884,33885,33886,33887,33888,33889,33890,33891,33892,33893,33894,33895,33896,33897,33898,33899,33900,33901,33902,33903,33904,33905,33906,33907,33908,33909,33910,33911,33912,33913,33914,33915,33916,33917,33918,33919,33920,33921,33922,33923,33924,33925,33926,33927,33928,33929,33930,33931,33932,33933,33934,33935,33936,33937,33938,33939,33940,33941,33942,33943,33944,33945,33946,33947,33948,33949,33950,33951,33952,33953,33954,33955,33956,33957,33958,33959,33960,33961,33962,33963,33964,33965,33966,33967,33968,33969,33970,33971,33972,33973,33974,33975,33976,33977,33978,33979,33980,33981,33982,33983,33984,33985,33986,33987,33988,33989,33990,33991,33992,33993,33994,33995,33996,33997,33998,33999,34000,34001,34002,34003,34004,34005,34006,34007,34008,34009,34010,34011,34012,34013,34014,34015,34016,34017,34018,34019,34020,34021,34022,34023,34024,34025,34026,34027,34028,34029,34030,34031,34032,34033,34034,34035,34036,34037,34038,34039,34040,34041,34042,34043,34044,34045,34046,34047,34048,34049,34050,34051,34052,34053,34054,34055,34056,34057,34058,34059,34060,34061,34062,34063,34064,34065,34066,34067,34068,34069,34070,34071,34072,34073,34074,34075,34076,34077,34078,34079,34080,34081,34082,34083,34084,34085,34086,34087,34088,34089,34090,34091,34092,34093,34094,34095,34096,34097,34098,34099,34100,34101,34102,34103,34104,34105,34106,34107,34108,34109,34110,34111,34112,34113,34114,34115,34116,34117,34118,34119,34120,34121,34122,34123,34124,34125,34126,34127,34128,34129,34130,34131,34132,34133,34134,34135,34136,34137,34138,34139,34140,34141,34142,34143,34144,34145,34146,34147,34148,34149,34150,34151,34152,34153,34154,34155,34156,34157,34158,34159,34160,34161,34162,34163,34164,34165,34166,34167,34168,34169,34170,34171,34172,34173,34174,34175,34176,34177,34178,34179,34180,34181,34182,34183,34184,34185,34186,34187,34188,34189,34190,34191,34192,34193,34194,34195,34196,34197,34198,34199,34200,34201,34202,34203,34204,34205,34206,34207,34208,34209,34210,34211,34212,34213,34214,34215,34216,34217,34218,34219,34220,34221,34222,34223,34224,34225,34226,34227,34228,34229,34230,34231,34232,34233,34234,34235,34236,34237,34238,34239,34240,34241,34242,34243,34244,34245,34246,34247,34248,34249,34250,34251,34252,34253,34254,34255,34256,34257,34258,34259,34260,34261,34262,34263,34264,34265,34266,34267,34268,34269,34270,34271,34272,34273,34274,34275,34276,34277,34278,34279,34280,34281,34282,34283,34284,34285,34286,34287,34288,34289,34290,34291,34292,34293,34294,34295,34296,34297,34298,34299,34300,34301,34302,34303,34304,34305,34306,34307,34308,34309,34310,34311,34312,34313,34314,34315,34316,34317,34318,34319,34320,34321,34322,34323,34324,34325,34326,34327,34328,34329,34330,34331,34332,34333,34334,34335,34336,34337,34338,34339,34340,34341,34342,34343,34344,34345,34346,34347,34348,34349,34350,34351,34352,34353,34354,34355,34356,34357,34358,34359,34360,34361,34362,34363,34364,34365,34366,34367,34368,34369,34370,34371,34372,34373,34374,34375,34376,34377,34378,34379,34380,34381,34382,34383,34384,34385,34386,34387,34388,34389,34390,34391,34392,34393,34394,34395,34396,34397,34398,34399,34400,34401,34402,34403,34404,34405,34406,34407,34408,34409,34410,34411,34412,34413,34414,34415,34416,34417,34418,34419,34420,34421,34422,34423,34424,34425,34426,34427,34428,34429,34430,34431,34432,34433,34434,34435,34436,34437,34438,34439,34440,34441,34442,34443,34444,34445,34446,34447,34448,34449,34450,34451,34452,34453,34454,34455,34456,34457,34458,34459,34460,34461,34462,34463,34464,34465,34466,34467,34468,34469,34470,34471,34472,34473,34474,34475,34476,34477,34478,34479,34480,34481,34482,34483,34484,34485,34486,34487,34488,34489,34490,34491,34492,34493,34494,34495,34496,34497,34498,34499,34500,34501,34502,34503,34504,34505,34506,34507,34508,34509,34510,34511,34512,34513,34514,34515,34516,34517,34518,34519,34520,34521,34522,34523,34524,34525,34526,34527,34528,34529,34530,34531,34532,34533,34534,34535,34536,34537,34538,34539,34540,34541,34542,34543,34544,34545,34546,34547,34548,34549,34550,34551,34552,34553,34554,34555,34556,34557,34558,34559,34560,34561,34562,34563,34564,34565,34566,34567,34568,34569,34570,34571,34572,34573,34574,34575,34576,34577,34578,34579,34580,34581,34582,34583,34584,34585,34586,34587,34588,34589,34590,34591,34592,34593,34594,34595,34596,34597,34598,34599,34600,34601,34602,34603,34604,34605,34606,34607,34608,34609,34610,34611,34612,34613,34614,34615,34616,34617,34618,34619,34620,34621,34622,34623,34624,34625,34626,34627,34628,34629,34630,34631,34632,34633,34634,34635,34636,34637,34638,34639,34640,34641,34642,34643,34644,34645,34646,34647,34648,34649,34650,34651,34652,34653,34654,34655,34656,34657,34658,34659,34660,34661,34662,34663,34664,34665,34666,34667,34668,34669,34670,34671,34672,34673,34674,34675,34676,34677,34678,34679,34680,34681,34682,34683,34684,34685,34686,34687,34688,34689,34690,34691,34692,34693,34694,34695,34696,34697,34698,34699,34700,34701,34702,34703,34704,34705,34706,34707,34708,34709,34710,34711,34712,34713,34714,34715,34716,34717,34718,34719,34720,34721,34722,34723,34724,34725,34726,34727,34728,34729,34730,34731,34732,34733,34734,34735,34736,34737,34738,34739,34740,34741,34742,34743,34744,34745,34746,34747,34748,34749,34750,34751,34752,34753,34754,34755,34756,34757,34758,34759,34760,34761,34762,34763,34764,34765,34766,34767,34768,34769,34770,34771,34772,34773,34774,34775,34776,34777,34778,34779,34780,34781,34782,34783,34784,34785,34786,34787,34788,34789,34790,34791,34792,34793,34794,34795,34796,34797,34798,34799,34800,34801,34802,34803,34804,34805,34806,34807,34808,34809,34810,34811,34812,34813,34814,34815,34816,34817,34818,34819,34820,34821,34822,34823,34824,34825,34826,34827,34828,34829,34830,34831,34832,34833,34834,34835,34836,34837,34838,34839,34840,34841,34842,34843,34844,34845,34846,34847,34848,34849,34850,34851,34852,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34866,34867,34868,34869,34870,34871,34872,34873,34874,34875,34876,34877,34878,34879,34880,34881,34882,34883,34884,34885,34886,34887,34888,34889,34890,34891,34892,34893,34894,34895,34896,34897,34898,34899,34900,34901,34902,34903,34904,34905,34906,34907,34908,34909,34910,34911,34912,34913,34914,34915,34916,34917,34918,34919,34920,34921,34922,34923,34924,34925,34926,34927,34928,34929,34930,34931,34932,34933,34934,34935,34936,34937,34938,34939,34940,34941,34942,34943,34944,34945,34946,34947,34948,34949,34950,34951,34952,34953,34954,34955,34956,34957,34958,34959,34960,34961,34962,34963,34964,34965,34966,34967,34968,34969,34970,34971,34972,34973,34974,34975,34976,34977,34978,34979,34980,34981,34982,34983,34984,34985,34986,34987,34988,34989,34990,34991,34992,34993,34994,34995,34996,34997,34998,34999,35000,35001,35002,35003,35004,35005,35006,35007,35008,35009,35010,35011,35012,35013,35014,35015,35016,35017,35018,35019,35020,35021,35022,35023,35024,35025,35026,35027,35028,35029,35030,35031,35032,35033,35034,35035,35036,35037,35038,35039,35040,35041,35042,35043,35044,35045,35046,35047,35048,35049,35050,35051,35052,35053,35054,35055,35056,35057,35058,35059,35060,35061,35062,35063,35064,35065,35066,35067,35068,35069,35070,35071,35072,35073,35074,35075,35076,35077,35078,35079,35080,35081,35082,35083,35084,35085,35086,35087,35088,35089,35090,35091,35092,35093,35094,35095,35096,35097,35098,35099,35100,35101,35102,35103,35104,35105,35106,35107,35108,35109,35110,35111,35112,35113,35114,35115,35116,35117,35118,35119,35120,35121,35122,35123,35124,35125,35126,35127,35128,35129,35130,35131,35132,35133,35134,35135,35136,35137,35138,35139,35140,35141,35142,35143,35144,35145,35146,35147,35148,35149,35150,35151,35152,35153,35154,35155,35156,35157,35158,35159,35160,35161,35162,35163,35164,35165,35166,35167,35168,35169,35170,35171,35172,35173,35174,35175,35176,35177,35178,35179,35180,35181,35182,35183,35184,35185,35186,35187,35188,35189,35190,35191,35192,35193,35194,35195,35196,35197,35198,35199,35200,35201,35202,35203,35204,35205,35206,35207,35208,35209,35210,35211,35212,35213,35214,35215,35216,35217,35218,35219,35220,35221,35222,35223,35224,35225,35226,35227,35228,35229,35230,35231,35232,35233,35234,35235,35236,35237,35238,35239,35240,35241,35242,35243,35244,35245,35246,35247,35248,35249,35250,35251,35252,35253,35254,35255,35256,35257,35258,35259,35260,35261,35262,35263,35264,35265,35266,35267,35268,35269,35270,35271,35272,35273,35274,35275,35276,35277,35278,35279,35280,35281,35282,35283,35284,35285,35286,35287,35288,35289,35290,35291,35292,35293,35294,35295,35296,35297,35298,35299,35300,35301,35302,35303,35304,35305,35306,35307,35308,35309,35310,35311,35312,35313,35314,35315,35316,35317,35318,35319,35320,35321,35322,35323,35324,35325,35326,35327,35328,35329,35330,35331,35332,35333,35334,35335,35336,35337,35338,35339,35340,35341,35342,35343,35344,35345,35346,35347,35348,35349,35350,35351,35352,35353,35354,35355,35356,35357,35358,35359,35360,35361,35362,35363,35364,35365,35366,35367,35368,35369,35370,35371,35372,35373,35374,35375,35376,35377,35378,35379,35380,35381,35382,35383,35384,35385,35386,35387,35388,35389,35390,35391,35392,35393,35394,35395,35396,35397,35398,35399,35400,35401,35402,35403,35404,35405,35406,35407,35408,35409,35410,35411,35412,35413,35414,35415,35416,35417,35418,35419,35420,35421,35422,35423,35424,35425,35426,35427,35428,35429,35430,35431,35432,35433,35434,35435,35436,35437,35438,35439,35440,35441,35442,35443,35444,35445,35446,35447,35448,35449,35450,35451,35452,35453,35454,35455,35456,35457,35458,35459,35460,35461,35462,35463,35464,35465,35466,35467,35468,35469,35470,35471,35472,35473,35474,35475,35476,35477,35478,35479,35480,35481,35482,35483,35484,35485,35486,35487,35488,35489,35490,35491,35492,35493,35494,35495,35496,35497,35498,35499,35500,35501,35502,35503,35504,35505,35506,35507,35508,35509,35510,35511,35512,35513,35514,35515,35516,35517,35518,35519,35520,35521,35522,35523,35524,35525,35526,35527,35528,35529,35530,35531,35532,35533,35534,35535,35536,35537,35538,35539,35540,35541,35542,35543,35544,35545,35546,35547,35548,35549,35550,35551,35552,35553,35554,35555,35556,35557,35558,35559,35560,35561,35562,35563,35564,35565,35566,35567,35568,35569,35570,35571,35572,35573,35574,35575,35576,35577,35578,35579,35580,35581,35582,35583,35584,35585,35586,35587,35588,35589,35590,35591,35592,35593,35594,35595,35596,35597,35598,35599,35600,35601,35602,35603,35604,35605,35606,35607,35608,35609,35610,35611,35612,35613,35614,35615,35616,35617,35618,35619,35620,35621,35622,35623,35624,35625,35626,35627,35628,35629,35630,35631,35632,35633,35634,35635,35636,35637,35638,35639,35640,35641,35642,35643,35644,35645,35646,35647,35648,35649,35650,35651,35652,35653,35654,35655,35656,35657,35658,35659,35660,35661,35662,35663,35664,35665,35666,35667,35668,35669,35670,35671,35672,35673,35674,35675,35676,35677,35678,35679,35680,35681,35682,35683,35684,35685,35686,35687,35688,35689,35690,35691,35692,35693,35694,35695,35696,35697,35698,35699,35700,35701,35702,35703,35704,35705,35706,35707,35708,35709,35710,35711,35712,35713,35714,35715,35716,35717,35718,35719,35720,35721,35722,35723,35724,35725,35726,35727,35728,35729,35730,35731,35732,35733,35734,35735,35736,35737,35738,35739,35740,35741,35742,35743,35744,35745,35746,35747,35748,35749,35750,35751,35752,35753,35754,35755,35756,35757,35758,35759,35760,35761,35762,35763,35764,35765,35766,35767,35768,35769,35770,35771,35772,35773,35774,35775,35776,35777,35778,35779,35780,35781,35782,35783,35784,35785,35786,35787,35788,35789,35790,35791,35792,35793,35794,35795,35796,35797,35798,35799,35800,35801,35802,35803,35804,35805,35806,35807,35808,35809,35810,35811,35812,35813,35814,35815,35816,35817,35818,35819,35820,35821,35822,35823,35824,35825,35826,35827,35828,35829,35830,35831,35832,35833,35834,35835,35836,35837,35838,35839,35840,35841,35842,35843,35844,35845,35846,35847,35848,35849,35850,35851,35852,35853,35854,35855,35856,35857,35858,35859,35860,35861,35862,35863,35864,35865,35866,35867,35868,35869,35870,35871,35872,35873,35874,35875,35876,35877,35878,35879,35880,35881,35882,35883,35884,35885,35886,35887,35888,35889,35890,35891,35892,35893,35894,35895,35896,35897,35898,35899,35900,35901,35902,35903,35904,35905,35906,35907,35908,35909,35910,35911,35912,35913,35914,35915,35916,35917,35918,35919,35920,35921,35922,35923,35924,35925,35926,35927,35928,35929,35930,35931,35932,35933,35934,35935,35936,35937,35938,35939,35940,35941,35942,35943,35944,35945,35946,35947,35948,35949,35950,35951,35952,35953,35954,35955,35956,35957,35958,35959,35960,35961,35962,35963,35964,35965,35966,35967,35968,35969,35970,35971,35972,35973,35974,35975,35976,35977,35978,35979,35980,35981,35982,35983,35984,35985,35986,35987,35988,35989,35990,35991,35992,35993,35994,35995,35996,35997,35998,35999,36000,36001,36002,36003,36004,36005,36006,36007,36008,36009,36010,36011,36012,36013,36014,36015,36016,36017,36018,36019,36020,36021,36022,36023,36024,36025,36026,36027,36028,36029,36030,36031,36032,36033,36034,36035,36036,36037,36038,36039,36040,36041,36042,36043,36044,36045,36046,36047,36048,36049,36050,36051,36052,36053,36054,36055,36056,36057,36058,36059,36060,36061,36062,36063,36064,36065,36066,36067,36068,36069,36070,36071,36072,36073,36074,36075,36076,36077,36078,36079,36080,36081,36082,36083,36084,36085,36086,36087,36088,36089,36090,36091,36092,36093,36094,36095,36096,36097,36098,36099,36100,36101,36102,36103,36104,36105,36106,36107,36108,36109,36110,36111,36112,36113,36114,36115,36116,36117,36118,36119,36120,36121,36122,36123,36124,36125,36126,36127,36128,36129,36130,36131,36132,36133,36134,36135,36136,36137,36138,36139,36140,36141,36142,36143,36144,36145,36146,36147,36148,36149,36150,36151,36152,36153,36154,36155,36156,36157,36158,36159,36160,36161,36162,36163,36164,36165,36166,36167,36168,36169,36170,36171,36172,36173,36174,36175,36176,36177,36178,36179,36180,36181,36182,36183,36184,36185,36186,36187,36188,36189,36190,36191,36192,36193,36194,36195,36196,36197,36198,36199,36200,36201,36202,36203,36204,36205,36206,36207,36208,36209,36210,36211,36212,36213,36214,36215,36216,36217,36218,36219,36220,36221,36222,36223,36224,36225,36226,36227,36228,36229,36230,36231,36232,36233,36234,36235,36236,36237,36238,36239,36240,36241,36242,36243,36244,36245,36246,36247,36248,36249,36250,36251,36252,36253,36254,36255,36256,36257,36258,36259,36260,36261,36262,36263,36264,36265,36266,36267,36268,36269,36270,36271,36272,36273,36274,36275,36276,36277,36278,36279,36280,36281,36282,36283,36284,36285,36286,36287,36288,36289,36290,36291,36292,36293,36294,36295,36296,36297,36298,36299,36300,36301,36302,36303,36304,36305,36306,36307,36308,36309,36310,36311,36312,36313,36314,36315,36316,36317,36318,36319,36320,36321,36322,36323,36324,36325,36326,36327,36328,36329,36330,36331,36332,36333,36334,36335,36336,36337,36338,36339,36340,36341,36342,36343,36344,36345,36346,36347,36348,36349,36350,36351,36352,36353,36354,36355,36356,36357,36358,36359,36360,36361,36362,36363,36364,36365,36366,36367,36368,36369,36370,36371,36372,36373,36374,36375,36376,36377,36378,36379,36380,36381,36382,36383,36384,36385,36386,36387,36388,36389,36390,36391,36392,36393,36394,36395,36396,36397,36398,36399,36400,36401,36402,36403,36404,36405,36406,36407,36408,36409,36410,36411,36412,36413,36414,36415,36416,36417,36418,36419,36420,36421,36422,36423,36424,36425,36426,36427,36428,36429,36430,36431,36432,36433,36434,36435,36436,36437,36438,36439,36440,36441,36442,36443,36444,36445,36446,36447,36448,36449,36450,36451,36452,36453,36454,36455,36456,36457,36458,36459,36460,36461,36462,36463,36464,36465,36466,36467,36468,36469,36470,36471,36472,36473,36474,36475,36476,36477,36478,36479,36480,36481,36482,36483,36484,36485,36486,36487,36488,36489,36490,36491,36492,36493,36494,36495,36496,36497,36498,36499,36500,36501,36502,36503,36504,36505,36506,36507,36508,36509,36510,36511,36512,36513,36514,36515,36516,36517,36518,36519,36520,36521,36522,36523,36524,36525,36526,36527,36528,36529,36530,36531,36532,36533,36534,36535,36536,36537,36538,36539,36540,36541,36542,36543,36544,36545,36546,36547,36548,36549,36550,36551,36552,36553,36554,36555,36556,36557,36558,36559,36560,36561,36562,36563,36564,36565,36566,36567,36568,36569,36570,36571,36572,36573,36574,36575,36576,36577,36578,36579,36580,36581,36582,36583,36584,36585,36586,36587,36588,36589,36590,36591,36592,36593,36594,36595,36596,36597,36598,36599,36600,36601,36602,36603,36604,36605,36606,36607,36608,36609,36610,36611,36612,36613,36614,36615,36616,36617,36618,36619,36620,36621,36622,36623,36624,36625,36626,36627,36628,36629,36630,36631,36632,36633,36634,36635,36636,36637,36638,36639,36640,36641,36642,36643,36644,36645,36646,36647,36648,36649,36650,36651,36652,36653,36654,36655,36656,36657,36658,36659,36660,36661,36662,36663,36664,36665,36666,36667,36668,36669,36670,36671,36672,36673,36674,36675,36676,36677,36678,36679,36680,36681,36682,36683,36684,36685,36686,36687,36688,36689,36690,36691,36692,36693,36694,36695,36696,36697,36698,36699,36700,36701,36702,36703,36704,36705,36706,36707,36708,36709,36710,36711,36712,36713,36714,36715,36716,36717,36718,36719,36720,36721,36722,36723,36724,36725,36726,36727,36728,36729,36730,36731,36732,36733,36734,36735,36736,36737,36738,36739,36740,36741,36742,36743,36744,36745,36746,36747,36748,36749,36750,36751,36752,36753,36754,36755,36756,36757,36758,36759,36760,36761,36762,36763,36764,36765,36766,36767,36768,36769,36770,36771,36772,36773,36774,36775,36776,36777,36778,36779,36780,36781,36782,36783,36784,36785,36786,36787,36788,36789,36790,36791,36792,36793,36794,36795,36796,36797,36798,36799,36800,36801,36802,36803,36804,36805,36806,36807,36808,36809,36810,36811,36812,36813,36814,36815,36816,36817,36818,36819,36820,36821,36822,36823,36824,36825,36826,36827,36828,36829,36830,36831,36832,36833,36834,36835,36836,36837,36838,36839,36840,36841,36842,36843,36844,36845,36846,36847,36848,36849,36850,36851,36852,36853,36854,36855,36856,36857,36858,36859,36860,36861,36862,36863,36864,36865,36866,36867,36868,36869,36870,36871,36872,36873,36874,36875,36876,36877,36878,36879,36880,36881,36882,36883,36884,36885,36886,36887,36888,36889,36890,36891,36892,36893,36894,36895,36896,36897,36898,36899,36900,36901,36902,36903,36904,36905,36906,36907,36908,36909,36910,36911,36912,36913,36914,36915,36916,36917,36918,36919,36920,36921,36922,36923,36924,36925,36926,36927,36928,36929,36930,36931,36932,36933,36934,36935,36936,36937,36938,36939,36940,36941,36942,36943,36944,36945,36946,36947,36948,36949,36950,36951,36952,36953,36954,36955,36956,36957,36958,36959,36960,36961,36962,36963,36964,36965,36966,36967,36968,36969,36970,36971,36972,36973,36974,36975,36976,36977,36978,36979,36980,36981,36982,36983,36984,36985,36986,36987,36988,36989,36990,36991,36992,36993,36994,36995,36996,36997,36998,36999,37000,37001,37002,37003,37004,37005,37006,37007,37008,37009,37010,37011,37012,37013,37014,37015,37016,37017,37018,37019,37020,37021,37022,37023,37024,37025,37026,37027,37028,37029,37030,37031,37032,37033,37034,37035,37036,37037,37038,37039,37040,37041,37042,37043,37044,37045,37046,37047,37048,37049,37050,37051,37052,37053,37054,37055,37056,37057,37058,37059,37060,37061,37062,37063,37064,37065,37066,37067,37068,37069,37070,37071,37072,37073,37074,37075,37076,37077,37078,37079,37080,37081,37082,37083,37084,37085,37086,37087,37088,37089,37090,37091,37092,37093,37094,37095,37096,37097,37098,37099,37100,37101,37102,37103,37104,37105,37106,37107,37108,37109,37110,37111,37112,37113,37114,37115,37116,37117,37118,37119,37120,37121,37122,37123,37124,37125,37126,37127,37128,37129,37130,37131,37132,37133,37134,37135,37136,37137,37138,37139,37140,37141,37142,37143,37144,37145,37146,37147,37148,37149,37150,37151,37152,37153,37154,37155,37156,37157,37158,37159,37160,37161,37162,37163,37164,37165,37166,37167,37168,37169,37170,37171,37172,37173,37174,37175,37176,37177,37178,37179,37180,37181,37182,37183,37184,37185,37186,37187,37188,37189,37190,37191,37192,37193,37194,37195,37196,37197,37198,37199,37200,37201,37202,37203,37204,37205,37206,37207,37208,37209,37210,37211,37212,37213,37214,37215,37216,37217,37218,37219,37220,37221,37222,37223,37224,37225,37226,37227,37228,37229,37230,37231,37232,37233,37234,37235,37236,37237,37238,37239,37240,37241,37242,37243,37244,37245,37246,37247,37248,37249,37250,37251,37252,37253,37254,37255,37256,37257,37258,37259,37260,37261,37262,37263,37264,37265,37266,37267,37268,37269,37270,37271,37272,37273,37274,37275,37276,37277,37278,37279,37280,37281,37282,37283,37284,37285,37286,37287,37288,37289,37290,37291,37292,37293,37294,37295,37296,37297,37298,37299,37300,37301,37302,37303,37304,37305,37306,37307,37308,37309,37310,37311,37312,37313,37314,37315,37316,37317,37318,37319,37320,37321,37322,37323,37324,37325,37326,37327,37328,37329,37330,37331,37332,37333,37334,37335,37336,37337,37338,37339,37340,37341,37342,37343,37344,37345,37346,37347,37348,37349,37350,37351,37352,37353,37354,37355,37356,37357,37358,37359,37360,37361,37362,37363,37364,37365,37366,37367,37368,37369,37370,37371,37372,37373,37374,37375,37376,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37387,37388,37389,37390,37391,37392,37393,37394,37395,37396,37397,37398,37399,37400,37401,37402,37403,37404,37405,37406,37407,37408,37409,37410,37411,37412,37413,37414,37415,37416,37417,37418,37419,37420,37421,37422,37423,37424,37425,37426,37427,37428,37429,37430,37431,37432,37433,37434,37435,37436,37437,37438,37439,37440,37441,37442,37443,37444,37445,37446,37447,37448,37449,37450,37451,37452,37453,37454,37455,37456,37457,37458,37459,37460,37461,37462,37463,37464,37465,37466,37467,37468,37469,37470,37471,37472,37473,37474,37475,37476,37477,37478,37479,37480,37481,37482,37483,37484,37485,37486,37487,37488,37489,37490,37491,37492,37493,37494,37495,37496,37497,37498,37499,37500,37501,37502,37503,37504,37505,37506,37507,37508,37509,37510,37511,37512,37513,37514,37515,37516,37517,37518,37519,37520,37521,37522,37523,37524,37525,37526,37527,37528,37529,37530,37531,37532,37533,37534,37535,37536,37537,37538,37539,37540,37541,37542,37543,37544,37545,37546,37547,37548,37549,37550,37551,37552,37553,37554,37555,37556,37557,37558,37559,37560,37561,37562,37563,37564,37565,37566,37567,37568,37569,37570,37571,37572,37573,37574,37575,37576,37577,37578,37579,37580,37581,37582,37583,37584,37585,37586,37587,37588,37589,37590,37591,37592,37593,37594,37595,37596,37597,37598,37599,37600,37601,37602,37603,37604,37605,37606,37607,37608,37609,37610,37611,37612,37613,37614,37615,37616,37617,37618,37619,37620,37621,37622,37623,37624,37625,37626,37627,37628,37629,37630,37631,37632,37633,37634,37635,37636,37637,37638,37639,37640,37641,37642,37643,37644,37645,37646,37647,37648,37649,37650,37651,37652,37653,37654,37655,37656,37657,37658,37659,37660,37661,37662,37663,37664,37665,37666,37667,37668,37669,37670,37671,37672,37673,37674,37675,37676,37677,37678,37679,37680,37681,37682,37683,37684,37685,37686,37687,37688,37689,37690,37691,37692,37693,37694,37695,37696,37697,37698,37699,37700,37701,37702,37703,37704,37705,37706,37707,37708,37709,37710,37711,37712,37713,37714,37715,37716,37717,37718,37719,37720,37721,37722,37723,37724,37725,37726,37727,37728,37729,37730,37731,37732,37733,37734,37735,37736,37737,37738,37739,37740,37741,37742,37743,37744,37745,37746,37747,37748,37749,37750,37751,37752,37753,37754,37755,37756,37757,37758,37759,37760,37761,37762,37763,37764,37765,37766,37767,37768,37769,37770,37771,37772,37773,37774,37775,37776,37777,37778,37779,37780,37781,37782,37783,37784,37785,37786,37787,37788,37789,37790,37791,37792,37793,37794,37795,37796,37797,37798,37799,37800,37801,37802,37803,37804,37805,37806,37807,37808,37809,37810,37811,37812,37813,37814,37815,37816,37817,37818,37819,37820,37821,37822,37823,37824,37825,37826,37827,37828,37829,37830,37831,37832,37833,37834,37835,37836,37837,37838,37839,37840,37841,37842,37843,37844,37845,37846,37847,37848,37849,37850,37851,37852,37853,37854,37855,37856,37857,37858,37859,37860,37861,37862,37863,37864,37865,37866,37867,37868,37869,37870,37871,37872,37873,37874,37875,37876,37877,37878,37879,37880,37881,37882,37883,37884,37885,37886,37887,37888,37889,37890,37891,37892,37893,37894,37895,37896,37897,37898,37899,37900,37901,37902,37903,37904,37905,37906,37907,37908,37909,37910,37911,37912,37913,37914,37915,37916,37917,37918,37919,37920,37921,37922,37923,37924,37925,37926,37927,37928,37929,37930,37931,37932,37933,37934,37935,37936,37937,37938,37939,37940,37941,37942,37943,37944,37945,37946,37947,37948,37949,37950,37951,37952,37953,37954,37955,37956,37957,37958,37959,37960,37961,37962,37963,37964,37965,37966,37967,37968,37969,37970,37971,37972,37973,37974,37975,37976,37977,37978,37979,37980,37981,37982,37983,37984,37985,37986,37987,37988,37989,37990,37991,37992,37993,37994,37995,37996,37997,37998,37999,38000,38001,38002,38003,38004,38005,38006,38007,38008,38009,38010,38011,38012,38013,38014,38015,38016,38017,38018,38019,38020,38021,38022,38023,38024,38025,38026,38027,38028,38029,38030,38031,38032,38033,38034,38035,38036,38037,38038,38039,38040,38041,38042,38043,38044,38045,38046,38047,38048,38049,38050,38051,38052,38053,38054,38055,38056,38057,38058,38059,38060,38061,38062,38063,38064,38065,38066,38067,38068,38069,38070,38071,38072,38073,38074,38075,38076,38077,38078,38079,38080,38081,38082,38083,38084,38085,38086,38087,38088,38089,38090,38091,38092,38093,38094,38095,38096,38097,38098,38099,38100,38101,38102,38103,38104,38105,38106,38107,38108,38109,38110,38111,38112,38113,38114,38115,38116,38117,38118,38119,38120,38121,38122,38123,38124,38125,38126,38127,38128,38129,38130,38131,38132,38133,38134,38135,38136,38137,38138,38139,38140,38141,38142,38143,38144,38145,38146,38147,38148,38149,38150,38151,38152,38153,38154,38155,38156,38157,38158,38159,38160,38161,38162,38163,38164,38165,38166,38167,38168,38169,38170,38171,38172,38173,38174,38175,38176,38177,38178,38179,38180,38181,38182,38183,38184,38185,38186,38187,38188,38189,38190,38191,38192,38193,38194,38195,38196,38197,38198,38199,38200,38201,38202,38203,38204,38205,38206,38207,38208,38209,38210,38211,38212,38213,38214,38215,38216,38217,38218,38219,38220,38221,38222,38223,38224,38225,38226,38227,38228,38229,38230,38231,38232,38233,38234,38235,38236,38237,38238,38239,38240,38241,38242,38243,38244,38245,38246,38247,38248,38249,38250,38251,38252,38253,38254,38255,38256,38257,38258,38259,38260,38261,38262,38263,38264,38265,38266,38267,38268,38269,38270,38271,38272,38273,38274,38275,38276,38277,38278,38279,38280,38281,38282,38283,38284,38285,38286,38287,38288,38289,38290,38291,38292,38293,38294,38295,38296,38297,38298,38299,38300,38301,38302,38303,38304,38305,38306,38307,38308,38309,38310,38311,38312,38313,38314,38315,38316,38317,38318,38319,38320,38321,38322,38323,38324,38325,38326,38327,38328,38329,38330,38331,38332,38333,38334,38335,38336,38337,38338,38339,38340,38341,38342,38343,38344,38345,38346,38347,38348,38349,38350,38351,38352,38353,38354,38355,38356,38357,38358,38359,38360,38361,38362,38363,38364,38365,38366,38367,38368,38369,38370,38371,38372,38373,38374,38375,38376,38377,38378,38379,38380,38381,38382,38383,38384,38385,38386,38387,38388,38389,38390,38391,38392,38393,38394,38395,38396,38397,38398,38399,38400,38401,38402,38403,38404,38405,38406,38407,38408,38409,38410,38411,38412,38413,38414,38415,38416,38417,38418,38419,38420,38421,38422,38423,38424,38425,38426,38427,38428,38429,38430,38431,38432,38433,38434,38435,38436,38437,38438,38439,38440,38441,38442,38443,38444,38445,38446,38447,38448,38449,38450,38451,38452,38453,38454,38455,38456,38457,38458,38459,38460,38461,38462,38463,38464,38465,38466,38467,38468,38469,38470,38471,38472,38473,38474,38475,38476,38477,38478,38479,38480,38481,38482,38483,38484,38485,38486,38487,38488,38489,38490,38491,38492,38493,38494,38495,38496,38497,38498,38499,38500,38501,38502,38503,38504,38505,38506,38507,38508,38509,38510,38511,38512,38513,38514,38515,38516,38517,38518,38519,38520,38521,38522,38523,38524,38525,38526,38527,38528,38529,38530,38531,38532,38533,38534,38535,38536,38537,38538,38539,38540,38541,38542,38543,38544,38545,38546,38547,38548,38549,38550,38551,38552,38553,38554,38555,38556,38557,38558,38559,38560,38561,38562,38563,38564,38565,38566,38567,38568,38569,38570,38571,38572,38573,38574,38575,38576,38577,38578,38579,38580,38581,38582,38583,38584,38585,38586,38587,38588,38589,38590,38591,38592,38593,38594,38595,38596,38597,38598,38599,38600,38601,38602,38603,38604,38605,38606,38607,38608,38609,38610,38611,38612,38613,38614,38615,38616,38617,38618,38619,38620,38621,38622,38623,38624,38625,38626,38627,38628,38629,38630,38631,38632,38633,38634,38635,38636,38637,38638,38639,38640,38641,38642,38643,38644,38645,38646,38647,38648,38649,38650,38651,38652,38653,38654,38655,38656,38657,38658,38659,38660,38661,38662,38663,38664,38665,38666,38667,38668,38669,38670,38671,38672,38673,38674,38675,38676,38677,38678,38679,38680,38681,38682,38683,38684,38685,38686,38687,38688,38689,38690,38691,38692,38693,38694,38695,38696,38697,38698,38699,38700,38701,38702,38703,38704,38705,38706,38707,38708,38709,38710,38711,38712,38713,38714,38715,38716,38717,38718,38719,38720,38721,38722,38723,38724,38725,38726,38727,38728,38729,38730,38731,38732,38733,38734,38735,38736,38737,38738,38739,38740,38741,38742,38743,38744,38745,38746,38747,38748,38749,38750,38751,38752,38753,38754,38755,38756,38757,38758,38759,38760,38761,38762,38763,38764,38765,38766,38767,38768,38769,38770,38771,38772,38773,38774,38775,38776,38777,38778,38779,38780,38781,38782,38783,38784,38785,38786,38787,38788,38789,38790,38791,38792,38793,38794,38795,38796,38797,38798,38799,38800,38801,38802,38803,38804,38805,38806,38807,38808,38809,38810,38811,38812,38813,38814,38815,38816,38817,38818,38819,38820,38821,38822,38823,38824,38825,38826,38827,38828,38829,38830,38831,38832,38833,38834,38835,38836,38837,38838,38839,38840,38841,38842,38843,38844,38845,38846,38847,38848,38849,38850,38851,38852,38853,38854,38855,38856,38857,38858,38859,38860,38861,38862,38863,38864,38865,38866,38867,38868,38869,38870,38871,38872,38873,38874,38875,38876,38877,38878,38879,38880,38881,38882,38883,38884,38885,38886,38887,38888,38889,38890,38891,38892,38893,38894,38895,38896,38897,38898,38899,38900,38901,38902,38903,38904,38905,38906,38907,38908,38909,38910,38911,38912,38913,38914,38915,38916,38917,38918,38919,38920,38921,38922,38923,38924,38925,38926,38927,38928,38929,38930,38931,38932,38933,38934,38935,38936,38937,38938,38939,38940,38941,38942,38943,38944,38945,38946,38947,38948,38949,38950,38951,38952,38953,38954,38955,38956,38957,38958,38959,38960,38961,38962,38963,38964,38965,38966,38967,38968,38969,38970,38971,38972,38973,38974,38975,38976,38977,38978,38979,38980,38981,38982,38983,38984,38985,38986,38987,38988,38989,38990,38991,38992,38993,38994,38995,38996,38997,38998,38999,39000,39001,39002,39003,39004,39005,39006,39007,39008,39009,39010,39011,39012,39013,39014,39015,39016,39017,39018,39019,39020,39021,39022,39023,39024,39025,39026,39027,39028,39029,39030,39031,39032,39033,39034,39035,39036,39037,39038,39039,39040,39041,39042,39043,39044,39045,39046,39047,39048,39049,39050,39051,39052,39053,39054,39055,39056,39057,39058,39059,39060,39061,39062,39063,39064,39065,39066,39067,39068,39069,39070,39071,39072,39073,39074,39075,39076,39077,39078,39079,39080,39081,39082,39083,39084,39085,39086,39087,39088,39089,39090,39091,39092,39093,39094,39095,39096,39097,39098,39099,39100,39101,39102,39103,39104,39105,39106,39107,39108,39109,39110,39111,39112,39113,39114,39115,39116,39117,39118,39119,39120,39121,39122,39123,39124,39125,39126,39127,39128,39129,39130,39131,39132,39133,39134,39135,39136,39137,39138,39139,39140,39141,39142,39143,39144,39145,39146,39147,39148,39149,39150,39151,39152,39153,39154,39155,39156,39157,39158,39159,39160,39161,39162,39163,39164,39165,39166,39167,39168,39169,39170,39171,39172,39173,39174,39175,39176,39177,39178,39179,39180,39181,39182,39183,39184,39185,39186,39187,39188,39189,39190,39191,39192,39193,39194,39195,39196,39197,39198,39199,39200,39201,39202,39203,39204,39205,39206,39207,39208,39209,39210,39211,39212,39213,39214,39215,39216,39217,39218,39219,39220,39221,39222,39223,39224,39225,39226,39227,39228,39229,39230,39231,39232,39233,39234,39235,39236,39237,39238,39239,39240,39241,39242,39243,39244,39245,39246,39247,39248,39249,39250,39251,39252,39253,39254,39255,39256,39257,39258,39259,39260,39261,39262,39263,39264,39265,39266,39267,39268,39269,39270,39271,39272,39273,39274,39275,39276,39277,39278,39279,39280,39281,39282,39283,39284,39285,39286,39287,39288,39289,39290,39291,39292,39293,39294,39295,39296,39297,39298,39299,39300,39301,39302,39303,39304,39305,39306,39307,39308,39309,39310,39311,39312,39313,39314,39315,39316,39317,39318,39319,39320,39321,39322,39323,39324,39325,39326,39327,39328,39329,39330,39331,39332,39333,39334,39335,39336,39337,39338,39339,39340,39341,39342,39343,39344,39345,39346,39347,39348,39349,39350,39351,39352,39353,39354,39355,39356,39357,39358,39359,39360,39361,39362,39363,39364,39365,39366,39367,39368,39369,39370,39371,39372,39373,39374,39375,39376,39377,39378,39379,39380,39381,39382,39383,39384,39385,39386,39387,39388,39389,39390,39391,39392,39393,39394,39395,39396,39397,39398,39399,39400,39401,39402,39403,39404,39405,39406,39407,39408,39409,39410,39411,39412,39413,39414,39415,39416,39417,39418,39419,39420,39421,39422,39423,39424,39425,39426,39427,39428,39429,39430,39431,39432,39433,39434,39435,39436,39437,39438,39439,39440,39441,39442,39443,39444,39445,39446,39447,39448,39449,39450,39451,39452,39453,39454,39455,39456,39457,39458,39459,39460,39461,39462,39463,39464,39465,39466,39467,39468,39469,39470,39471,39472,39473,39474,39475,39476,39477,39478,39479,39480,39481,39482,39483,39484,39485,39486,39487,39488,39489,39490,39491,39492,39493,39494,39495,39496,39497,39498,39499,39500,39501,39502,39503,39504,39505,39506,39507,39508,39509,39510,39511,39512,39513,39514,39515,39516,39517,39518,39519,39520,39521,39522,39523,39524,39525,39526,39527,39528,39529,39530,39531,39532,39533,39534,39535,39536,39537,39538,39539,39540,39541,39542,39543,39544,39545,39546,39547,39548,39549,39550,39551,39552,39553,39554,39555,39556,39557,39558,39559,39560,39561,39562,39563,39564,39565,39566,39567,39568,39569,39570,39571,39572,39573,39574,39575,39576,39577,39578,39579,39580,39581,39582,39583,39584,39585,39586,39587,39588,39589,39590,39591,39592,39593,39594,39595,39596,39597,39598,39599,39600,39601,39602,39603,39604,39605,39606,39607,39608,39609,39610,39611,39612,39613,39614,39615,39616,39617,39618,39619,39620,39621,39622,39623,39624,39625,39626,39627,39628,39629,39630,39631,39632,39633,39634,39635,39636,39637,39638,39639,39640,39641,39642,39643,39644,39645,39646,39647,39648,39649,39650,39651,39652,39653,39654,39655,39656,39657,39658,39659,39660,39661,39662,39663,39664,39665,39666,39667,39668,39669,39670,39671,39672,39673,39674,39675,39676,39677,39678,39679,39680,39681,39682,39683,39684,39685,39686,39687,39688,39689,39690,39691,39692,39693,39694,39695,39696,39697,39698,39699,39700,39701,39702,39703,39704,39705,39706,39707,39708,39709,39710,39711,39712,39713,39714,39715,39716,39717,39718,39719,39720,39721,39722,39723,39724,39725,39726,39727,39728,39729,39730,39731,39732,39733,39734,39735,39736,39737,39738,39739,39740,39741,39742,39743,39744,39745,39746,39747,39748,39749,39750,39751,39752,39753,39754,39755,39756,39757,39758,39759,39760,39761,39762,39763,39764,39765,39766,39767,39768,39769,39770,39771,39772,39773,39774,39775,39776,39777,39778,39779,39780,39781,39782,39783,39784,39785,39786,39787,39788,39789,39790,39791,39792,39793,39794,39795,39796,39797,39798,39799,39800,39801,39802,39803,39804,39805,39806,39807,39808,39809,39810,39811,39812,39813,39814,39815,39816,39817,39818,39819,39820,39821,39822,39823,39824,39825,39826,39827,39828,39829,39830,39831,39832,39833,39834,39835,39836,39837,39838,39839,39840,39841,39842,39843,39844,39845,39846,39847,39848,39849,39850,39851,39852,39853,39854,39855,39856,39857,39858,39859,39860,39861,39862,39863,39864,39865,39866,39867,39868,39869,39870,39871,39872,39873,39874,39875,39876,39877,39878,39879,39880,39881,39882,39883,39884,39885,39886,39887,39888,39889,39890,39891,39892,39893,39894,39895,39896,39897,39898,39899,39900,39901,39902,39903,39904,39905,39906,39907,39908,39909,39910,39911,39912,39913,39914,39915,39916,39917,39918,39919,39920,39921,39922,39923,39924,39925,39926,39927,39928,39929,39930,39931,39932,39933,39934,39935,39936,39937,39938,39939,39940,39941,39942,39943,39944,39945,39946,39947,39948,39949,39950,39951,39952,39953,39954,39955,39956,39957,39958,39959,39960,39961,39962,39963,39964,39965,39966,39967,39968,39969,39970,39971,39972,39973,39974,39975,39976,39977,39978,39979,39980,39981,39982,39983,39984,39985,39986,39987,39988,39989,39990,39991,39992,39993,39994,39995,39996,39997,39998,39999,40000,40001,40002,40003,40004,40005,40006,40007,40008,40009,40010,40011,40012,40013,40014,40015,40016,40017,40018,40019,40020,40021,40022,40023,40024,40025,40026,40027,40028,40029,40030,40031,40032,40033,40034,40035,40036,40037,40038,40039,40040,40041,40042,40043,40044,40045,40046,40047,40048,40049,40050,40051,40052,40053,40054,40055,40056,40057,40058,40059,40060,40061,40062,40063,40064,40065,40066,40067,40068,40069,40070,40071,40072,40073,40074,40075,40076,40077,40078,40079,40080,40081,40082,40083,40084,40085,40086,40087,40088,40089,40090,40091,40092,40093,40094,40095,40096,40097,40098,40099,40100,40101,40102,40103,40104,40105,40106,40107,40108,40109,40110,40111,40112,40113,40114,40115,40116,40117,40118,40119,40120,40121,40122,40123,40124,40125,40126,40127,40128,40129,40130,40131,40132,40133,40134,40135,40136,40137,40138,40139,40140,40141,40142,40143,40144,40145,40146,40147,40148,40149,40150,40151,40152,40153,40154,40155,40156,40157,40158,40159,40160,40161,40162,40163,40164,40165,40166,40167,40168,40169,40170,40171,40172,40173,40174,40175,40176,40177,40178,40179,40180,40181,40182,40183,40184,40185,40186,40187,40188,40189,40190,40191,40192,40193,40194,40195,40196,40197,40198,40199,40200,40201,40202,40203,40204,40205,40206,40207,40208,40209,40210,40211,40212,40213,40214,40215,40216,40217,40218,40219,40220,40221,40222,40223,40224,40225,40226,40227,40228,40229,40230,40231,40232,40233,40234,40235,40236,40237,40238,40239,40240,40241,40242,40243,40244,40245,40246,40247,40248,40249,40250,40251,40252,40253,40254,40255,40256,40257,40258,40259,40260,40261,40262,40263,40264,40265,40266,40267,40268,40269,40270,40271,40272,40273,40274,40275,40276,40277,40278,40279,40280,40281,40282,40283,40284,40285,40286,40287,40288,40289,40290,40291,40292,40293,40294,40295,40296,40297,40298,40299,40300,40301,40302,40303,40304,40305,40306,40307,40308,40309,40310,40311,40312,40313,40314,40315,40316,40317,40318,40319,40320,40321,40322,40323,40324,40325,40326,40327,40328,40329,40330,40331,40332,40333,40334,40335,40336,40337,40338,40339,40340,40341,40342,40343,40344,40345,40346,40347,40348,40349,40350,40351,40352,40353,40354,40355,40356,40357,40358,40359,40360,40361,40362,40363,40364,40365,40366,40367,40368,40369,40370,40371,40372,40373,40374,40375,40376,40377,40378,40379,40380,40381,40382,40383,40384,40385,40386,40387,40388,40389,40390,40391,40392,40393,40394,40395,40396,40397,40398,40399,40400,40401,40402,40403,40404,40405,40406,40407,40408,40409,40410,40411,40412,40413,40414,40415,40416,40417,40418,40419,40420,40421,40422,40423,40424,40425,40426,40427,40428,40429,40430,40431,40432,40433,40434,40435,40436,40437,40438,40439,40440,40441,40442,40443,40444,40445,40446,40447,40448,40449,40450,40451,40452,40453,40454,40455,40456,40457,40458,40459,40460,40461,40462,40463,40464,40465,40466,40467,40468,40469,40470,40471,40472,40473,40474,40475,40476,40477,40478,40479,40480,40481,40482,40483,40484,40485,40486,40487,40488,40489,40490,40491,40492,40493,40494,40495,40496,40497,40498,40499,40500,40501,40502,40503,40504,40505,40506,40507,40508,40509,40510,40511,40512,40513,40514,40515,40516,40517,40518,40519,40520,40521,40522,40523,40524,40525,40526,40527,40528,40529,40530,40531,40532,40533,40534,40535,40536,40537,40538,40539,40540,40541,40542,40543,40544,40545,40546,40547,40548,40549,40550,40551,40552,40553,40554,40555,40556,40557,40558,40559,40560,40561,40562,40563,40564,40565,40566,40567,40568,40569,40570,40571,40572,40573,40574,40575,40576,40577,40578,40579,40580,40581,40582,40583,40584,40585,40586,40587,40588,40589,40590,40591,40592,40593,40594,40595,40596,40597,40598,40599,40600,40601,40602,40603,40604,40605,40606,40607,40608,40609,40610,40611,40612,40613,40614,40615,40616,40617,40618,40619,40620,40621,40622,40623,40624,40625,40626,40627,40628,40629,40630,40631,40632,40633,40634,40635,40636,40637,40638,40639,40640,40641,40642,40643,40644,40645,40646,40647,40648,40649,40650,40651,40652,40653,40654,40655,40656,40657,40658,40659,40660,40661,40662,40663,40664,40665,40666,40667,40668,40669,40670,40671,40672,40673,40674,40675,40676,40677,40678,40679,40680,40681,40682,40683,40684,40685,40686,40687,40688,40689,40690,40691,40692,40693,40694,40695,40696,40697,40698,40699,40700,40701,40702,40703,40704,40705,40706,40707,40708,40709,40710,40711,40712,40713,40714,40715,40716,40717,40718,40719,40720,40721,40722,40723,40724,40725,40726,40727,40728,40729,40730,40731,40732,40733,40734,40735,40736,40737,40738,40739,40740,40741,40742,40743,40744,40745,40746,40747,40748,40749,40750,40751,40752,40753,40754,40755,40756,40757,40758,40759,40760,40761,40762,40763,40764,40765,40766,40767,40768,40769,40770,40771,40772,40773,40774,40775,40776,40777,40778,40779,40780,40781,40782,40783,40784,40785,40786,40787,40788,40789,40790,40791,40792,40793,40794,40795,40796,40797,40798,40799,40800,40801,40802,40803,40804,40805,40806,40807,40808,40809,40810,40811,40812,40813,40814,40815,40816,40817,40818,40819,40820,40821,40822,40823,40824,40825,40826,40827,40828,40829,40830,40831,40832,40833,40834,40835,40836,40837,40838,40839,40840,40841,40842,40843,40844,40845,40846,40847,40848,40849,40850,40851,40852,40853,40854,40855,40856,40857,40858,40859,40860,40861,40862,40863,40864,40865,40866,40867,40868,40869,40870,40871,40872,40873,40874,40875,40876,40877,40878,40879,40880,40881,40882,40883,40884,40885,40886,40887,40888,40889,40890,40891,40892,40893,40894,40895,40896,40897,40898,40899,40900,40901,40902,40903,40904,40905,40906,40907,40908,40960,40961,40962,40963,40964,40965,40966,40967,40968,40969,40970,40971,40972,40973,40974,40975,40976,40977,40978,40979,40980,40981,40982,40983,40984,40985,40986,40987,40988,40989,40990,40991,40992,40993,40994,40995,40996,40997,40998,40999,41000,41001,41002,41003,41004,41005,41006,41007,41008,41009,41010,41011,41012,41013,41014,41015,41016,41017,41018,41019,41020,41021,41022,41023,41024,41025,41026,41027,41028,41029,41030,41031,41032,41033,41034,41035,41036,41037,41038,41039,41040,41041,41042,41043,41044,41045,41046,41047,41048,41049,41050,41051,41052,41053,41054,41055,41056,41057,41058,41059,41060,41061,41062,41063,41064,41065,41066,41067,41068,41069,41070,41071,41072,41073,41074,41075,41076,41077,41078,41079,41080,41081,41082,41083,41084,41085,41086,41087,41088,41089,41090,41091,41092,41093,41094,41095,41096,41097,41098,41099,41100,41101,41102,41103,41104,41105,41106,41107,41108,41109,41110,41111,41112,41113,41114,41115,41116,41117,41118,41119,41120,41121,41122,41123,41124,41125,41126,41127,41128,41129,41130,41131,41132,41133,41134,41135,41136,41137,41138,41139,41140,41141,41142,41143,41144,41145,41146,41147,41148,41149,41150,41151,41152,41153,41154,41155,41156,41157,41158,41159,41160,41161,41162,41163,41164,41165,41166,41167,41168,41169,41170,41171,41172,41173,41174,41175,41176,41177,41178,41179,41180,41181,41182,41183,41184,41185,41186,41187,41188,41189,41190,41191,41192,41193,41194,41195,41196,41197,41198,41199,41200,41201,41202,41203,41204,41205,41206,41207,41208,41209,41210,41211,41212,41213,41214,41215,41216,41217,41218,41219,41220,41221,41222,41223,41224,41225,41226,41227,41228,41229,41230,41231,41232,41233,41234,41235,41236,41237,41238,41239,41240,41241,41242,41243,41244,41245,41246,41247,41248,41249,41250,41251,41252,41253,41254,41255,41256,41257,41258,41259,41260,41261,41262,41263,41264,41265,41266,41267,41268,41269,41270,41271,41272,41273,41274,41275,41276,41277,41278,41279,41280,41281,41282,41283,41284,41285,41286,41287,41288,41289,41290,41291,41292,41293,41294,41295,41296,41297,41298,41299,41300,41301,41302,41303,41304,41305,41306,41307,41308,41309,41310,41311,41312,41313,41314,41315,41316,41317,41318,41319,41320,41321,41322,41323,41324,41325,41326,41327,41328,41329,41330,41331,41332,41333,41334,41335,41336,41337,41338,41339,41340,41341,41342,41343,41344,41345,41346,41347,41348,41349,41350,41351,41352,41353,41354,41355,41356,41357,41358,41359,41360,41361,41362,41363,41364,41365,41366,41367,41368,41369,41370,41371,41372,41373,41374,41375,41376,41377,41378,41379,41380,41381,41382,41383,41384,41385,41386,41387,41388,41389,41390,41391,41392,41393,41394,41395,41396,41397,41398,41399,41400,41401,41402,41403,41404,41405,41406,41407,41408,41409,41410,41411,41412,41413,41414,41415,41416,41417,41418,41419,41420,41421,41422,41423,41424,41425,41426,41427,41428,41429,41430,41431,41432,41433,41434,41435,41436,41437,41438,41439,41440,41441,41442,41443,41444,41445,41446,41447,41448,41449,41450,41451,41452,41453,41454,41455,41456,41457,41458,41459,41460,41461,41462,41463,41464,41465,41466,41467,41468,41469,41470,41471,41472,41473,41474,41475,41476,41477,41478,41479,41480,41481,41482,41483,41484,41485,41486,41487,41488,41489,41490,41491,41492,41493,41494,41495,41496,41497,41498,41499,41500,41501,41502,41503,41504,41505,41506,41507,41508,41509,41510,41511,41512,41513,41514,41515,41516,41517,41518,41519,41520,41521,41522,41523,41524,41525,41526,41527,41528,41529,41530,41531,41532,41533,41534,41535,41536,41537,41538,41539,41540,41541,41542,41543,41544,41545,41546,41547,41548,41549,41550,41551,41552,41553,41554,41555,41556,41557,41558,41559,41560,41561,41562,41563,41564,41565,41566,41567,41568,41569,41570,41571,41572,41573,41574,41575,41576,41577,41578,41579,41580,41581,41582,41583,41584,41585,41586,41587,41588,41589,41590,41591,41592,41593,41594,41595,41596,41597,41598,41599,41600,41601,41602,41603,41604,41605,41606,41607,41608,41609,41610,41611,41612,41613,41614,41615,41616,41617,41618,41619,41620,41621,41622,41623,41624,41625,41626,41627,41628,41629,41630,41631,41632,41633,41634,41635,41636,41637,41638,41639,41640,41641,41642,41643,41644,41645,41646,41647,41648,41649,41650,41651,41652,41653,41654,41655,41656,41657,41658,41659,41660,41661,41662,41663,41664,41665,41666,41667,41668,41669,41670,41671,41672,41673,41674,41675,41676,41677,41678,41679,41680,41681,41682,41683,41684,41685,41686,41687,41688,41689,41690,41691,41692,41693,41694,41695,41696,41697,41698,41699,41700,41701,41702,41703,41704,41705,41706,41707,41708,41709,41710,41711,41712,41713,41714,41715,41716,41717,41718,41719,41720,41721,41722,41723,41724,41725,41726,41727,41728,41729,41730,41731,41732,41733,41734,41735,41736,41737,41738,41739,41740,41741,41742,41743,41744,41745,41746,41747,41748,41749,41750,41751,41752,41753,41754,41755,41756,41757,41758,41759,41760,41761,41762,41763,41764,41765,41766,41767,41768,41769,41770,41771,41772,41773,41774,41775,41776,41777,41778,41779,41780,41781,41782,41783,41784,41785,41786,41787,41788,41789,41790,41791,41792,41793,41794,41795,41796,41797,41798,41799,41800,41801,41802,41803,41804,41805,41806,41807,41808,41809,41810,41811,41812,41813,41814,41815,41816,41817,41818,41819,41820,41821,41822,41823,41824,41825,41826,41827,41828,41829,41830,41831,41832,41833,41834,41835,41836,41837,41838,41839,41840,41841,41842,41843,41844,41845,41846,41847,41848,41849,41850,41851,41852,41853,41854,41855,41856,41857,41858,41859,41860,41861,41862,41863,41864,41865,41866,41867,41868,41869,41870,41871,41872,41873,41874,41875,41876,41877,41878,41879,41880,41881,41882,41883,41884,41885,41886,41887,41888,41889,41890,41891,41892,41893,41894,41895,41896,41897,41898,41899,41900,41901,41902,41903,41904,41905,41906,41907,41908,41909,41910,41911,41912,41913,41914,41915,41916,41917,41918,41919,41920,41921,41922,41923,41924,41925,41926,41927,41928,41929,41930,41931,41932,41933,41934,41935,41936,41937,41938,41939,41940,41941,41942,41943,41944,41945,41946,41947,41948,41949,41950,41951,41952,41953,41954,41955,41956,41957,41958,41959,41960,41961,41962,41963,41964,41965,41966,41967,41968,41969,41970,41971,41972,41973,41974,41975,41976,41977,41978,41979,41980,41981,41982,41983,41984,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,41997,41998,41999,42000,42001,42002,42003,42004,42005,42006,42007,42008,42009,42010,42011,42012,42013,42014,42015,42016,42017,42018,42019,42020,42021,42022,42023,42024,42025,42026,42027,42028,42029,42030,42031,42032,42033,42034,42035,42036,42037,42038,42039,42040,42041,42042,42043,42044,42045,42046,42047,42048,42049,42050,42051,42052,42053,42054,42055,42056,42057,42058,42059,42060,42061,42062,42063,42064,42065,42066,42067,42068,42069,42070,42071,42072,42073,42074,42075,42076,42077,42078,42079,42080,42081,42082,42083,42084,42085,42086,42087,42088,42089,42090,42091,42092,42093,42094,42095,42096,42097,42098,42099,42100,42101,42102,42103,42104,42105,42106,42107,42108,42109,42110,42111,42112,42113,42114,42115,42116,42117,42118,42119,42120,42121,42122,42123,42124,42192,42193,42194,42195,42196,42197,42198,42199,42200,42201,42202,42203,42204,42205,42206,42207,42208,42209,42210,42211,42212,42213,42214,42215,42216,42217,42218,42219,42220,42221,42222,42223,42224,42225,42226,42227,42228,42229,42230,42231,42232,42233,42234,42235,42236,42237,42240,42241,42242,42243,42244,42245,42246,42247,42248,42249,42250,42251,42252,42253,42254,42255,42256,42257,42258,42259,42260,42261,42262,42263,42264,42265,42266,42267,42268,42269,42270,42271,42272,42273,42274,42275,42276,42277,42278,42279,42280,42281,42282,42283,42284,42285,42286,42287,42288,42289,42290,42291,42292,42293,42294,42295,42296,42297,42298,42299,42300,42301,42302,42303,42304,42305,42306,42307,42308,42309,42310,42311,42312,42313,42314,42315,42316,42317,42318,42319,42320,42321,42322,42323,42324,42325,42326,42327,42328,42329,42330,42331,42332,42333,42334,42335,42336,42337,42338,42339,42340,42341,42342,42343,42344,42345,42346,42347,42348,42349,42350,42351,42352,42353,42354,42355,42356,42357,42358,42359,42360,42361,42362,42363,42364,42365,42366,42367,42368,42369,42370,42371,42372,42373,42374,42375,42376,42377,42378,42379,42380,42381,42382,42383,42384,42385,42386,42387,42388,42389,42390,42391,42392,42393,42394,42395,42396,42397,42398,42399,42400,42401,42402,42403,42404,42405,42406,42407,42408,42409,42410,42411,42412,42413,42414,42415,42416,42417,42418,42419,42420,42421,42422,42423,42424,42425,42426,42427,42428,42429,42430,42431,42432,42433,42434,42435,42436,42437,42438,42439,42440,42441,42442,42443,42444,42445,42446,42447,42448,42449,42450,42451,42452,42453,42454,42455,42456,42457,42458,42459,42460,42461,42462,42463,42464,42465,42466,42467,42468,42469,42470,42471,42472,42473,42474,42475,42476,42477,42478,42479,42480,42481,42482,42483,42484,42485,42486,42487,42488,42489,42490,42491,42492,42493,42494,42495,42496,42497,42498,42499,42500,42501,42502,42503,42504,42505,42506,42507,42508,42512,42513,42514,42515,42516,42517,42518,42519,42520,42521,42522,42523,42524,42525,42526,42527,42538,42539,42560,42561,42562,42563,42564,42565,42566,42567,42568,42569,42570,42571,42572,42573,42574,42575,42576,42577,42578,42579,42580,42581,42582,42583,42584,42585,42586,42587,42588,42589,42590,42591,42592,42593,42594,42595,42596,42597,42598,42599,42600,42601,42602,42603,42604,42605,42606,42623,42624,42625,42626,42627,42628,42629,42630,42631,42632,42633,42634,42635,42636,42637,42638,42639,42640,42641,42642,42643,42644,42645,42646,42647,42656,42657,42658,42659,42660,42661,42662,42663,42664,42665,42666,42667,42668,42669,42670,42671,42672,42673,42674,42675,42676,42677,42678,42679,42680,42681,42682,42683,42684,42685,42686,42687,42688,42689,42690,42691,42692,42693,42694,42695,42696,42697,42698,42699,42700,42701,42702,42703,42704,42705,42706,42707,42708,42709,42710,42711,42712,42713,42714,42715,42716,42717,42718,42719,42720,42721,42722,42723,42724,42725,42726,42727,42728,42729,42730,42731,42732,42733,42734,42735,42775,42776,42777,42778,42779,42780,42781,42782,42783,42786,42787,42788,42789,42790,42791,42792,42793,42794,42795,42796,42797,42798,42799,42800,42801,42802,42803,42804,42805,42806,42807,42808,42809,42810,42811,42812,42813,42814,42815,42816,42817,42818,42819,42820,42821,42822,42823,42824,42825,42826,42827,42828,42829,42830,42831,42832,42833,42834,42835,42836,42837,42838,42839,42840,42841,42842,42843,42844,42845,42846,42847,42848,42849,42850,42851,42852,42853,42854,42855,42856,42857,42858,42859,42860,42861,42862,42863,42864,42865,42866,42867,42868,42869,42870,42871,42872,42873,42874,42875,42876,42877,42878,42879,42880,42881,42882,42883,42884,42885,42886,42887,42888,42891,42892,42893,42894,42896,42897,42898,42899,42912,42913,42914,42915,42916,42917,42918,42919,42920,42921,42922,43000,43001,43002,43003,43004,43005,43006,43007,43008,43009,43011,43012,43013,43015,43016,43017,43018,43020,43021,43022,43023,43024,43025,43026,43027,43028,43029,43030,43031,43032,43033,43034,43035,43036,43037,43038,43039,43040,43041,43042,43072,43073,43074,43075,43076,43077,43078,43079,43080,43081,43082,43083,43084,43085,43086,43087,43088,43089,43090,43091,43092,43093,43094,43095,43096,43097,43098,43099,43100,43101,43102,43103,43104,43105,43106,43107,43108,43109,43110,43111,43112,43113,43114,43115,43116,43117,43118,43119,43120,43121,43122,43123,43138,43139,43140,43141,43142,43143,43144,43145,43146,43147,43148,43149,43150,43151,43152,43153,43154,43155,43156,43157,43158,43159,43160,43161,43162,43163,43164,43165,43166,43167,43168,43169,43170,43171,43172,43173,43174,43175,43176,43177,43178,43179,43180,43181,43182,43183,43184,43185,43186,43187,43250,43251,43252,43253,43254,43255,43259,43274,43275,43276,43277,43278,43279,43280,43281,43282,43283,43284,43285,43286,43287,43288,43289,43290,43291,43292,43293,43294,43295,43296,43297,43298,43299,43300,43301,43312,43313,43314,43315,43316,43317,43318,43319,43320,43321,43322,43323,43324,43325,43326,43327,43328,43329,43330,43331,43332,43333,43334,43360,43361,43362,43363,43364,43365,43366,43367,43368,43369,43370,43371,43372,43373,43374,43375,43376,43377,43378,43379,43380,43381,43382,43383,43384,43385,43386,43387,43388,43396,43397,43398,43399,43400,43401,43402,43403,43404,43405,43406,43407,43408,43409,43410,43411,43412,43413,43414,43415,43416,43417,43418,43419,43420,43421,43422,43423,43424,43425,43426,43427,43428,43429,43430,43431,43432,43433,43434,43435,43436,43437,43438,43439,43440,43441,43442,43471,43520,43521,43522,43523,43524,43525,43526,43527,43528,43529,43530,43531,43532,43533,43534,43535,43536,43537,43538,43539,43540,43541,43542,43543,43544,43545,43546,43547,43548,43549,43550,43551,43552,43553,43554,43555,43556,43557,43558,43559,43560,43584,43585,43586,43588,43589,43590,43591,43592,43593,43594,43595,43616,43617,43618,43619,43620,43621,43622,43623,43624,43625,43626,43627,43628,43629,43630,43631,43632,43633,43634,43635,43636,43637,43638,43642,43648,43649,43650,43651,43652,43653,43654,43655,43656,43657,43658,43659,43660,43661,43662,43663,43664,43665,43666,43667,43668,43669,43670,43671,43672,43673,43674,43675,43676,43677,43678,43679,43680,43681,43682,43683,43684,43685,43686,43687,43688,43689,43690,43691,43692,43693,43694,43695,43697,43701,43702,43705,43706,43707,43708,43709,43712,43714,43739,43740,43741,43744,43745,43746,43747,43748,43749,43750,43751,43752,43753,43754,43762,43763,43764,43777,43778,43779,43780,43781,43782,43785,43786,43787,43788,43789,43790,43793,43794,43795,43796,43797,43798,43808,43809,43810,43811,43812,43813,43814,43816,43817,43818,43819,43820,43821,43822,43968,43969,43970,43971,43972,43973,43974,43975,43976,43977,43978,43979,43980,43981,43982,43983,43984,43985,43986,43987,43988,43989,43990,43991,43992,43993,43994,43995,43996,43997,43998,43999,44000,44001,44002,44032,44033,44034,44035,44036,44037,44038,44039,44040,44041,44042,44043,44044,44045,44046,44047,44048,44049,44050,44051,44052,44053,44054,44055,44056,44057,44058,44059,44060,44061,44062,44063,44064,44065,44066,44067,44068,44069,44070,44071,44072,44073,44074,44075,44076,44077,44078,44079,44080,44081,44082,44083,44084,44085,44086,44087,44088,44089,44090,44091,44092,44093,44094,44095,44096,44097,44098,44099,44100,44101,44102,44103,44104,44105,44106,44107,44108,44109,44110,44111,44112,44113,44114,44115,44116,44117,44118,44119,44120,44121,44122,44123,44124,44125,44126,44127,44128,44129,44130,44131,44132,44133,44134,44135,44136,44137,44138,44139,44140,44141,44142,44143,44144,44145,44146,44147,44148,44149,44150,44151,44152,44153,44154,44155,44156,44157,44158,44159,44160,44161,44162,44163,44164,44165,44166,44167,44168,44169,44170,44171,44172,44173,44174,44175,44176,44177,44178,44179,44180,44181,44182,44183,44184,44185,44186,44187,44188,44189,44190,44191,44192,44193,44194,44195,44196,44197,44198,44199,44200,44201,44202,44203,44204,44205,44206,44207,44208,44209,44210,44211,44212,44213,44214,44215,44216,44217,44218,44219,44220,44221,44222,44223,44224,44225,44226,44227,44228,44229,44230,44231,44232,44233,44234,44235,44236,44237,44238,44239,44240,44241,44242,44243,44244,44245,44246,44247,44248,44249,44250,44251,44252,44253,44254,44255,44256,44257,44258,44259,44260,44261,44262,44263,44264,44265,44266,44267,44268,44269,44270,44271,44272,44273,44274,44275,44276,44277,44278,44279,44280,44281,44282,44283,44284,44285,44286,44287,44288,44289,44290,44291,44292,44293,44294,44295,44296,44297,44298,44299,44300,44301,44302,44303,44304,44305,44306,44307,44308,44309,44310,44311,44312,44313,44314,44315,44316,44317,44318,44319,44320,44321,44322,44323,44324,44325,44326,44327,44328,44329,44330,44331,44332,44333,44334,44335,44336,44337,44338,44339,44340,44341,44342,44343,44344,44345,44346,44347,44348,44349,44350,44351,44352,44353,44354,44355,44356,44357,44358,44359,44360,44361,44362,44363,44364,44365,44366,44367,44368,44369,44370,44371,44372,44373,44374,44375,44376,44377,44378,44379,44380,44381,44382,44383,44384,44385,44386,44387,44388,44389,44390,44391,44392,44393,44394,44395,44396,44397,44398,44399,44400,44401,44402,44403,44404,44405,44406,44407,44408,44409,44410,44411,44412,44413,44414,44415,44416,44417,44418,44419,44420,44421,44422,44423,44424,44425,44426,44427,44428,44429,44430,44431,44432,44433,44434,44435,44436,44437,44438,44439,44440,44441,44442,44443,44444,44445,44446,44447,44448,44449,44450,44451,44452,44453,44454,44455,44456,44457,44458,44459,44460,44461,44462,44463,44464,44465,44466,44467,44468,44469,44470,44471,44472,44473,44474,44475,44476,44477,44478,44479,44480,44481,44482,44483,44484,44485,44486,44487,44488,44489,44490,44491,44492,44493,44494,44495,44496,44497,44498,44499,44500,44501,44502,44503,44504,44505,44506,44507,44508,44509,44510,44511,44512,44513,44514,44515,44516,44517,44518,44519,44520,44521,44522,44523,44524,44525,44526,44527,44528,44529,44530,44531,44532,44533,44534,44535,44536,44537,44538,44539,44540,44541,44542,44543,44544,44545,44546,44547,44548,44549,44550,44551,44552,44553,44554,44555,44556,44557,44558,44559,44560,44561,44562,44563,44564,44565,44566,44567,44568,44569,44570,44571,44572,44573,44574,44575,44576,44577,44578,44579,44580,44581,44582,44583,44584,44585,44586,44587,44588,44589,44590,44591,44592,44593,44594,44595,44596,44597,44598,44599,44600,44601,44602,44603,44604,44605,44606,44607,44608,44609,44610,44611,44612,44613,44614,44615,44616,44617,44618,44619,44620,44621,44622,44623,44624,44625,44626,44627,44628,44629,44630,44631,44632,44633,44634,44635,44636,44637,44638,44639,44640,44641,44642,44643,44644,44645,44646,44647,44648,44649,44650,44651,44652,44653,44654,44655,44656,44657,44658,44659,44660,44661,44662,44663,44664,44665,44666,44667,44668,44669,44670,44671,44672,44673,44674,44675,44676,44677,44678,44679,44680,44681,44682,44683,44684,44685,44686,44687,44688,44689,44690,44691,44692,44693,44694,44695,44696,44697,44698,44699,44700,44701,44702,44703,44704,44705,44706,44707,44708,44709,44710,44711,44712,44713,44714,44715,44716,44717,44718,44719,44720,44721,44722,44723,44724,44725,44726,44727,44728,44729,44730,44731,44732,44733,44734,44735,44736,44737,44738,44739,44740,44741,44742,44743,44744,44745,44746,44747,44748,44749,44750,44751,44752,44753,44754,44755,44756,44757,44758,44759,44760,44761,44762,44763,44764,44765,44766,44767,44768,44769,44770,44771,44772,44773,44774,44775,44776,44777,44778,44779,44780,44781,44782,44783,44784,44785,44786,44787,44788,44789,44790,44791,44792,44793,44794,44795,44796,44797,44798,44799,44800,44801,44802,44803,44804,44805,44806,44807,44808,44809,44810,44811,44812,44813,44814,44815,44816,44817,44818,44819,44820,44821,44822,44823,44824,44825,44826,44827,44828,44829,44830,44831,44832,44833,44834,44835,44836,44837,44838,44839,44840,44841,44842,44843,44844,44845,44846,44847,44848,44849,44850,44851,44852,44853,44854,44855,44856,44857,44858,44859,44860,44861,44862,44863,44864,44865,44866,44867,44868,44869,44870,44871,44872,44873,44874,44875,44876,44877,44878,44879,44880,44881,44882,44883,44884,44885,44886,44887,44888,44889,44890,44891,44892,44893,44894,44895,44896,44897,44898,44899,44900,44901,44902,44903,44904,44905,44906,44907,44908,44909,44910,44911,44912,44913,44914,44915,44916,44917,44918,44919,44920,44921,44922,44923,44924,44925,44926,44927,44928,44929,44930,44931,44932,44933,44934,44935,44936,44937,44938,44939,44940,44941,44942,44943,44944,44945,44946,44947,44948,44949,44950,44951,44952,44953,44954,44955,44956,44957,44958,44959,44960,44961,44962,44963,44964,44965,44966,44967,44968,44969,44970,44971,44972,44973,44974,44975,44976,44977,44978,44979,44980,44981,44982,44983,44984,44985,44986,44987,44988,44989,44990,44991,44992,44993,44994,44995,44996,44997,44998,44999,45000,45001,45002,45003,45004,45005,45006,45007,45008,45009,45010,45011,45012,45013,45014,45015,45016,45017,45018,45019,45020,45021,45022,45023,45024,45025,45026,45027,45028,45029,45030,45031,45032,45033,45034,45035,45036,45037,45038,45039,45040,45041,45042,45043,45044,45045,45046,45047,45048,45049,45050,45051,45052,45053,45054,45055,45056,45057,45058,45059,45060,45061,45062,45063,45064,45065,45066,45067,45068,45069,45070,45071,45072,45073,45074,45075,45076,45077,45078,45079,45080,45081,45082,45083,45084,45085,45086,45087,45088,45089,45090,45091,45092,45093,45094,45095,45096,45097,45098,45099,45100,45101,45102,45103,45104,45105,45106,45107,45108,45109,45110,45111,45112,45113,45114,45115,45116,45117,45118,45119,45120,45121,45122,45123,45124,45125,45126,45127,45128,45129,45130,45131,45132,45133,45134,45135,45136,45137,45138,45139,45140,45141,45142,45143,45144,45145,45146,45147,45148,45149,45150,45151,45152,45153,45154,45155,45156,45157,45158,45159,45160,45161,45162,45163,45164,45165,45166,45167,45168,45169,45170,45171,45172,45173,45174,45175,45176,45177,45178,45179,45180,45181,45182,45183,45184,45185,45186,45187,45188,45189,45190,45191,45192,45193,45194,45195,45196,45197,45198,45199,45200,45201,45202,45203,45204,45205,45206,45207,45208,45209,45210,45211,45212,45213,45214,45215,45216,45217,45218,45219,45220,45221,45222,45223,45224,45225,45226,45227,45228,45229,45230,45231,45232,45233,45234,45235,45236,45237,45238,45239,45240,45241,45242,45243,45244,45245,45246,45247,45248,45249,45250,45251,45252,45253,45254,45255,45256,45257,45258,45259,45260,45261,45262,45263,45264,45265,45266,45267,45268,45269,45270,45271,45272,45273,45274,45275,45276,45277,45278,45279,45280,45281,45282,45283,45284,45285,45286,45287,45288,45289,45290,45291,45292,45293,45294,45295,45296,45297,45298,45299,45300,45301,45302,45303,45304,45305,45306,45307,45308,45309,45310,45311,45312,45313,45314,45315,45316,45317,45318,45319,45320,45321,45322,45323,45324,45325,45326,45327,45328,45329,45330,45331,45332,45333,45334,45335,45336,45337,45338,45339,45340,45341,45342,45343,45344,45345,45346,45347,45348,45349,45350,45351,45352,45353,45354,45355,45356,45357,45358,45359,45360,45361,45362,45363,45364,45365,45366,45367,45368,45369,45370,45371,45372,45373,45374,45375,45376,45377,45378,45379,45380,45381,45382,45383,45384,45385,45386,45387,45388,45389,45390,45391,45392,45393,45394,45395,45396,45397,45398,45399,45400,45401,45402,45403,45404,45405,45406,45407,45408,45409,45410,45411,45412,45413,45414,45415,45416,45417,45418,45419,45420,45421,45422,45423,45424,45425,45426,45427,45428,45429,45430,45431,45432,45433,45434,45435,45436,45437,45438,45439,45440,45441,45442,45443,45444,45445,45446,45447,45448,45449,45450,45451,45452,45453,45454,45455,45456,45457,45458,45459,45460,45461,45462,45463,45464,45465,45466,45467,45468,45469,45470,45471,45472,45473,45474,45475,45476,45477,45478,45479,45480,45481,45482,45483,45484,45485,45486,45487,45488,45489,45490,45491,45492,45493,45494,45495,45496,45497,45498,45499,45500,45501,45502,45503,45504,45505,45506,45507,45508,45509,45510,45511,45512,45513,45514,45515,45516,45517,45518,45519,45520,45521,45522,45523,45524,45525,45526,45527,45528,45529,45530,45531,45532,45533,45534,45535,45536,45537,45538,45539,45540,45541,45542,45543,45544,45545,45546,45547,45548,45549,45550,45551,45552,45553,45554,45555,45556,45557,45558,45559,45560,45561,45562,45563,45564,45565,45566,45567,45568,45569,45570,45571,45572,45573,45574,45575,45576,45577,45578,45579,45580,45581,45582,45583,45584,45585,45586,45587,45588,45589,45590,45591,45592,45593,45594,45595,45596,45597,45598,45599,45600,45601,45602,45603,45604,45605,45606,45607,45608,45609,45610,45611,45612,45613,45614,45615,45616,45617,45618,45619,45620,45621,45622,45623,45624,45625,45626,45627,45628,45629,45630,45631,45632,45633,45634,45635,45636,45637,45638,45639,45640,45641,45642,45643,45644,45645,45646,45647,45648,45649,45650,45651,45652,45653,45654,45655,45656,45657,45658,45659,45660,45661,45662,45663,45664,45665,45666,45667,45668,45669,45670,45671,45672,45673,45674,45675,45676,45677,45678,45679,45680,45681,45682,45683,45684,45685,45686,45687,45688,45689,45690,45691,45692,45693,45694,45695,45696,45697,45698,45699,45700,45701,45702,45703,45704,45705,45706,45707,45708,45709,45710,45711,45712,45713,45714,45715,45716,45717,45718,45719,45720,45721,45722,45723,45724,45725,45726,45727,45728,45729,45730,45731,45732,45733,45734,45735,45736,45737,45738,45739,45740,45741,45742,45743,45744,45745,45746,45747,45748,45749,45750,45751,45752,45753,45754,45755,45756,45757,45758,45759,45760,45761,45762,45763,45764,45765,45766,45767,45768,45769,45770,45771,45772,45773,45774,45775,45776,45777,45778,45779,45780,45781,45782,45783,45784,45785,45786,45787,45788,45789,45790,45791,45792,45793,45794,45795,45796,45797,45798,45799,45800,45801,45802,45803,45804,45805,45806,45807,45808,45809,45810,45811,45812,45813,45814,45815,45816,45817,45818,45819,45820,45821,45822,45823,45824,45825,45826,45827,45828,45829,45830,45831,45832,45833,45834,45835,45836,45837,45838,45839,45840,45841,45842,45843,45844,45845,45846,45847,45848,45849,45850,45851,45852,45853,45854,45855,45856,45857,45858,45859,45860,45861,45862,45863,45864,45865,45866,45867,45868,45869,45870,45871,45872,45873,45874,45875,45876,45877,45878,45879,45880,45881,45882,45883,45884,45885,45886,45887,45888,45889,45890,45891,45892,45893,45894,45895,45896,45897,45898,45899,45900,45901,45902,45903,45904,45905,45906,45907,45908,45909,45910,45911,45912,45913,45914,45915,45916,45917,45918,45919,45920,45921,45922,45923,45924,45925,45926,45927,45928,45929,45930,45931,45932,45933,45934,45935,45936,45937,45938,45939,45940,45941,45942,45943,45944,45945,45946,45947,45948,45949,45950,45951,45952,45953,45954,45955,45956,45957,45958,45959,45960,45961,45962,45963,45964,45965,45966,45967,45968,45969,45970,45971,45972,45973,45974,45975,45976,45977,45978,45979,45980,45981,45982,45983,45984,45985,45986,45987,45988,45989,45990,45991,45992,45993,45994,45995,45996,45997,45998,45999,46000,46001,46002,46003,46004,46005,46006,46007,46008,46009,46010,46011,46012,46013,46014,46015,46016,46017,46018,46019,46020,46021,46022,46023,46024,46025,46026,46027,46028,46029,46030,46031,46032,46033,46034,46035,46036,46037,46038,46039,46040,46041,46042,46043,46044,46045,46046,46047,46048,46049,46050,46051,46052,46053,46054,46055,46056,46057,46058,46059,46060,46061,46062,46063,46064,46065,46066,46067,46068,46069,46070,46071,46072,46073,46074,46075,46076,46077,46078,46079,46080,46081,46082,46083,46084,46085,46086,46087,46088,46089,46090,46091,46092,46093,46094,46095,46096,46097,46098,46099,46100,46101,46102,46103,46104,46105,46106,46107,46108,46109,46110,46111,46112,46113,46114,46115,46116,46117,46118,46119,46120,46121,46122,46123,46124,46125,46126,46127,46128,46129,46130,46131,46132,46133,46134,46135,46136,46137,46138,46139,46140,46141,46142,46143,46144,46145,46146,46147,46148,46149,46150,46151,46152,46153,46154,46155,46156,46157,46158,46159,46160,46161,46162,46163,46164,46165,46166,46167,46168,46169,46170,46171,46172,46173,46174,46175,46176,46177,46178,46179,46180,46181,46182,46183,46184,46185,46186,46187,46188,46189,46190,46191,46192,46193,46194,46195,46196,46197,46198,46199,46200,46201,46202,46203,46204,46205,46206,46207,46208,46209,46210,46211,46212,46213,46214,46215,46216,46217,46218,46219,46220,46221,46222,46223,46224,46225,46226,46227,46228,46229,46230,46231,46232,46233,46234,46235,46236,46237,46238,46239,46240,46241,46242,46243,46244,46245,46246,46247,46248,46249,46250,46251,46252,46253,46254,46255,46256,46257,46258,46259,46260,46261,46262,46263,46264,46265,46266,46267,46268,46269,46270,46271,46272,46273,46274,46275,46276,46277,46278,46279,46280,46281,46282,46283,46284,46285,46286,46287,46288,46289,46290,46291,46292,46293,46294,46295,46296,46297,46298,46299,46300,46301,46302,46303,46304,46305,46306,46307,46308,46309,46310,46311,46312,46313,46314,46315,46316,46317,46318,46319,46320,46321,46322,46323,46324,46325,46326,46327,46328,46329,46330,46331,46332,46333,46334,46335,46336,46337,46338,46339,46340,46341,46342,46343,46344,46345,46346,46347,46348,46349,46350,46351,46352,46353,46354,46355,46356,46357,46358,46359,46360,46361,46362,46363,46364,46365,46366,46367,46368,46369,46370,46371,46372,46373,46374,46375,46376,46377,46378,46379,46380,46381,46382,46383,46384,46385,46386,46387,46388,46389,46390,46391,46392,46393,46394,46395,46396,46397,46398,46399,46400,46401,46402,46403,46404,46405,46406,46407,46408,46409,46410,46411,46412,46413,46414,46415,46416,46417,46418,46419,46420,46421,46422,46423,46424,46425,46426,46427,46428,46429,46430,46431,46432,46433,46434,46435,46436,46437,46438,46439,46440,46441,46442,46443,46444,46445,46446,46447,46448,46449,46450,46451,46452,46453,46454,46455,46456,46457,46458,46459,46460,46461,46462,46463,46464,46465,46466,46467,46468,46469,46470,46471,46472,46473,46474,46475,46476,46477,46478,46479,46480,46481,46482,46483,46484,46485,46486,46487,46488,46489,46490,46491,46492,46493,46494,46495,46496,46497,46498,46499,46500,46501,46502,46503,46504,46505,46506,46507,46508,46509,46510,46511,46512,46513,46514,46515,46516,46517,46518,46519,46520,46521,46522,46523,46524,46525,46526,46527,46528,46529,46530,46531,46532,46533,46534,46535,46536,46537,46538,46539,46540,46541,46542,46543,46544,46545,46546,46547,46548,46549,46550,46551,46552,46553,46554,46555,46556,46557,46558,46559,46560,46561,46562,46563,46564,46565,46566,46567,46568,46569,46570,46571,46572,46573,46574,46575,46576,46577,46578,46579,46580,46581,46582,46583,46584,46585,46586,46587,46588,46589,46590,46591,46592,46593,46594,46595,46596,46597,46598,46599,46600,46601,46602,46603,46604,46605,46606,46607,46608,46609,46610,46611,46612,46613,46614,46615,46616,46617,46618,46619,46620,46621,46622,46623,46624,46625,46626,46627,46628,46629,46630,46631,46632,46633,46634,46635,46636,46637,46638,46639,46640,46641,46642,46643,46644,46645,46646,46647,46648,46649,46650,46651,46652,46653,46654,46655,46656,46657,46658,46659,46660,46661,46662,46663,46664,46665,46666,46667,46668,46669,46670,46671,46672,46673,46674,46675,46676,46677,46678,46679,46680,46681,46682,46683,46684,46685,46686,46687,46688,46689,46690,46691,46692,46693,46694,46695,46696,46697,46698,46699,46700,46701,46702,46703,46704,46705,46706,46707,46708,46709,46710,46711,46712,46713,46714,46715,46716,46717,46718,46719,46720,46721,46722,46723,46724,46725,46726,46727,46728,46729,46730,46731,46732,46733,46734,46735,46736,46737,46738,46739,46740,46741,46742,46743,46744,46745,46746,46747,46748,46749,46750,46751,46752,46753,46754,46755,46756,46757,46758,46759,46760,46761,46762,46763,46764,46765,46766,46767,46768,46769,46770,46771,46772,46773,46774,46775,46776,46777,46778,46779,46780,46781,46782,46783,46784,46785,46786,46787,46788,46789,46790,46791,46792,46793,46794,46795,46796,46797,46798,46799,46800,46801,46802,46803,46804,46805,46806,46807,46808,46809,46810,46811,46812,46813,46814,46815,46816,46817,46818,46819,46820,46821,46822,46823,46824,46825,46826,46827,46828,46829,46830,46831,46832,46833,46834,46835,46836,46837,46838,46839,46840,46841,46842,46843,46844,46845,46846,46847,46848,46849,46850,46851,46852,46853,46854,46855,46856,46857,46858,46859,46860,46861,46862,46863,46864,46865,46866,46867,46868,46869,46870,46871,46872,46873,46874,46875,46876,46877,46878,46879,46880,46881,46882,46883,46884,46885,46886,46887,46888,46889,46890,46891,46892,46893,46894,46895,46896,46897,46898,46899,46900,46901,46902,46903,46904,46905,46906,46907,46908,46909,46910,46911,46912,46913,46914,46915,46916,46917,46918,46919,46920,46921,46922,46923,46924,46925,46926,46927,46928,46929,46930,46931,46932,46933,46934,46935,46936,46937,46938,46939,46940,46941,46942,46943,46944,46945,46946,46947,46948,46949,46950,46951,46952,46953,46954,46955,46956,46957,46958,46959,46960,46961,46962,46963,46964,46965,46966,46967,46968,46969,46970,46971,46972,46973,46974,46975,46976,46977,46978,46979,46980,46981,46982,46983,46984,46985,46986,46987,46988,46989,46990,46991,46992,46993,46994,46995,46996,46997,46998,46999,47000,47001,47002,47003,47004,47005,47006,47007,47008,47009,47010,47011,47012,47013,47014,47015,47016,47017,47018,47019,47020,47021,47022,47023,47024,47025,47026,47027,47028,47029,47030,47031,47032,47033,47034,47035,47036,47037,47038,47039,47040,47041,47042,47043,47044,47045,47046,47047,47048,47049,47050,47051,47052,47053,47054,47055,47056,47057,47058,47059,47060,47061,47062,47063,47064,47065,47066,47067,47068,47069,47070,47071,47072,47073,47074,47075,47076,47077,47078,47079,47080,47081,47082,47083,47084,47085,47086,47087,47088,47089,47090,47091,47092,47093,47094,47095,47096,47097,47098,47099,47100,47101,47102,47103,47104,47105,47106,47107,47108,47109,47110,47111,47112,47113,47114,47115,47116,47117,47118,47119,47120,47121,47122,47123,47124,47125,47126,47127,47128,47129,47130,47131,47132,47133,47134,47135,47136,47137,47138,47139,47140,47141,47142,47143,47144,47145,47146,47147,47148,47149,47150,47151,47152,47153,47154,47155,47156,47157,47158,47159,47160,47161,47162,47163,47164,47165,47166,47167,47168,47169,47170,47171,47172,47173,47174,47175,47176,47177,47178,47179,47180,47181,47182,47183,47184,47185,47186,47187,47188,47189,47190,47191,47192,47193,47194,47195,47196,47197,47198,47199,47200,47201,47202,47203,47204,47205,47206,47207,47208,47209,47210,47211,47212,47213,47214,47215,47216,47217,47218,47219,47220,47221,47222,47223,47224,47225,47226,47227,47228,47229,47230,47231,47232,47233,47234,47235,47236,47237,47238,47239,47240,47241,47242,47243,47244,47245,47246,47247,47248,47249,47250,47251,47252,47253,47254,47255,47256,47257,47258,47259,47260,47261,47262,47263,47264,47265,47266,47267,47268,47269,47270,47271,47272,47273,47274,47275,47276,47277,47278,47279,47280,47281,47282,47283,47284,47285,47286,47287,47288,47289,47290,47291,47292,47293,47294,47295,47296,47297,47298,47299,47300,47301,47302,47303,47304,47305,47306,47307,47308,47309,47310,47311,47312,47313,47314,47315,47316,47317,47318,47319,47320,47321,47322,47323,47324,47325,47326,47327,47328,47329,47330,47331,47332,47333,47334,47335,47336,47337,47338,47339,47340,47341,47342,47343,47344,47345,47346,47347,47348,47349,47350,47351,47352,47353,47354,47355,47356,47357,47358,47359,47360,47361,47362,47363,47364,47365,47366,47367,47368,47369,47370,47371,47372,47373,47374,47375,47376,47377,47378,47379,47380,47381,47382,47383,47384,47385,47386,47387,47388,47389,47390,47391,47392,47393,47394,47395,47396,47397,47398,47399,47400,47401,47402,47403,47404,47405,47406,47407,47408,47409,47410,47411,47412,47413,47414,47415,47416,47417,47418,47419,47420,47421,47422,47423,47424,47425,47426,47427,47428,47429,47430,47431,47432,47433,47434,47435,47436,47437,47438,47439,47440,47441,47442,47443,47444,47445,47446,47447,47448,47449,47450,47451,47452,47453,47454,47455,47456,47457,47458,47459,47460,47461,47462,47463,47464,47465,47466,47467,47468,47469,47470,47471,47472,47473,47474,47475,47476,47477,47478,47479,47480,47481,47482,47483,47484,47485,47486,47487,47488,47489,47490,47491,47492,47493,47494,47495,47496,47497,47498,47499,47500,47501,47502,47503,47504,47505,47506,47507,47508,47509,47510,47511,47512,47513,47514,47515,47516,47517,47518,47519,47520,47521,47522,47523,47524,47525,47526,47527,47528,47529,47530,47531,47532,47533,47534,47535,47536,47537,47538,47539,47540,47541,47542,47543,47544,47545,47546,47547,47548,47549,47550,47551,47552,47553,47554,47555,47556,47557,47558,47559,47560,47561,47562,47563,47564,47565,47566,47567,47568,47569,47570,47571,47572,47573,47574,47575,47576,47577,47578,47579,47580,47581,47582,47583,47584,47585,47586,47587,47588,47589,47590,47591,47592,47593,47594,47595,47596,47597,47598,47599,47600,47601,47602,47603,47604,47605,47606,47607,47608,47609,47610,47611,47612,47613,47614,47615,47616,47617,47618,47619,47620,47621,47622,47623,47624,47625,47626,47627,47628,47629,47630,47631,47632,47633,47634,47635,47636,47637,47638,47639,47640,47641,47642,47643,47644,47645,47646,47647,47648,47649,47650,47651,47652,47653,47654,47655,47656,47657,47658,47659,47660,47661,47662,47663,47664,47665,47666,47667,47668,47669,47670,47671,47672,47673,47674,47675,47676,47677,47678,47679,47680,47681,47682,47683,47684,47685,47686,47687,47688,47689,47690,47691,47692,47693,47694,47695,47696,47697,47698,47699,47700,47701,47702,47703,47704,47705,47706,47707,47708,47709,47710,47711,47712,47713,47714,47715,47716,47717,47718,47719,47720,47721,47722,47723,47724,47725,47726,47727,47728,47729,47730,47731,47732,47733,47734,47735,47736,47737,47738,47739,47740,47741,47742,47743,47744,47745,47746,47747,47748,47749,47750,47751,47752,47753,47754,47755,47756,47757,47758,47759,47760,47761,47762,47763,47764,47765,47766,47767,47768,47769,47770,47771,47772,47773,47774,47775,47776,47777,47778,47779,47780,47781,47782,47783,47784,47785,47786,47787,47788,47789,47790,47791,47792,47793,47794,47795,47796,47797,47798,47799,47800,47801,47802,47803,47804,47805,47806,47807,47808,47809,47810,47811,47812,47813,47814,47815,47816,47817,47818,47819,47820,47821,47822,47823,47824,47825,47826,47827,47828,47829,47830,47831,47832,47833,47834,47835,47836,47837,47838,47839,47840,47841,47842,47843,47844,47845,47846,47847,47848,47849,47850,47851,47852,47853,47854,47855,47856,47857,47858,47859,47860,47861,47862,47863,47864,47865,47866,47867,47868,47869,47870,47871,47872,47873,47874,47875,47876,47877,47878,47879,47880,47881,47882,47883,47884,47885,47886,47887,47888,47889,47890,47891,47892,47893,47894,47895,47896,47897,47898,47899,47900,47901,47902,47903,47904,47905,47906,47907,47908,47909,47910,47911,47912,47913,47914,47915,47916,47917,47918,47919,47920,47921,47922,47923,47924,47925,47926,47927,47928,47929,47930,47931,47932,47933,47934,47935,47936,47937,47938,47939,47940,47941,47942,47943,47944,47945,47946,47947,47948,47949,47950,47951,47952,47953,47954,47955,47956,47957,47958,47959,47960,47961,47962,47963,47964,47965,47966,47967,47968,47969,47970,47971,47972,47973,47974,47975,47976,47977,47978,47979,47980,47981,47982,47983,47984,47985,47986,47987,47988,47989,47990,47991,47992,47993,47994,47995,47996,47997,47998,47999,48000,48001,48002,48003,48004,48005,48006,48007,48008,48009,48010,48011,48012,48013,48014,48015,48016,48017,48018,48019,48020,48021,48022,48023,48024,48025,48026,48027,48028,48029,48030,48031,48032,48033,48034,48035,48036,48037,48038,48039,48040,48041,48042,48043,48044,48045,48046,48047,48048,48049,48050,48051,48052,48053,48054,48055,48056,48057,48058,48059,48060,48061,48062,48063,48064,48065,48066,48067,48068,48069,48070,48071,48072,48073,48074,48075,48076,48077,48078,48079,48080,48081,48082,48083,48084,48085,48086,48087,48088,48089,48090,48091,48092,48093,48094,48095,48096,48097,48098,48099,48100,48101,48102,48103,48104,48105,48106,48107,48108,48109,48110,48111,48112,48113,48114,48115,48116,48117,48118,48119,48120,48121,48122,48123,48124,48125,48126,48127,48128,48129,48130,48131,48132,48133,48134,48135,48136,48137,48138,48139,48140,48141,48142,48143,48144,48145,48146,48147,48148,48149,48150,48151,48152,48153,48154,48155,48156,48157,48158,48159,48160,48161,48162,48163,48164,48165,48166,48167,48168,48169,48170,48171,48172,48173,48174,48175,48176,48177,48178,48179,48180,48181,48182,48183,48184,48185,48186,48187,48188,48189,48190,48191,48192,48193,48194,48195,48196,48197,48198,48199,48200,48201,48202,48203,48204,48205,48206,48207,48208,48209,48210,48211,48212,48213,48214,48215,48216,48217,48218,48219,48220,48221,48222,48223,48224,48225,48226,48227,48228,48229,48230,48231,48232,48233,48234,48235,48236,48237,48238,48239,48240,48241,48242,48243,48244,48245,48246,48247,48248,48249,48250,48251,48252,48253,48254,48255,48256,48257,48258,48259,48260,48261,48262,48263,48264,48265,48266,48267,48268,48269,48270,48271,48272,48273,48274,48275,48276,48277,48278,48279,48280,48281,48282,48283,48284,48285,48286,48287,48288,48289,48290,48291,48292,48293,48294,48295,48296,48297,48298,48299,48300,48301,48302,48303,48304,48305,48306,48307,48308,48309,48310,48311,48312,48313,48314,48315,48316,48317,48318,48319,48320,48321,48322,48323,48324,48325,48326,48327,48328,48329,48330,48331,48332,48333,48334,48335,48336,48337,48338,48339,48340,48341,48342,48343,48344,48345,48346,48347,48348,48349,48350,48351,48352,48353,48354,48355,48356,48357,48358,48359,48360,48361,48362,48363,48364,48365,48366,48367,48368,48369,48370,48371,48372,48373,48374,48375,48376,48377,48378,48379,48380,48381,48382,48383,48384,48385,48386,48387,48388,48389,48390,48391,48392,48393,48394,48395,48396,48397,48398,48399,48400,48401,48402,48403,48404,48405,48406,48407,48408,48409,48410,48411,48412,48413,48414,48415,48416,48417,48418,48419,48420,48421,48422,48423,48424,48425,48426,48427,48428,48429,48430,48431,48432,48433,48434,48435,48436,48437,48438,48439,48440,48441,48442,48443,48444,48445,48446,48447,48448,48449,48450,48451,48452,48453,48454,48455,48456,48457,48458,48459,48460,48461,48462,48463,48464,48465,48466,48467,48468,48469,48470,48471,48472,48473,48474,48475,48476,48477,48478,48479,48480,48481,48482,48483,48484,48485,48486,48487,48488,48489,48490,48491,48492,48493,48494,48495,48496,48497,48498,48499,48500,48501,48502,48503,48504,48505,48506,48507,48508,48509,48510,48511,48512,48513,48514,48515,48516,48517,48518,48519,48520,48521,48522,48523,48524,48525,48526,48527,48528,48529,48530,48531,48532,48533,48534,48535,48536,48537,48538,48539,48540,48541,48542,48543,48544,48545,48546,48547,48548,48549,48550,48551,48552,48553,48554,48555,48556,48557,48558,48559,48560,48561,48562,48563,48564,48565,48566,48567,48568,48569,48570,48571,48572,48573,48574,48575,48576,48577,48578,48579,48580,48581,48582,48583,48584,48585,48586,48587,48588,48589,48590,48591,48592,48593,48594,48595,48596,48597,48598,48599,48600,48601,48602,48603,48604,48605,48606,48607,48608,48609,48610,48611,48612,48613,48614,48615,48616,48617,48618,48619,48620,48621,48622,48623,48624,48625,48626,48627,48628,48629,48630,48631,48632,48633,48634,48635,48636,48637,48638,48639,48640,48641,48642,48643,48644,48645,48646,48647,48648,48649,48650,48651,48652,48653,48654,48655,48656,48657,48658,48659,48660,48661,48662,48663,48664,48665,48666,48667,48668,48669,48670,48671,48672,48673,48674,48675,48676,48677,48678,48679,48680,48681,48682,48683,48684,48685,48686,48687,48688,48689,48690,48691,48692,48693,48694,48695,48696,48697,48698,48699,48700,48701,48702,48703,48704,48705,48706,48707,48708,48709,48710,48711,48712,48713,48714,48715,48716,48717,48718,48719,48720,48721,48722,48723,48724,48725,48726,48727,48728,48729,48730,48731,48732,48733,48734,48735,48736,48737,48738,48739,48740,48741,48742,48743,48744,48745,48746,48747,48748,48749,48750,48751,48752,48753,48754,48755,48756,48757,48758,48759,48760,48761,48762,48763,48764,48765,48766,48767,48768,48769,48770,48771,48772,48773,48774,48775,48776,48777,48778,48779,48780,48781,48782,48783,48784,48785,48786,48787,48788,48789,48790,48791,48792,48793,48794,48795,48796,48797,48798,48799,48800,48801,48802,48803,48804,48805,48806,48807,48808,48809,48810,48811,48812,48813,48814,48815,48816,48817,48818,48819,48820,48821,48822,48823,48824,48825,48826,48827,48828,48829,48830,48831,48832,48833,48834,48835,48836,48837,48838,48839,48840,48841,48842,48843,48844,48845,48846,48847,48848,48849,48850,48851,48852,48853,48854,48855,48856,48857,48858,48859,48860,48861,48862,48863,48864,48865,48866,48867,48868,48869,48870,48871,48872,48873,48874,48875,48876,48877,48878,48879,48880,48881,48882,48883,48884,48885,48886,48887,48888,48889,48890,48891,48892,48893,48894,48895,48896,48897,48898,48899,48900,48901,48902,48903,48904,48905,48906,48907,48908,48909,48910,48911,48912,48913,48914,48915,48916,48917,48918,48919,48920,48921,48922,48923,48924,48925,48926,48927,48928,48929,48930,48931,48932,48933,48934,48935,48936,48937,48938,48939,48940,48941,48942,48943,48944,48945,48946,48947,48948,48949,48950,48951,48952,48953,48954,48955,48956,48957,48958,48959,48960,48961,48962,48963,48964,48965,48966,48967,48968,48969,48970,48971,48972,48973,48974,48975,48976,48977,48978,48979,48980,48981,48982,48983,48984,48985,48986,48987,48988,48989,48990,48991,48992,48993,48994,48995,48996,48997,48998,48999,49000,49001,49002,49003,49004,49005,49006,49007,49008,49009,49010,49011,49012,49013,49014,49015,49016,49017,49018,49019,49020,49021,49022,49023,49024,49025,49026,49027,49028,49029,49030,49031,49032,49033,49034,49035,49036,49037,49038,49039,49040,49041,49042,49043,49044,49045,49046,49047,49048,49049,49050,49051,49052,49053,49054,49055,49056,49057,49058,49059,49060,49061,49062,49063,49064,49065,49066,49067,49068,49069,49070,49071,49072,49073,49074,49075,49076,49077,49078,49079,49080,49081,49082,49083,49084,49085,49086,49087,49088,49089,49090,49091,49092,49093,49094,49095,49096,49097,49098,49099,49100,49101,49102,49103,49104,49105,49106,49107,49108,49109,49110,49111,49112,49113,49114,49115,49116,49117,49118,49119,49120,49121,49122,49123,49124,49125,49126,49127,49128,49129,49130,49131,49132,49133,49134,49135,49136,49137,49138,49139,49140,49141,49142,49143,49144,49145,49146,49147,49148,49149,49150,49151,49152,49153,49154,49155,49156,49157,49158,49159,49160,49161,49162,49163,49164,49165,49166,49167,49168,49169,49170,49171,49172,49173,49174,49175,49176,49177,49178,49179,49180,49181,49182,49183,49184,49185,49186,49187,49188,49189,49190,49191,49192,49193,49194,49195,49196,49197,49198,49199,49200,49201,49202,49203,49204,49205,49206,49207,49208,49209,49210,49211,49212,49213,49214,49215,49216,49217,49218,49219,49220,49221,49222,49223,49224,49225,49226,49227,49228,49229,49230,49231,49232,49233,49234,49235,49236,49237,49238,49239,49240,49241,49242,49243,49244,49245,49246,49247,49248,49249,49250,49251,49252,49253,49254,49255,49256,49257,49258,49259,49260,49261,49262,49263,49264,49265,49266,49267,49268,49269,49270,49271,49272,49273,49274,49275,49276,49277,49278,49279,49280,49281,49282,49283,49284,49285,49286,49287,49288,49289,49290,49291,49292,49293,49294,49295,49296,49297,49298,49299,49300,49301,49302,49303,49304,49305,49306,49307,49308,49309,49310,49311,49312,49313,49314,49315,49316,49317,49318,49319,49320,49321,49322,49323,49324,49325,49326,49327,49328,49329,49330,49331,49332,49333,49334,49335,49336,49337,49338,49339,49340,49341,49342,49343,49344,49345,49346,49347,49348,49349,49350,49351,49352,49353,49354,49355,49356,49357,49358,49359,49360,49361,49362,49363,49364,49365,49366,49367,49368,49369,49370,49371,49372,49373,49374,49375,49376,49377,49378,49379,49380,49381,49382,49383,49384,49385,49386,49387,49388,49389,49390,49391,49392,49393,49394,49395,49396,49397,49398,49399,49400,49401,49402,49403,49404,49405,49406,49407,49408,49409,49410,49411,49412,49413,49414,49415,49416,49417,49418,49419,49420,49421,49422,49423,49424,49425,49426,49427,49428,49429,49430,49431,49432,49433,49434,49435,49436,49437,49438,49439,49440,49441,49442,49443,49444,49445,49446,49447,49448,49449,49450,49451,49452,49453,49454,49455,49456,49457,49458,49459,49460,49461,49462,49463,49464,49465,49466,49467,49468,49469,49470,49471,49472,49473,49474,49475,49476,49477,49478,49479,49480,49481,49482,49483,49484,49485,49486,49487,49488,49489,49490,49491,49492,49493,49494,49495,49496,49497,49498,49499,49500,49501,49502,49503,49504,49505,49506,49507,49508,49509,49510,49511,49512,49513,49514,49515,49516,49517,49518,49519,49520,49521,49522,49523,49524,49525,49526,49527,49528,49529,49530,49531,49532,49533,49534,49535,49536,49537,49538,49539,49540,49541,49542,49543,49544,49545,49546,49547,49548,49549,49550,49551,49552,49553,49554,49555,49556,49557,49558,49559,49560,49561,49562,49563,49564,49565,49566,49567,49568,49569,49570,49571,49572,49573,49574,49575,49576,49577,49578,49579,49580,49581,49582,49583,49584,49585,49586,49587,49588,49589,49590,49591,49592,49593,49594,49595,49596,49597,49598,49599,49600,49601,49602,49603,49604,49605,49606,49607,49608,49609,49610,49611,49612,49613,49614,49615,49616,49617,49618,49619,49620,49621,49622,49623,49624,49625,49626,49627,49628,49629,49630,49631,49632,49633,49634,49635,49636,49637,49638,49639,49640,49641,49642,49643,49644,49645,49646,49647,49648,49649,49650,49651,49652,49653,49654,49655,49656,49657,49658,49659,49660,49661,49662,49663,49664,49665,49666,49667,49668,49669,49670,49671,49672,49673,49674,49675,49676,49677,49678,49679,49680,49681,49682,49683,49684,49685,49686,49687,49688,49689,49690,49691,49692,49693,49694,49695,49696,49697,49698,49699,49700,49701,49702,49703,49704,49705,49706,49707,49708,49709,49710,49711,49712,49713,49714,49715,49716,49717,49718,49719,49720,49721,49722,49723,49724,49725,49726,49727,49728,49729,49730,49731,49732,49733,49734,49735,49736,49737,49738,49739,49740,49741,49742,49743,49744,49745,49746,49747,49748,49749,49750,49751,49752,49753,49754,49755,49756,49757,49758,49759,49760,49761,49762,49763,49764,49765,49766,49767,49768,49769,49770,49771,49772,49773,49774,49775,49776,49777,49778,49779,49780,49781,49782,49783,49784,49785,49786,49787,49788,49789,49790,49791,49792,49793,49794,49795,49796,49797,49798,49799,49800,49801,49802,49803,49804,49805,49806,49807,49808,49809,49810,49811,49812,49813,49814,49815,49816,49817,49818,49819,49820,49821,49822,49823,49824,49825,49826,49827,49828,49829,49830,49831,49832,49833,49834,49835,49836,49837,49838,49839,49840,49841,49842,49843,49844,49845,49846,49847,49848,49849,49850,49851,49852,49853,49854,49855,49856,49857,49858,49859,49860,49861,49862,49863,49864,49865,49866,49867,49868,49869,49870,49871,49872,49873,49874,49875,49876,49877,49878,49879,49880,49881,49882,49883,49884,49885,49886,49887,49888,49889,49890,49891,49892,49893,49894,49895,49896,49897,49898,49899,49900,49901,49902,49903,49904,49905,49906,49907,49908,49909,49910,49911,49912,49913,49914,49915,49916,49917,49918,49919,49920,49921,49922,49923,49924,49925,49926,49927,49928,49929,49930,49931,49932,49933,49934,49935,49936,49937,49938,49939,49940,49941,49942,49943,49944,49945,49946,49947,49948,49949,49950,49951,49952,49953,49954,49955,49956,49957,49958,49959,49960,49961,49962,49963,49964,49965,49966,49967,49968,49969,49970,49971,49972,49973,49974,49975,49976,49977,49978,49979,49980,49981,49982,49983,49984,49985,49986,49987,49988,49989,49990,49991,49992,49993,49994,49995,49996,49997,49998,49999,50000,50001,50002,50003,50004,50005,50006,50007,50008,50009,50010,50011,50012,50013,50014,50015,50016,50017,50018,50019,50020,50021,50022,50023,50024,50025,50026,50027,50028,50029,50030,50031,50032,50033,50034,50035,50036,50037,50038,50039,50040,50041,50042,50043,50044,50045,50046,50047,50048,50049,50050,50051,50052,50053,50054,50055,50056,50057,50058,50059,50060,50061,50062,50063,50064,50065,50066,50067,50068,50069,50070,50071,50072,50073,50074,50075,50076,50077,50078,50079,50080,50081,50082,50083,50084,50085,50086,50087,50088,50089,50090,50091,50092,50093,50094,50095,50096,50097,50098,50099,50100,50101,50102,50103,50104,50105,50106,50107,50108,50109,50110,50111,50112,50113,50114,50115,50116,50117,50118,50119,50120,50121,50122,50123,50124,50125,50126,50127,50128,50129,50130,50131,50132,50133,50134,50135,50136,50137,50138,50139,50140,50141,50142,50143,50144,50145,50146,50147,50148,50149,50150,50151,50152,50153,50154,50155,50156,50157,50158,50159,50160,50161,50162,50163,50164,50165,50166,50167,50168,50169,50170,50171,50172,50173,50174,50175,50176,50177,50178,50179,50180,50181,50182,50183,50184,50185,50186,50187,50188,50189,50190,50191,50192,50193,50194,50195,50196,50197,50198,50199,50200,50201,50202,50203,50204,50205,50206,50207,50208,50209,50210,50211,50212,50213,50214,50215,50216,50217,50218,50219,50220,50221,50222,50223,50224,50225,50226,50227,50228,50229,50230,50231,50232,50233,50234,50235,50236,50237,50238,50239,50240,50241,50242,50243,50244,50245,50246,50247,50248,50249,50250,50251,50252,50253,50254,50255,50256,50257,50258,50259,50260,50261,50262,50263,50264,50265,50266,50267,50268,50269,50270,50271,50272,50273,50274,50275,50276,50277,50278,50279,50280,50281,50282,50283,50284,50285,50286,50287,50288,50289,50290,50291,50292,50293,50294,50295,50296,50297,50298,50299,50300,50301,50302,50303,50304,50305,50306,50307,50308,50309,50310,50311,50312,50313,50314,50315,50316,50317,50318,50319,50320,50321,50322,50323,50324,50325,50326,50327,50328,50329,50330,50331,50332,50333,50334,50335,50336,50337,50338,50339,50340,50341,50342,50343,50344,50345,50346,50347,50348,50349,50350,50351,50352,50353,50354,50355,50356,50357,50358,50359,50360,50361,50362,50363,50364,50365,50366,50367,50368,50369,50370,50371,50372,50373,50374,50375,50376,50377,50378,50379,50380,50381,50382,50383,50384,50385,50386,50387,50388,50389,50390,50391,50392,50393,50394,50395,50396,50397,50398,50399,50400,50401,50402,50403,50404,50405,50406,50407,50408,50409,50410,50411,50412,50413,50414,50415,50416,50417,50418,50419,50420,50421,50422,50423,50424,50425,50426,50427,50428,50429,50430,50431,50432,50433,50434,50435,50436,50437,50438,50439,50440,50441,50442,50443,50444,50445,50446,50447,50448,50449,50450,50451,50452,50453,50454,50455,50456,50457,50458,50459,50460,50461,50462,50463,50464,50465,50466,50467,50468,50469,50470,50471,50472,50473,50474,50475,50476,50477,50478,50479,50480,50481,50482,50483,50484,50485,50486,50487,50488,50489,50490,50491,50492,50493,50494,50495,50496,50497,50498,50499,50500,50501,50502,50503,50504,50505,50506,50507,50508,50509,50510,50511,50512,50513,50514,50515,50516,50517,50518,50519,50520,50521,50522,50523,50524,50525,50526,50527,50528,50529,50530,50531,50532,50533,50534,50535,50536,50537,50538,50539,50540,50541,50542,50543,50544,50545,50546,50547,50548,50549,50550,50551,50552,50553,50554,50555,50556,50557,50558,50559,50560,50561,50562,50563,50564,50565,50566,50567,50568,50569,50570,50571,50572,50573,50574,50575,50576,50577,50578,50579,50580,50581,50582,50583,50584,50585,50586,50587,50588,50589,50590,50591,50592,50593,50594,50595,50596,50597,50598,50599,50600,50601,50602,50603,50604,50605,50606,50607,50608,50609,50610,50611,50612,50613,50614,50615,50616,50617,50618,50619,50620,50621,50622,50623,50624,50625,50626,50627,50628,50629,50630,50631,50632,50633,50634,50635,50636,50637,50638,50639,50640,50641,50642,50643,50644,50645,50646,50647,50648,50649,50650,50651,50652,50653,50654,50655,50656,50657,50658,50659,50660,50661,50662,50663,50664,50665,50666,50667,50668,50669,50670,50671,50672,50673,50674,50675,50676,50677,50678,50679,50680,50681,50682,50683,50684,50685,50686,50687,50688,50689,50690,50691,50692,50693,50694,50695,50696,50697,50698,50699,50700,50701,50702,50703,50704,50705,50706,50707,50708,50709,50710,50711,50712,50713,50714,50715,50716,50717,50718,50719,50720,50721,50722,50723,50724,50725,50726,50727,50728,50729,50730,50731,50732,50733,50734,50735,50736,50737,50738,50739,50740,50741,50742,50743,50744,50745,50746,50747,50748,50749,50750,50751,50752,50753,50754,50755,50756,50757,50758,50759,50760,50761,50762,50763,50764,50765,50766,50767,50768,50769,50770,50771,50772,50773,50774,50775,50776,50777,50778,50779,50780,50781,50782,50783,50784,50785,50786,50787,50788,50789,50790,50791,50792,50793,50794,50795,50796,50797,50798,50799,50800,50801,50802,50803,50804,50805,50806,50807,50808,50809,50810,50811,50812,50813,50814,50815,50816,50817,50818,50819,50820,50821,50822,50823,50824,50825,50826,50827,50828,50829,50830,50831,50832,50833,50834,50835,50836,50837,50838,50839,50840,50841,50842,50843,50844,50845,50846,50847,50848,50849,50850,50851,50852,50853,50854,50855,50856,50857,50858,50859,50860,50861,50862,50863,50864,50865,50866,50867,50868,50869,50870,50871,50872,50873,50874,50875,50876,50877,50878,50879,50880,50881,50882,50883,50884,50885,50886,50887,50888,50889,50890,50891,50892,50893,50894,50895,50896,50897,50898,50899,50900,50901,50902,50903,50904,50905,50906,50907,50908,50909,50910,50911,50912,50913,50914,50915,50916,50917,50918,50919,50920,50921,50922,50923,50924,50925,50926,50927,50928,50929,50930,50931,50932,50933,50934,50935,50936,50937,50938,50939,50940,50941,50942,50943,50944,50945,50946,50947,50948,50949,50950,50951,50952,50953,50954,50955,50956,50957,50958,50959,50960,50961,50962,50963,50964,50965,50966,50967,50968,50969,50970,50971,50972,50973,50974,50975,50976,50977,50978,50979,50980,50981,50982,50983,50984,50985,50986,50987,50988,50989,50990,50991,50992,50993,50994,50995,50996,50997,50998,50999,51000,51001,51002,51003,51004,51005,51006,51007,51008,51009,51010,51011,51012,51013,51014,51015,51016,51017,51018,51019,51020,51021,51022,51023,51024,51025,51026,51027,51028,51029,51030,51031,51032,51033,51034,51035,51036,51037,51038,51039,51040,51041,51042,51043,51044,51045,51046,51047,51048,51049,51050,51051,51052,51053,51054,51055,51056,51057,51058,51059,51060,51061,51062,51063,51064,51065,51066,51067,51068,51069,51070,51071,51072,51073,51074,51075,51076,51077,51078,51079,51080,51081,51082,51083,51084,51085,51086,51087,51088,51089,51090,51091,51092,51093,51094,51095,51096,51097,51098,51099,51100,51101,51102,51103,51104,51105,51106,51107,51108,51109,51110,51111,51112,51113,51114,51115,51116,51117,51118,51119,51120,51121,51122,51123,51124,51125,51126,51127,51128,51129,51130,51131,51132,51133,51134,51135,51136,51137,51138,51139,51140,51141,51142,51143,51144,51145,51146,51147,51148,51149,51150,51151,51152,51153,51154,51155,51156,51157,51158,51159,51160,51161,51162,51163,51164,51165,51166,51167,51168,51169,51170,51171,51172,51173,51174,51175,51176,51177,51178,51179,51180,51181,51182,51183,51184,51185,51186,51187,51188,51189,51190,51191,51192,51193,51194,51195,51196,51197,51198,51199,51200,51201,51202,51203,51204,51205,51206,51207,51208,51209,51210,51211,51212,51213,51214,51215,51216,51217,51218,51219,51220,51221,51222,51223,51224,51225,51226,51227,51228,51229,51230,51231,51232,51233,51234,51235,51236,51237,51238,51239,51240,51241,51242,51243,51244,51245,51246,51247,51248,51249,51250,51251,51252,51253,51254,51255,51256,51257,51258,51259,51260,51261,51262,51263,51264,51265,51266,51267,51268,51269,51270,51271,51272,51273,51274,51275,51276,51277,51278,51279,51280,51281,51282,51283,51284,51285,51286,51287,51288,51289,51290,51291,51292,51293,51294,51295,51296,51297,51298,51299,51300,51301,51302,51303,51304,51305,51306,51307,51308,51309,51310,51311,51312,51313,51314,51315,51316,51317,51318,51319,51320,51321,51322,51323,51324,51325,51326,51327,51328,51329,51330,51331,51332,51333,51334,51335,51336,51337,51338,51339,51340,51341,51342,51343,51344,51345,51346,51347,51348,51349,51350,51351,51352,51353,51354,51355,51356,51357,51358,51359,51360,51361,51362,51363,51364,51365,51366,51367,51368,51369,51370,51371,51372,51373,51374,51375,51376,51377,51378,51379,51380,51381,51382,51383,51384,51385,51386,51387,51388,51389,51390,51391,51392,51393,51394,51395,51396,51397,51398,51399,51400,51401,51402,51403,51404,51405,51406,51407,51408,51409,51410,51411,51412,51413,51414,51415,51416,51417,51418,51419,51420,51421,51422,51423,51424,51425,51426,51427,51428,51429,51430,51431,51432,51433,51434,51435,51436,51437,51438,51439,51440,51441,51442,51443,51444,51445,51446,51447,51448,51449,51450,51451,51452,51453,51454,51455,51456,51457,51458,51459,51460,51461,51462,51463,51464,51465,51466,51467,51468,51469,51470,51471,51472,51473,51474,51475,51476,51477,51478,51479,51480,51481,51482,51483,51484,51485,51486,51487,51488,51489,51490,51491,51492,51493,51494,51495,51496,51497,51498,51499,51500,51501,51502,51503,51504,51505,51506,51507,51508,51509,51510,51511,51512,51513,51514,51515,51516,51517,51518,51519,51520,51521,51522,51523,51524,51525,51526,51527,51528,51529,51530,51531,51532,51533,51534,51535,51536,51537,51538,51539,51540,51541,51542,51543,51544,51545,51546,51547,51548,51549,51550,51551,51552,51553,51554,51555,51556,51557,51558,51559,51560,51561,51562,51563,51564,51565,51566,51567,51568,51569,51570,51571,51572,51573,51574,51575,51576,51577,51578,51579,51580,51581,51582,51583,51584,51585,51586,51587,51588,51589,51590,51591,51592,51593,51594,51595,51596,51597,51598,51599,51600,51601,51602,51603,51604,51605,51606,51607,51608,51609,51610,51611,51612,51613,51614,51615,51616,51617,51618,51619,51620,51621,51622,51623,51624,51625,51626,51627,51628,51629,51630,51631,51632,51633,51634,51635,51636,51637,51638,51639,51640,51641,51642,51643,51644,51645,51646,51647,51648,51649,51650,51651,51652,51653,51654,51655,51656,51657,51658,51659,51660,51661,51662,51663,51664,51665,51666,51667,51668,51669,51670,51671,51672,51673,51674,51675,51676,51677,51678,51679,51680,51681,51682,51683,51684,51685,51686,51687,51688,51689,51690,51691,51692,51693,51694,51695,51696,51697,51698,51699,51700,51701,51702,51703,51704,51705,51706,51707,51708,51709,51710,51711,51712,51713,51714,51715,51716,51717,51718,51719,51720,51721,51722,51723,51724,51725,51726,51727,51728,51729,51730,51731,51732,51733,51734,51735,51736,51737,51738,51739,51740,51741,51742,51743,51744,51745,51746,51747,51748,51749,51750,51751,51752,51753,51754,51755,51756,51757,51758,51759,51760,51761,51762,51763,51764,51765,51766,51767,51768,51769,51770,51771,51772,51773,51774,51775,51776,51777,51778,51779,51780,51781,51782,51783,51784,51785,51786,51787,51788,51789,51790,51791,51792,51793,51794,51795,51796,51797,51798,51799,51800,51801,51802,51803,51804,51805,51806,51807,51808,51809,51810,51811,51812,51813,51814,51815,51816,51817,51818,51819,51820,51821,51822,51823,51824,51825,51826,51827,51828,51829,51830,51831,51832,51833,51834,51835,51836,51837,51838,51839,51840,51841,51842,51843,51844,51845,51846,51847,51848,51849,51850,51851,51852,51853,51854,51855,51856,51857,51858,51859,51860,51861,51862,51863,51864,51865,51866,51867,51868,51869,51870,51871,51872,51873,51874,51875,51876,51877,51878,51879,51880,51881,51882,51883,51884,51885,51886,51887,51888,51889,51890,51891,51892,51893,51894,51895,51896,51897,51898,51899,51900,51901,51902,51903,51904,51905,51906,51907,51908,51909,51910,51911,51912,51913,51914,51915,51916,51917,51918,51919,51920,51921,51922,51923,51924,51925,51926,51927,51928,51929,51930,51931,51932,51933,51934,51935,51936,51937,51938,51939,51940,51941,51942,51943,51944,51945,51946,51947,51948,51949,51950,51951,51952,51953,51954,51955,51956,51957,51958,51959,51960,51961,51962,51963,51964,51965,51966,51967,51968,51969,51970,51971,51972,51973,51974,51975,51976,51977,51978,51979,51980,51981,51982,51983,51984,51985,51986,51987,51988,51989,51990,51991,51992,51993,51994,51995,51996,51997,51998,51999,52000,52001,52002,52003,52004,52005,52006,52007,52008,52009,52010,52011,52012,52013,52014,52015,52016,52017,52018,52019,52020,52021,52022,52023,52024,52025,52026,52027,52028,52029,52030,52031,52032,52033,52034,52035,52036,52037,52038,52039,52040,52041,52042,52043,52044,52045,52046,52047,52048,52049,52050,52051,52052,52053,52054,52055,52056,52057,52058,52059,52060,52061,52062,52063,52064,52065,52066,52067,52068,52069,52070,52071,52072,52073,52074,52075,52076,52077,52078,52079,52080,52081,52082,52083,52084,52085,52086,52087,52088,52089,52090,52091,52092,52093,52094,52095,52096,52097,52098,52099,52100,52101,52102,52103,52104,52105,52106,52107,52108,52109,52110,52111,52112,52113,52114,52115,52116,52117,52118,52119,52120,52121,52122,52123,52124,52125,52126,52127,52128,52129,52130,52131,52132,52133,52134,52135,52136,52137,52138,52139,52140,52141,52142,52143,52144,52145,52146,52147,52148,52149,52150,52151,52152,52153,52154,52155,52156,52157,52158,52159,52160,52161,52162,52163,52164,52165,52166,52167,52168,52169,52170,52171,52172,52173,52174,52175,52176,52177,52178,52179,52180,52181,52182,52183,52184,52185,52186,52187,52188,52189,52190,52191,52192,52193,52194,52195,52196,52197,52198,52199,52200,52201,52202,52203,52204,52205,52206,52207,52208,52209,52210,52211,52212,52213,52214,52215,52216,52217,52218,52219,52220,52221,52222,52223,52224,52225,52226,52227,52228,52229,52230,52231,52232,52233,52234,52235,52236,52237,52238,52239,52240,52241,52242,52243,52244,52245,52246,52247,52248,52249,52250,52251,52252,52253,52254,52255,52256,52257,52258,52259,52260,52261,52262,52263,52264,52265,52266,52267,52268,52269,52270,52271,52272,52273,52274,52275,52276,52277,52278,52279,52280,52281,52282,52283,52284,52285,52286,52287,52288,52289,52290,52291,52292,52293,52294,52295,52296,52297,52298,52299,52300,52301,52302,52303,52304,52305,52306,52307,52308,52309,52310,52311,52312,52313,52314,52315,52316,52317,52318,52319,52320,52321,52322,52323,52324,52325,52326,52327,52328,52329,52330,52331,52332,52333,52334,52335,52336,52337,52338,52339,52340,52341,52342,52343,52344,52345,52346,52347,52348,52349,52350,52351,52352,52353,52354,52355,52356,52357,52358,52359,52360,52361,52362,52363,52364,52365,52366,52367,52368,52369,52370,52371,52372,52373,52374,52375,52376,52377,52378,52379,52380,52381,52382,52383,52384,52385,52386,52387,52388,52389,52390,52391,52392,52393,52394,52395,52396,52397,52398,52399,52400,52401,52402,52403,52404,52405,52406,52407,52408,52409,52410,52411,52412,52413,52414,52415,52416,52417,52418,52419,52420,52421,52422,52423,52424,52425,52426,52427,52428,52429,52430,52431,52432,52433,52434,52435,52436,52437,52438,52439,52440,52441,52442,52443,52444,52445,52446,52447,52448,52449,52450,52451,52452,52453,52454,52455,52456,52457,52458,52459,52460,52461,52462,52463,52464,52465,52466,52467,52468,52469,52470,52471,52472,52473,52474,52475,52476,52477,52478,52479,52480,52481,52482,52483,52484,52485,52486,52487,52488,52489,52490,52491,52492,52493,52494,52495,52496,52497,52498,52499,52500,52501,52502,52503,52504,52505,52506,52507,52508,52509,52510,52511,52512,52513,52514,52515,52516,52517,52518,52519,52520,52521,52522,52523,52524,52525,52526,52527,52528,52529,52530,52531,52532,52533,52534,52535,52536,52537,52538,52539,52540,52541,52542,52543,52544,52545,52546,52547,52548,52549,52550,52551,52552,52553,52554,52555,52556,52557,52558,52559,52560,52561,52562,52563,52564,52565,52566,52567,52568,52569,52570,52571,52572,52573,52574,52575,52576,52577,52578,52579,52580,52581,52582,52583,52584,52585,52586,52587,52588,52589,52590,52591,52592,52593,52594,52595,52596,52597,52598,52599,52600,52601,52602,52603,52604,52605,52606,52607,52608,52609,52610,52611,52612,52613,52614,52615,52616,52617,52618,52619,52620,52621,52622,52623,52624,52625,52626,52627,52628,52629,52630,52631,52632,52633,52634,52635,52636,52637,52638,52639,52640,52641,52642,52643,52644,52645,52646,52647,52648,52649,52650,52651,52652,52653,52654,52655,52656,52657,52658,52659,52660,52661,52662,52663,52664,52665,52666,52667,52668,52669,52670,52671,52672,52673,52674,52675,52676,52677,52678,52679,52680,52681,52682,52683,52684,52685,52686,52687,52688,52689,52690,52691,52692,52693,52694,52695,52696,52697,52698,52699,52700,52701,52702,52703,52704,52705,52706,52707,52708,52709,52710,52711,52712,52713,52714,52715,52716,52717,52718,52719,52720,52721,52722,52723,52724,52725,52726,52727,52728,52729,52730,52731,52732,52733,52734,52735,52736,52737,52738,52739,52740,52741,52742,52743,52744,52745,52746,52747,52748,52749,52750,52751,52752,52753,52754,52755,52756,52757,52758,52759,52760,52761,52762,52763,52764,52765,52766,52767,52768,52769,52770,52771,52772,52773,52774,52775,52776,52777,52778,52779,52780,52781,52782,52783,52784,52785,52786,52787,52788,52789,52790,52791,52792,52793,52794,52795,52796,52797,52798,52799,52800,52801,52802,52803,52804,52805,52806,52807,52808,52809,52810,52811,52812,52813,52814,52815,52816,52817,52818,52819,52820,52821,52822,52823,52824,52825,52826,52827,52828,52829,52830,52831,52832,52833,52834,52835,52836,52837,52838,52839,52840,52841,52842,52843,52844,52845,52846,52847,52848,52849,52850,52851,52852,52853,52854,52855,52856,52857,52858,52859,52860,52861,52862,52863,52864,52865,52866,52867,52868,52869,52870,52871,52872,52873,52874,52875,52876,52877,52878,52879,52880,52881,52882,52883,52884,52885,52886,52887,52888,52889,52890,52891,52892,52893,52894,52895,52896,52897,52898,52899,52900,52901,52902,52903,52904,52905,52906,52907,52908,52909,52910,52911,52912,52913,52914,52915,52916,52917,52918,52919,52920,52921,52922,52923,52924,52925,52926,52927,52928,52929,52930,52931,52932,52933,52934,52935,52936,52937,52938,52939,52940,52941,52942,52943,52944,52945,52946,52947,52948,52949,52950,52951,52952,52953,52954,52955,52956,52957,52958,52959,52960,52961,52962,52963,52964,52965,52966,52967,52968,52969,52970,52971,52972,52973,52974,52975,52976,52977,52978,52979,52980,52981,52982,52983,52984,52985,52986,52987,52988,52989,52990,52991,52992,52993,52994,52995,52996,52997,52998,52999,53000,53001,53002,53003,53004,53005,53006,53007,53008,53009,53010,53011,53012,53013,53014,53015,53016,53017,53018,53019,53020,53021,53022,53023,53024,53025,53026,53027,53028,53029,53030,53031,53032,53033,53034,53035,53036,53037,53038,53039,53040,53041,53042,53043,53044,53045,53046,53047,53048,53049,53050,53051,53052,53053,53054,53055,53056,53057,53058,53059,53060,53061,53062,53063,53064,53065,53066,53067,53068,53069,53070,53071,53072,53073,53074,53075,53076,53077,53078,53079,53080,53081,53082,53083,53084,53085,53086,53087,53088,53089,53090,53091,53092,53093,53094,53095,53096,53097,53098,53099,53100,53101,53102,53103,53104,53105,53106,53107,53108,53109,53110,53111,53112,53113,53114,53115,53116,53117,53118,53119,53120,53121,53122,53123,53124,53125,53126,53127,53128,53129,53130,53131,53132,53133,53134,53135,53136,53137,53138,53139,53140,53141,53142,53143,53144,53145,53146,53147,53148,53149,53150,53151,53152,53153,53154,53155,53156,53157,53158,53159,53160,53161,53162,53163,53164,53165,53166,53167,53168,53169,53170,53171,53172,53173,53174,53175,53176,53177,53178,53179,53180,53181,53182,53183,53184,53185,53186,53187,53188,53189,53190,53191,53192,53193,53194,53195,53196,53197,53198,53199,53200,53201,53202,53203,53204,53205,53206,53207,53208,53209,53210,53211,53212,53213,53214,53215,53216,53217,53218,53219,53220,53221,53222,53223,53224,53225,53226,53227,53228,53229,53230,53231,53232,53233,53234,53235,53236,53237,53238,53239,53240,53241,53242,53243,53244,53245,53246,53247,53248,53249,53250,53251,53252,53253,53254,53255,53256,53257,53258,53259,53260,53261,53262,53263,53264,53265,53266,53267,53268,53269,53270,53271,53272,53273,53274,53275,53276,53277,53278,53279,53280,53281,53282,53283,53284,53285,53286,53287,53288,53289,53290,53291,53292,53293,53294,53295,53296,53297,53298,53299,53300,53301,53302,53303,53304,53305,53306,53307,53308,53309,53310,53311,53312,53313,53314,53315,53316,53317,53318,53319,53320,53321,53322,53323,53324,53325,53326,53327,53328,53329,53330,53331,53332,53333,53334,53335,53336,53337,53338,53339,53340,53341,53342,53343,53344,53345,53346,53347,53348,53349,53350,53351,53352,53353,53354,53355,53356,53357,53358,53359,53360,53361,53362,53363,53364,53365,53366,53367,53368,53369,53370,53371,53372,53373,53374,53375,53376,53377,53378,53379,53380,53381,53382,53383,53384,53385,53386,53387,53388,53389,53390,53391,53392,53393,53394,53395,53396,53397,53398,53399,53400,53401,53402,53403,53404,53405,53406,53407,53408,53409,53410,53411,53412,53413,53414,53415,53416,53417,53418,53419,53420,53421,53422,53423,53424,53425,53426,53427,53428,53429,53430,53431,53432,53433,53434,53435,53436,53437,53438,53439,53440,53441,53442,53443,53444,53445,53446,53447,53448,53449,53450,53451,53452,53453,53454,53455,53456,53457,53458,53459,53460,53461,53462,53463,53464,53465,53466,53467,53468,53469,53470,53471,53472,53473,53474,53475,53476,53477,53478,53479,53480,53481,53482,53483,53484,53485,53486,53487,53488,53489,53490,53491,53492,53493,53494,53495,53496,53497,53498,53499,53500,53501,53502,53503,53504,53505,53506,53507,53508,53509,53510,53511,53512,53513,53514,53515,53516,53517,53518,53519,53520,53521,53522,53523,53524,53525,53526,53527,53528,53529,53530,53531,53532,53533,53534,53535,53536,53537,53538,53539,53540,53541,53542,53543,53544,53545,53546,53547,53548,53549,53550,53551,53552,53553,53554,53555,53556,53557,53558,53559,53560,53561,53562,53563,53564,53565,53566,53567,53568,53569,53570,53571,53572,53573,53574,53575,53576,53577,53578,53579,53580,53581,53582,53583,53584,53585,53586,53587,53588,53589,53590,53591,53592,53593,53594,53595,53596,53597,53598,53599,53600,53601,53602,53603,53604,53605,53606,53607,53608,53609,53610,53611,53612,53613,53614,53615,53616,53617,53618,53619,53620,53621,53622,53623,53624,53625,53626,53627,53628,53629,53630,53631,53632,53633,53634,53635,53636,53637,53638,53639,53640,53641,53642,53643,53644,53645,53646,53647,53648,53649,53650,53651,53652,53653,53654,53655,53656,53657,53658,53659,53660,53661,53662,53663,53664,53665,53666,53667,53668,53669,53670,53671,53672,53673,53674,53675,53676,53677,53678,53679,53680,53681,53682,53683,53684,53685,53686,53687,53688,53689,53690,53691,53692,53693,53694,53695,53696,53697,53698,53699,53700,53701,53702,53703,53704,53705,53706,53707,53708,53709,53710,53711,53712,53713,53714,53715,53716,53717,53718,53719,53720,53721,53722,53723,53724,53725,53726,53727,53728,53729,53730,53731,53732,53733,53734,53735,53736,53737,53738,53739,53740,53741,53742,53743,53744,53745,53746,53747,53748,53749,53750,53751,53752,53753,53754,53755,53756,53757,53758,53759,53760,53761,53762,53763,53764,53765,53766,53767,53768,53769,53770,53771,53772,53773,53774,53775,53776,53777,53778,53779,53780,53781,53782,53783,53784,53785,53786,53787,53788,53789,53790,53791,53792,53793,53794,53795,53796,53797,53798,53799,53800,53801,53802,53803,53804,53805,53806,53807,53808,53809,53810,53811,53812,53813,53814,53815,53816,53817,53818,53819,53820,53821,53822,53823,53824,53825,53826,53827,53828,53829,53830,53831,53832,53833,53834,53835,53836,53837,53838,53839,53840,53841,53842,53843,53844,53845,53846,53847,53848,53849,53850,53851,53852,53853,53854,53855,53856,53857,53858,53859,53860,53861,53862,53863,53864,53865,53866,53867,53868,53869,53870,53871,53872,53873,53874,53875,53876,53877,53878,53879,53880,53881,53882,53883,53884,53885,53886,53887,53888,53889,53890,53891,53892,53893,53894,53895,53896,53897,53898,53899,53900,53901,53902,53903,53904,53905,53906,53907,53908,53909,53910,53911,53912,53913,53914,53915,53916,53917,53918,53919,53920,53921,53922,53923,53924,53925,53926,53927,53928,53929,53930,53931,53932,53933,53934,53935,53936,53937,53938,53939,53940,53941,53942,53943,53944,53945,53946,53947,53948,53949,53950,53951,53952,53953,53954,53955,53956,53957,53958,53959,53960,53961,53962,53963,53964,53965,53966,53967,53968,53969,53970,53971,53972,53973,53974,53975,53976,53977,53978,53979,53980,53981,53982,53983,53984,53985,53986,53987,53988,53989,53990,53991,53992,53993,53994,53995,53996,53997,53998,53999,54000,54001,54002,54003,54004,54005,54006,54007,54008,54009,54010,54011,54012,54013,54014,54015,54016,54017,54018,54019,54020,54021,54022,54023,54024,54025,54026,54027,54028,54029,54030,54031,54032,54033,54034,54035,54036,54037,54038,54039,54040,54041,54042,54043,54044,54045,54046,54047,54048,54049,54050,54051,54052,54053,54054,54055,54056,54057,54058,54059,54060,54061,54062,54063,54064,54065,54066,54067,54068,54069,54070,54071,54072,54073,54074,54075,54076,54077,54078,54079,54080,54081,54082,54083,54084,54085,54086,54087,54088,54089,54090,54091,54092,54093,54094,54095,54096,54097,54098,54099,54100,54101,54102,54103,54104,54105,54106,54107,54108,54109,54110,54111,54112,54113,54114,54115,54116,54117,54118,54119,54120,54121,54122,54123,54124,54125,54126,54127,54128,54129,54130,54131,54132,54133,54134,54135,54136,54137,54138,54139,54140,54141,54142,54143,54144,54145,54146,54147,54148,54149,54150,54151,54152,54153,54154,54155,54156,54157,54158,54159,54160,54161,54162,54163,54164,54165,54166,54167,54168,54169,54170,54171,54172,54173,54174,54175,54176,54177,54178,54179,54180,54181,54182,54183,54184,54185,54186,54187,54188,54189,54190,54191,54192,54193,54194,54195,54196,54197,54198,54199,54200,54201,54202,54203,54204,54205,54206,54207,54208,54209,54210,54211,54212,54213,54214,54215,54216,54217,54218,54219,54220,54221,54222,54223,54224,54225,54226,54227,54228,54229,54230,54231,54232,54233,54234,54235,54236,54237,54238,54239,54240,54241,54242,54243,54244,54245,54246,54247,54248,54249,54250,54251,54252,54253,54254,54255,54256,54257,54258,54259,54260,54261,54262,54263,54264,54265,54266,54267,54268,54269,54270,54271,54272,54273,54274,54275,54276,54277,54278,54279,54280,54281,54282,54283,54284,54285,54286,54287,54288,54289,54290,54291,54292,54293,54294,54295,54296,54297,54298,54299,54300,54301,54302,54303,54304,54305,54306,54307,54308,54309,54310,54311,54312,54313,54314,54315,54316,54317,54318,54319,54320,54321,54322,54323,54324,54325,54326,54327,54328,54329,54330,54331,54332,54333,54334,54335,54336,54337,54338,54339,54340,54341,54342,54343,54344,54345,54346,54347,54348,54349,54350,54351,54352,54353,54354,54355,54356,54357,54358,54359,54360,54361,54362,54363,54364,54365,54366,54367,54368,54369,54370,54371,54372,54373,54374,54375,54376,54377,54378,54379,54380,54381,54382,54383,54384,54385,54386,54387,54388,54389,54390,54391,54392,54393,54394,54395,54396,54397,54398,54399,54400,54401,54402,54403,54404,54405,54406,54407,54408,54409,54410,54411,54412,54413,54414,54415,54416,54417,54418,54419,54420,54421,54422,54423,54424,54425,54426,54427,54428,54429,54430,54431,54432,54433,54434,54435,54436,54437,54438,54439,54440,54441,54442,54443,54444,54445,54446,54447,54448,54449,54450,54451,54452,54453,54454,54455,54456,54457,54458,54459,54460,54461,54462,54463,54464,54465,54466,54467,54468,54469,54470,54471,54472,54473,54474,54475,54476,54477,54478,54479,54480,54481,54482,54483,54484,54485,54486,54487,54488,54489,54490,54491,54492,54493,54494,54495,54496,54497,54498,54499,54500,54501,54502,54503,54504,54505,54506,54507,54508,54509,54510,54511,54512,54513,54514,54515,54516,54517,54518,54519,54520,54521,54522,54523,54524,54525,54526,54527,54528,54529,54530,54531,54532,54533,54534,54535,54536,54537,54538,54539,54540,54541,54542,54543,54544,54545,54546,54547,54548,54549,54550,54551,54552,54553,54554,54555,54556,54557,54558,54559,54560,54561,54562,54563,54564,54565,54566,54567,54568,54569,54570,54571,54572,54573,54574,54575,54576,54577,54578,54579,54580,54581,54582,54583,54584,54585,54586,54587,54588,54589,54590,54591,54592,54593,54594,54595,54596,54597,54598,54599,54600,54601,54602,54603,54604,54605,54606,54607,54608,54609,54610,54611,54612,54613,54614,54615,54616,54617,54618,54619,54620,54621,54622,54623,54624,54625,54626,54627,54628,54629,54630,54631,54632,54633,54634,54635,54636,54637,54638,54639,54640,54641,54642,54643,54644,54645,54646,54647,54648,54649,54650,54651,54652,54653,54654,54655,54656,54657,54658,54659,54660,54661,54662,54663,54664,54665,54666,54667,54668,54669,54670,54671,54672,54673,54674,54675,54676,54677,54678,54679,54680,54681,54682,54683,54684,54685,54686,54687,54688,54689,54690,54691,54692,54693,54694,54695,54696,54697,54698,54699,54700,54701,54702,54703,54704,54705,54706,54707,54708,54709,54710,54711,54712,54713,54714,54715,54716,54717,54718,54719,54720,54721,54722,54723,54724,54725,54726,54727,54728,54729,54730,54731,54732,54733,54734,54735,54736,54737,54738,54739,54740,54741,54742,54743,54744,54745,54746,54747,54748,54749,54750,54751,54752,54753,54754,54755,54756,54757,54758,54759,54760,54761,54762,54763,54764,54765,54766,54767,54768,54769,54770,54771,54772,54773,54774,54775,54776,54777,54778,54779,54780,54781,54782,54783,54784,54785,54786,54787,54788,54789,54790,54791,54792,54793,54794,54795,54796,54797,54798,54799,54800,54801,54802,54803,54804,54805,54806,54807,54808,54809,54810,54811,54812,54813,54814,54815,54816,54817,54818,54819,54820,54821,54822,54823,54824,54825,54826,54827,54828,54829,54830,54831,54832,54833,54834,54835,54836,54837,54838,54839,54840,54841,54842,54843,54844,54845,54846,54847,54848,54849,54850,54851,54852,54853,54854,54855,54856,54857,54858,54859,54860,54861,54862,54863,54864,54865,54866,54867,54868,54869,54870,54871,54872,54873,54874,54875,54876,54877,54878,54879,54880,54881,54882,54883,54884,54885,54886,54887,54888,54889,54890,54891,54892,54893,54894,54895,54896,54897,54898,54899,54900,54901,54902,54903,54904,54905,54906,54907,54908,54909,54910,54911,54912,54913,54914,54915,54916,54917,54918,54919,54920,54921,54922,54923,54924,54925,54926,54927,54928,54929,54930,54931,54932,54933,54934,54935,54936,54937,54938,54939,54940,54941,54942,54943,54944,54945,54946,54947,54948,54949,54950,54951,54952,54953,54954,54955,54956,54957,54958,54959,54960,54961,54962,54963,54964,54965,54966,54967,54968,54969,54970,54971,54972,54973,54974,54975,54976,54977,54978,54979,54980,54981,54982,54983,54984,54985,54986,54987,54988,54989,54990,54991,54992,54993,54994,54995,54996,54997,54998,54999,55000,55001,55002,55003,55004,55005,55006,55007,55008,55009,55010,55011,55012,55013,55014,55015,55016,55017,55018,55019,55020,55021,55022,55023,55024,55025,55026,55027,55028,55029,55030,55031,55032,55033,55034,55035,55036,55037,55038,55039,55040,55041,55042,55043,55044,55045,55046,55047,55048,55049,55050,55051,55052,55053,55054,55055,55056,55057,55058,55059,55060,55061,55062,55063,55064,55065,55066,55067,55068,55069,55070,55071,55072,55073,55074,55075,55076,55077,55078,55079,55080,55081,55082,55083,55084,55085,55086,55087,55088,55089,55090,55091,55092,55093,55094,55095,55096,55097,55098,55099,55100,55101,55102,55103,55104,55105,55106,55107,55108,55109,55110,55111,55112,55113,55114,55115,55116,55117,55118,55119,55120,55121,55122,55123,55124,55125,55126,55127,55128,55129,55130,55131,55132,55133,55134,55135,55136,55137,55138,55139,55140,55141,55142,55143,55144,55145,55146,55147,55148,55149,55150,55151,55152,55153,55154,55155,55156,55157,55158,55159,55160,55161,55162,55163,55164,55165,55166,55167,55168,55169,55170,55171,55172,55173,55174,55175,55176,55177,55178,55179,55180,55181,55182,55183,55184,55185,55186,55187,55188,55189,55190,55191,55192,55193,55194,55195,55196,55197,55198,55199,55200,55201,55202,55203,55216,55217,55218,55219,55220,55221,55222,55223,55224,55225,55226,55227,55228,55229,55230,55231,55232,55233,55234,55235,55236,55237,55238,55243,55244,55245,55246,55247,55248,55249,55250,55251,55252,55253,55254,55255,55256,55257,55258,55259,55260,55261,55262,55263,55264,55265,55266,55267,55268,55269,55270,55271,55272,55273,55274,55275,55276,55277,55278,55279,55280,55281,55282,55283,55284,55285,55286,55287,55288,55289,55290,55291,63744,63745,63746,63747,63748,63749,63750,63751,63752,63753,63754,63755,63756,63757,63758,63759,63760,63761,63762,63763,63764,63765,63766,63767,63768,63769,63770,63771,63772,63773,63774,63775,63776,63777,63778,63779,63780,63781,63782,63783,63784,63785,63786,63787,63788,63789,63790,63791,63792,63793,63794,63795,63796,63797,63798,63799,63800,63801,63802,63803,63804,63805,63806,63807,63808,63809,63810,63811,63812,63813,63814,63815,63816,63817,63818,63819,63820,63821,63822,63823,63824,63825,63826,63827,63828,63829,63830,63831,63832,63833,63834,63835,63836,63837,63838,63839,63840,63841,63842,63843,63844,63845,63846,63847,63848,63849,63850,63851,63852,63853,63854,63855,63856,63857,63858,63859,63860,63861,63862,63863,63864,63865,63866,63867,63868,63869,63870,63871,63872,63873,63874,63875,63876,63877,63878,63879,63880,63881,63882,63883,63884,63885,63886,63887,63888,63889,63890,63891,63892,63893,63894,63895,63896,63897,63898,63899,63900,63901,63902,63903,63904,63905,63906,63907,63908,63909,63910,63911,63912,63913,63914,63915,63916,63917,63918,63919,63920,63921,63922,63923,63924,63925,63926,63927,63928,63929,63930,63931,63932,63933,63934,63935,63936,63937,63938,63939,63940,63941,63942,63943,63944,63945,63946,63947,63948,63949,63950,63951,63952,63953,63954,63955,63956,63957,63958,63959,63960,63961,63962,63963,63964,63965,63966,63967,63968,63969,63970,63971,63972,63973,63974,63975,63976,63977,63978,63979,63980,63981,63982,63983,63984,63985,63986,63987,63988,63989,63990,63991,63992,63993,63994,63995,63996,63997,63998,63999,64000,64001,64002,64003,64004,64005,64006,64007,64008,64009,64010,64011,64012,64013,64014,64015,64016,64017,64018,64019,64020,64021,64022,64023,64024,64025,64026,64027,64028,64029,64030,64031,64032,64033,64034,64035,64036,64037,64038,64039,64040,64041,64042,64043,64044,64045,64046,64047,64048,64049,64050,64051,64052,64053,64054,64055,64056,64057,64058,64059,64060,64061,64062,64063,64064,64065,64066,64067,64068,64069,64070,64071,64072,64073,64074,64075,64076,64077,64078,64079,64080,64081,64082,64083,64084,64085,64086,64087,64088,64089,64090,64091,64092,64093,64094,64095,64096,64097,64098,64099,64100,64101,64102,64103,64104,64105,64106,64107,64108,64109,64112,64113,64114,64115,64116,64117,64118,64119,64120,64121,64122,64123,64124,64125,64126,64127,64128,64129,64130,64131,64132,64133,64134,64135,64136,64137,64138,64139,64140,64141,64142,64143,64144,64145,64146,64147,64148,64149,64150,64151,64152,64153,64154,64155,64156,64157,64158,64159,64160,64161,64162,64163,64164,64165,64166,64167,64168,64169,64170,64171,64172,64173,64174,64175,64176,64177,64178,64179,64180,64181,64182,64183,64184,64185,64186,64187,64188,64189,64190,64191,64192,64193,64194,64195,64196,64197,64198,64199,64200,64201,64202,64203,64204,64205,64206,64207,64208,64209,64210,64211,64212,64213,64214,64215,64216,64217,64256,64257,64258,64259,64260,64261,64262,64275,64276,64277,64278,64279,64285,64287,64288,64289,64290,64291,64292,64293,64294,64295,64296,64298,64299,64300,64301,64302,64303,64304,64305,64306,64307,64308,64309,64310,64312,64313,64314,64315,64316,64318,64320,64321,64323,64324,64326,64327,64328,64329,64330,64331,64332,64333,64334,64335,64336,64337,64338,64339,64340,64341,64342,64343,64344,64345,64346,64347,64348,64349,64350,64351,64352,64353,64354,64355,64356,64357,64358,64359,64360,64361,64362,64363,64364,64365,64366,64367,64368,64369,64370,64371,64372,64373,64374,64375,64376,64377,64378,64379,64380,64381,64382,64383,64384,64385,64386,64387,64388,64389,64390,64391,64392,64393,64394,64395,64396,64397,64398,64399,64400,64401,64402,64403,64404,64405,64406,64407,64408,64409,64410,64411,64412,64413,64414,64415,64416,64417,64418,64419,64420,64421,64422,64423,64424,64425,64426,64427,64428,64429,64430,64431,64432,64433,64467,64468,64469,64470,64471,64472,64473,64474,64475,64476,64477,64478,64479,64480,64481,64482,64483,64484,64485,64486,64487,64488,64489,64490,64491,64492,64493,64494,64495,64496,64497,64498,64499,64500,64501,64502,64503,64504,64505,64506,64507,64508,64509,64510,64511,64512,64513,64514,64515,64516,64517,64518,64519,64520,64521,64522,64523,64524,64525,64526,64527,64528,64529,64530,64531,64532,64533,64534,64535,64536,64537,64538,64539,64540,64541,64542,64543,64544,64545,64546,64547,64548,64549,64550,64551,64552,64553,64554,64555,64556,64557,64558,64559,64560,64561,64562,64563,64564,64565,64566,64567,64568,64569,64570,64571,64572,64573,64574,64575,64576,64577,64578,64579,64580,64581,64582,64583,64584,64585,64586,64587,64588,64589,64590,64591,64592,64593,64594,64595,64596,64597,64598,64599,64600,64601,64602,64603,64604,64605,64606,64607,64608,64609,64610,64611,64612,64613,64614,64615,64616,64617,64618,64619,64620,64621,64622,64623,64624,64625,64626,64627,64628,64629,64630,64631,64632,64633,64634,64635,64636,64637,64638,64639,64640,64641,64642,64643,64644,64645,64646,64647,64648,64649,64650,64651,64652,64653,64654,64655,64656,64657,64658,64659,64660,64661,64662,64663,64664,64665,64666,64667,64668,64669,64670,64671,64672,64673,64674,64675,64676,64677,64678,64679,64680,64681,64682,64683,64684,64685,64686,64687,64688,64689,64690,64691,64692,64693,64694,64695,64696,64697,64698,64699,64700,64701,64702,64703,64704,64705,64706,64707,64708,64709,64710,64711,64712,64713,64714,64715,64716,64717,64718,64719,64720,64721,64722,64723,64724,64725,64726,64727,64728,64729,64730,64731,64732,64733,64734,64735,64736,64737,64738,64739,64740,64741,64742,64743,64744,64745,64746,64747,64748,64749,64750,64751,64752,64753,64754,64755,64756,64757,64758,64759,64760,64761,64762,64763,64764,64765,64766,64767,64768,64769,64770,64771,64772,64773,64774,64775,64776,64777,64778,64779,64780,64781,64782,64783,64784,64785,64786,64787,64788,64789,64790,64791,64792,64793,64794,64795,64796,64797,64798,64799,64800,64801,64802,64803,64804,64805,64806,64807,64808,64809,64810,64811,64812,64813,64814,64815,64816,64817,64818,64819,64820,64821,64822,64823,64824,64825,64826,64827,64828,64829,64848,64849,64850,64851,64852,64853,64854,64855,64856,64857,64858,64859,64860,64861,64862,64863,64864,64865,64866,64867,64868,64869,64870,64871,64872,64873,64874,64875,64876,64877,64878,64879,64880,64881,64882,64883,64884,64885,64886,64887,64888,64889,64890,64891,64892,64893,64894,64895,64896,64897,64898,64899,64900,64901,64902,64903,64904,64905,64906,64907,64908,64909,64910,64911,64914,64915,64916,64917,64918,64919,64920,64921,64922,64923,64924,64925,64926,64927,64928,64929,64930,64931,64932,64933,64934,64935,64936,64937,64938,64939,64940,64941,64942,64943,64944,64945,64946,64947,64948,64949,64950,64951,64952,64953,64954,64955,64956,64957,64958,64959,64960,64961,64962,64963,64964,64965,64966,64967,65008,65009,65010,65011,65012,65013,65014,65015,65016,65017,65018,65019,65136,65137,65138,65139,65140,65142,65143,65144,65145,65146,65147,65148,65149,65150,65151,65152,65153,65154,65155,65156,65157,65158,65159,65160,65161,65162,65163,65164,65165,65166,65167,65168,65169,65170,65171,65172,65173,65174,65175,65176,65177,65178,65179,65180,65181,65182,65183,65184,65185,65186,65187,65188,65189,65190,65191,65192,65193,65194,65195,65196,65197,65198,65199,65200,65201,65202,65203,65204,65205,65206,65207,65208,65209,65210,65211,65212,65213,65214,65215,65216,65217,65218,65219,65220,65221,65222,65223,65224,65225,65226,65227,65228,65229,65230,65231,65232,65233,65234,65235,65236,65237,65238,65239,65240,65241,65242,65243,65244,65245,65246,65247,65248,65249,65250,65251,65252,65253,65254,65255,65256,65257,65258,65259,65260,65261,65262,65263,65264,65265,65266,65267,65268,65269,65270,65271,65272,65273,65274,65275,65276,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,65382,65383,65384,65385,65386,65387,65388,65389,65390,65391,65392,65393,65394,65395,65396,65397,65398,65399,65400,65401,65402,65403,65404,65405,65406,65407,65408,65409,65410,65411,65412,65413,65414,65415,65416,65417,65418,65419,65420,65421,65422,65423,65424,65425,65426,65427,65428,65429,65430,65431,65432,65433,65434,65435,65436,65437,65438,65439,65440,65441,65442,65443,65444,65445,65446,65447,65448,65449,65450,65451,65452,65453,65454,65455,65456,65457,65458,65459,65460,65461,65462,65463,65464,65465,65466,65467,65468,65469,65470,65474,65475,65476,65477,65478,65479,65482,65483,65484,65485,65486,65487,65490,65491,65492,65493,65494,65495,65498,65499,65500'; +var arr = str.split(',').map(function(code) { + return parseInt(code, 10); +}); +module.exports = arr; \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/dist/jshint-rhino.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/dist/jshint-rhino.js new file mode 100644 index 00000000..93310bc8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/jshint/dist/jshint-rhino.js @@ -0,0 +1,24171 @@ +#!/usr/bin/env rhino +var window = {}; +/*! 2.9.1 */ +var JSHINT; +if (typeof window === 'undefined') window = {}; +(function () { +var require; +require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o= 65 && i <= 90 || // A-Z + i === 95 || // _ + i >= 97 && i <= 122; // a-z +} + +var identifierPartTable = []; + +for (var i = 0; i < 128; i++) { + identifierPartTable[i] = + identifierStartTable[i] || // $, _, A-Z, a-z + i >= 48 && i <= 57; // 0-9 +} + +module.exports = { + asciiIdentifierStartTable: identifierStartTable, + asciiIdentifierPartTable: identifierPartTable +}; + +},{}],2:[function(require,module,exports){ +var str = '768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,1155,1156,1157,1158,1159,1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1471,1473,1474,1476,1477,1479,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1648,1750,1751,1752,1753,1754,1755,1756,1759,1760,1761,1762,1763,1764,1767,1768,1770,1771,1772,1773,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1809,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,2027,2028,2029,2030,2031,2032,2033,2034,2035,2070,2071,2072,2073,2075,2076,2077,2078,2079,2080,2081,2082,2083,2085,2086,2087,2089,2090,2091,2092,2093,2137,2138,2139,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2304,2305,2306,2307,2362,2363,2364,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2385,2386,2387,2388,2389,2390,2391,2402,2403,2406,2407,2408,2409,2410,2411,2412,2413,2414,2415,2433,2434,2435,2492,2494,2495,2496,2497,2498,2499,2500,2503,2504,2507,2508,2509,2519,2530,2531,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2561,2562,2563,2620,2622,2623,2624,2625,2626,2631,2632,2635,2636,2637,2641,2662,2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2677,2689,2690,2691,2748,2750,2751,2752,2753,2754,2755,2756,2757,2759,2760,2761,2763,2764,2765,2786,2787,2790,2791,2792,2793,2794,2795,2796,2797,2798,2799,2817,2818,2819,2876,2878,2879,2880,2881,2882,2883,2884,2887,2888,2891,2892,2893,2902,2903,2914,2915,2918,2919,2920,2921,2922,2923,2924,2925,2926,2927,2946,3006,3007,3008,3009,3010,3014,3015,3016,3018,3019,3020,3021,3031,3046,3047,3048,3049,3050,3051,3052,3053,3054,3055,3073,3074,3075,3134,3135,3136,3137,3138,3139,3140,3142,3143,3144,3146,3147,3148,3149,3157,3158,3170,3171,3174,3175,3176,3177,3178,3179,3180,3181,3182,3183,3202,3203,3260,3262,3263,3264,3265,3266,3267,3268,3270,3271,3272,3274,3275,3276,3277,3285,3286,3298,3299,3302,3303,3304,3305,3306,3307,3308,3309,3310,3311,3330,3331,3390,3391,3392,3393,3394,3395,3396,3398,3399,3400,3402,3403,3404,3405,3415,3426,3427,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439,3458,3459,3530,3535,3536,3537,3538,3539,3540,3542,3544,3545,3546,3547,3548,3549,3550,3551,3570,3571,3633,3636,3637,3638,3639,3640,3641,3642,3655,3656,3657,3658,3659,3660,3661,3662,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3761,3764,3765,3766,3767,3768,3769,3771,3772,3784,3785,3786,3787,3788,3789,3792,3793,3794,3795,3796,3797,3798,3799,3800,3801,3864,3865,3872,3873,3874,3875,3876,3877,3878,3879,3880,3881,3893,3895,3897,3902,3903,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964,3965,3966,3967,3968,3969,3970,3971,3972,3974,3975,3981,3982,3983,3984,3985,3986,3987,3988,3989,3990,3991,3993,3994,3995,3996,3997,3998,3999,4000,4001,4002,4003,4004,4005,4006,4007,4008,4009,4010,4011,4012,4013,4014,4015,4016,4017,4018,4019,4020,4021,4022,4023,4024,4025,4026,4027,4028,4038,4139,4140,4141,4142,4143,4144,4145,4146,4147,4148,4149,4150,4151,4152,4153,4154,4155,4156,4157,4158,4160,4161,4162,4163,4164,4165,4166,4167,4168,4169,4182,4183,4184,4185,4190,4191,4192,4194,4195,4196,4199,4200,4201,4202,4203,4204,4205,4209,4210,4211,4212,4226,4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4239,4240,4241,4242,4243,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4957,4958,4959,5906,5907,5908,5938,5939,5940,5970,5971,6002,6003,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6109,6112,6113,6114,6115,6116,6117,6118,6119,6120,6121,6155,6156,6157,6160,6161,6162,6163,6164,6165,6166,6167,6168,6169,6313,6432,6433,6434,6435,6436,6437,6438,6439,6440,6441,6442,6443,6448,6449,6450,6451,6452,6453,6454,6455,6456,6457,6458,6459,6470,6471,6472,6473,6474,6475,6476,6477,6478,6479,6576,6577,6578,6579,6580,6581,6582,6583,6584,6585,6586,6587,6588,6589,6590,6591,6592,6600,6601,6608,6609,6610,6611,6612,6613,6614,6615,6616,6617,6679,6680,6681,6682,6683,6741,6742,6743,6744,6745,6746,6747,6748,6749,6750,6752,6753,6754,6755,6756,6757,6758,6759,6760,6761,6762,6763,6764,6765,6766,6767,6768,6769,6770,6771,6772,6773,6774,6775,6776,6777,6778,6779,6780,6783,6784,6785,6786,6787,6788,6789,6790,6791,6792,6793,6800,6801,6802,6803,6804,6805,6806,6807,6808,6809,6912,6913,6914,6915,6916,6964,6965,6966,6967,6968,6969,6970,6971,6972,6973,6974,6975,6976,6977,6978,6979,6980,6992,6993,6994,6995,6996,6997,6998,6999,7000,7001,7019,7020,7021,7022,7023,7024,7025,7026,7027,7040,7041,7042,7073,7074,7075,7076,7077,7078,7079,7080,7081,7082,7083,7084,7085,7088,7089,7090,7091,7092,7093,7094,7095,7096,7097,7142,7143,7144,7145,7146,7147,7148,7149,7150,7151,7152,7153,7154,7155,7204,7205,7206,7207,7208,7209,7210,7211,7212,7213,7214,7215,7216,7217,7218,7219,7220,7221,7222,7223,7232,7233,7234,7235,7236,7237,7238,7239,7240,7241,7248,7249,7250,7251,7252,7253,7254,7255,7256,7257,7376,7377,7378,7380,7381,7382,7383,7384,7385,7386,7387,7388,7389,7390,7391,7392,7393,7394,7395,7396,7397,7398,7399,7400,7405,7410,7411,7412,7616,7617,7618,7619,7620,7621,7622,7623,7624,7625,7626,7627,7628,7629,7630,7631,7632,7633,7634,7635,7636,7637,7638,7639,7640,7641,7642,7643,7644,7645,7646,7647,7648,7649,7650,7651,7652,7653,7654,7676,7677,7678,7679,8204,8205,8255,8256,8276,8400,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,8411,8412,8417,8421,8422,8423,8424,8425,8426,8427,8428,8429,8430,8431,8432,11503,11504,11505,11647,11744,11745,11746,11747,11748,11749,11750,11751,11752,11753,11754,11755,11756,11757,11758,11759,11760,11761,11762,11763,11764,11765,11766,11767,11768,11769,11770,11771,11772,11773,11774,11775,12330,12331,12332,12333,12334,12335,12441,12442,42528,42529,42530,42531,42532,42533,42534,42535,42536,42537,42607,42612,42613,42614,42615,42616,42617,42618,42619,42620,42621,42655,42736,42737,43010,43014,43019,43043,43044,43045,43046,43047,43136,43137,43188,43189,43190,43191,43192,43193,43194,43195,43196,43197,43198,43199,43200,43201,43202,43203,43204,43216,43217,43218,43219,43220,43221,43222,43223,43224,43225,43232,43233,43234,43235,43236,43237,43238,43239,43240,43241,43242,43243,43244,43245,43246,43247,43248,43249,43264,43265,43266,43267,43268,43269,43270,43271,43272,43273,43302,43303,43304,43305,43306,43307,43308,43309,43335,43336,43337,43338,43339,43340,43341,43342,43343,43344,43345,43346,43347,43392,43393,43394,43395,43443,43444,43445,43446,43447,43448,43449,43450,43451,43452,43453,43454,43455,43456,43472,43473,43474,43475,43476,43477,43478,43479,43480,43481,43561,43562,43563,43564,43565,43566,43567,43568,43569,43570,43571,43572,43573,43574,43587,43596,43597,43600,43601,43602,43603,43604,43605,43606,43607,43608,43609,43643,43696,43698,43699,43700,43703,43704,43710,43711,43713,43755,43756,43757,43758,43759,43765,43766,44003,44004,44005,44006,44007,44008,44009,44010,44012,44013,44016,44017,44018,44019,44020,44021,44022,44023,44024,44025,64286,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65056,65057,65058,65059,65060,65061,65062,65075,65076,65101,65102,65103,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,65343'; +var arr = str.split(',').map(function(code) { + return parseInt(code, 10); +}); +module.exports = arr; +},{}],3:[function(require,module,exports){ +var str = '170,181,186,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,710,711,712,713,714,715,716,717,718,719,720,721,736,737,738,739,740,748,750,880,881,882,883,884,886,887,890,891,892,893,902,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1369,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1520,1521,1522,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1646,1647,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1749,1765,1766,1774,1775,1786,1787,1788,1791,1808,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1969,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2036,2037,2042,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2074,2084,2088,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2208,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,2308,2309,2310,2311,2312,2313,2314,2315,2316,2317,2318,2319,2320,2321,2322,2323,2324,2325,2326,2327,2328,2329,2330,2331,2332,2333,2334,2335,2336,2337,2338,2339,2340,2341,2342,2343,2344,2345,2346,2347,2348,2349,2350,2351,2352,2353,2354,2355,2356,2357,2358,2359,2360,2361,2365,2384,2392,2393,2394,2395,2396,2397,2398,2399,2400,2401,2417,2418,2419,2420,2421,2422,2423,2425,2426,2427,2428,2429,2430,2431,2437,2438,2439,2440,2441,2442,2443,2444,2447,2448,2451,2452,2453,2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2474,2475,2476,2477,2478,2479,2480,2482,2486,2487,2488,2489,2493,2510,2524,2525,2527,2528,2529,2544,2545,2565,2566,2567,2568,2569,2570,2575,2576,2579,2580,2581,2582,2583,2584,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2602,2603,2604,2605,2606,2607,2608,2610,2611,2613,2614,2616,2617,2649,2650,2651,2652,2654,2674,2675,2676,2693,2694,2695,2696,2697,2698,2699,2700,2701,2703,2704,2705,2707,2708,2709,2710,2711,2712,2713,2714,2715,2716,2717,2718,2719,2720,2721,2722,2723,2724,2725,2726,2727,2728,2730,2731,2732,2733,2734,2735,2736,2738,2739,2741,2742,2743,2744,2745,2749,2768,2784,2785,2821,2822,2823,2824,2825,2826,2827,2828,2831,2832,2835,2836,2837,2838,2839,2840,2841,2842,2843,2844,2845,2846,2847,2848,2849,2850,2851,2852,2853,2854,2855,2856,2858,2859,2860,2861,2862,2863,2864,2866,2867,2869,2870,2871,2872,2873,2877,2908,2909,2911,2912,2913,2929,2947,2949,2950,2951,2952,2953,2954,2958,2959,2960,2962,2963,2964,2965,2969,2970,2972,2974,2975,2979,2980,2984,2985,2986,2990,2991,2992,2993,2994,2995,2996,2997,2998,2999,3000,3001,3024,3077,3078,3079,3080,3081,3082,3083,3084,3086,3087,3088,3090,3091,3092,3093,3094,3095,3096,3097,3098,3099,3100,3101,3102,3103,3104,3105,3106,3107,3108,3109,3110,3111,3112,3114,3115,3116,3117,3118,3119,3120,3121,3122,3123,3125,3126,3127,3128,3129,3133,3160,3161,3168,3169,3205,3206,3207,3208,3209,3210,3211,3212,3214,3215,3216,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3242,3243,3244,3245,3246,3247,3248,3249,3250,3251,3253,3254,3255,3256,3257,3261,3294,3296,3297,3313,3314,3333,3334,3335,3336,3337,3338,3339,3340,3342,3343,3344,3346,3347,3348,3349,3350,3351,3352,3353,3354,3355,3356,3357,3358,3359,3360,3361,3362,3363,3364,3365,3366,3367,3368,3369,3370,3371,3372,3373,3374,3375,3376,3377,3378,3379,3380,3381,3382,3383,3384,3385,3386,3389,3406,3424,3425,3450,3451,3452,3453,3454,3455,3461,3462,3463,3464,3465,3466,3467,3468,3469,3470,3471,3472,3473,3474,3475,3476,3477,3478,3482,3483,3484,3485,3486,3487,3488,3489,3490,3491,3492,3493,3494,3495,3496,3497,3498,3499,3500,3501,3502,3503,3504,3505,3507,3508,3509,3510,3511,3512,3513,3514,3515,3517,3520,3521,3522,3523,3524,3525,3526,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3634,3635,3648,3649,3650,3651,3652,3653,3654,3713,3714,3716,3719,3720,3722,3725,3732,3733,3734,3735,3737,3738,3739,3740,3741,3742,3743,3745,3746,3747,3749,3751,3754,3755,3757,3758,3759,3760,3762,3763,3773,3776,3777,3778,3779,3780,3782,3804,3805,3806,3807,3840,3904,3905,3906,3907,3908,3909,3910,3911,3913,3914,3915,3916,3917,3918,3919,3920,3921,3922,3923,3924,3925,3926,3927,3928,3929,3930,3931,3932,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942,3943,3944,3945,3946,3947,3948,3976,3977,3978,3979,3980,4096,4097,4098,4099,4100,4101,4102,4103,4104,4105,4106,4107,4108,4109,4110,4111,4112,4113,4114,4115,4116,4117,4118,4119,4120,4121,4122,4123,4124,4125,4126,4127,4128,4129,4130,4131,4132,4133,4134,4135,4136,4137,4138,4159,4176,4177,4178,4179,4180,4181,4186,4187,4188,4189,4193,4197,4198,4206,4207,4208,4213,4214,4215,4216,4217,4218,4219,4220,4221,4222,4223,4224,4225,4238,4256,4257,4258,4259,4260,4261,4262,4263,4264,4265,4266,4267,4268,4269,4270,4271,4272,4273,4274,4275,4276,4277,4278,4279,4280,4281,4282,4283,4284,4285,4286,4287,4288,4289,4290,4291,4292,4293,4295,4301,4304,4305,4306,4307,4308,4309,4310,4311,4312,4313,4314,4315,4316,4317,4318,4319,4320,4321,4322,4323,4324,4325,4326,4327,4328,4329,4330,4331,4332,4333,4334,4335,4336,4337,4338,4339,4340,4341,4342,4343,4344,4345,4346,4348,4349,4350,4351,4352,4353,4354,4355,4356,4357,4358,4359,4360,4361,4362,4363,4364,4365,4366,4367,4368,4369,4370,4371,4372,4373,4374,4375,4376,4377,4378,4379,4380,4381,4382,4383,4384,4385,4386,4387,4388,4389,4390,4391,4392,4393,4394,4395,4396,4397,4398,4399,4400,4401,4402,4403,4404,4405,4406,4407,4408,4409,4410,4411,4412,4413,4414,4415,4416,4417,4418,4419,4420,4421,4422,4423,4424,4425,4426,4427,4428,4429,4430,4431,4432,4433,4434,4435,4436,4437,4438,4439,4440,4441,4442,4443,4444,4445,4446,4447,4448,4449,4450,4451,4452,4453,4454,4455,4456,4457,4458,4459,4460,4461,4462,4463,4464,4465,4466,4467,4468,4469,4470,4471,4472,4473,4474,4475,4476,4477,4478,4479,4480,4481,4482,4483,4484,4485,4486,4487,4488,4489,4490,4491,4492,4493,4494,4495,4496,4497,4498,4499,4500,4501,4502,4503,4504,4505,4506,4507,4508,4509,4510,4511,4512,4513,4514,4515,4516,4517,4518,4519,4520,4521,4522,4523,4524,4525,4526,4527,4528,4529,4530,4531,4532,4533,4534,4535,4536,4537,4538,4539,4540,4541,4542,4543,4544,4545,4546,4547,4548,4549,4550,4551,4552,4553,4554,4555,4556,4557,4558,4559,4560,4561,4562,4563,4564,4565,4566,4567,4568,4569,4570,4571,4572,4573,4574,4575,4576,4577,4578,4579,4580,4581,4582,4583,4584,4585,4586,4587,4588,4589,4590,4591,4592,4593,4594,4595,4596,4597,4598,4599,4600,4601,4602,4603,4604,4605,4606,4607,4608,4609,4610,4611,4612,4613,4614,4615,4616,4617,4618,4619,4620,4621,4622,4623,4624,4625,4626,4627,4628,4629,4630,4631,4632,4633,4634,4635,4636,4637,4638,4639,4640,4641,4642,4643,4644,4645,4646,4647,4648,4649,4650,4651,4652,4653,4654,4655,4656,4657,4658,4659,4660,4661,4662,4663,4664,4665,4666,4667,4668,4669,4670,4671,4672,4673,4674,4675,4676,4677,4678,4679,4680,4682,4683,4684,4685,4688,4689,4690,4691,4692,4693,4694,4696,4698,4699,4700,4701,4704,4705,4706,4707,4708,4709,4710,4711,4712,4713,4714,4715,4716,4717,4718,4719,4720,4721,4722,4723,4724,4725,4726,4727,4728,4729,4730,4731,4732,4733,4734,4735,4736,4737,4738,4739,4740,4741,4742,4743,4744,4746,4747,4748,4749,4752,4753,4754,4755,4756,4757,4758,4759,4760,4761,4762,4763,4764,4765,4766,4767,4768,4769,4770,4771,4772,4773,4774,4775,4776,4777,4778,4779,4780,4781,4782,4783,4784,4786,4787,4788,4789,4792,4793,4794,4795,4796,4797,4798,4800,4802,4803,4804,4805,4808,4809,4810,4811,4812,4813,4814,4815,4816,4817,4818,4819,4820,4821,4822,4824,4825,4826,4827,4828,4829,4830,4831,4832,4833,4834,4835,4836,4837,4838,4839,4840,4841,4842,4843,4844,4845,4846,4847,4848,4849,4850,4851,4852,4853,4854,4855,4856,4857,4858,4859,4860,4861,4862,4863,4864,4865,4866,4867,4868,4869,4870,4871,4872,4873,4874,4875,4876,4877,4878,4879,4880,4882,4883,4884,4885,4888,4889,4890,4891,4892,4893,4894,4895,4896,4897,4898,4899,4900,4901,4902,4903,4904,4905,4906,4907,4908,4909,4910,4911,4912,4913,4914,4915,4916,4917,4918,4919,4920,4921,4922,4923,4924,4925,4926,4927,4928,4929,4930,4931,4932,4933,4934,4935,4936,4937,4938,4939,4940,4941,4942,4943,4944,4945,4946,4947,4948,4949,4950,4951,4952,4953,4954,4992,4993,4994,4995,4996,4997,4998,4999,5000,5001,5002,5003,5004,5005,5006,5007,5024,5025,5026,5027,5028,5029,5030,5031,5032,5033,5034,5035,5036,5037,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5053,5054,5055,5056,5057,5058,5059,5060,5061,5062,5063,5064,5065,5066,5067,5068,5069,5070,5071,5072,5073,5074,5075,5076,5077,5078,5079,5080,5081,5082,5083,5084,5085,5086,5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102,5103,5104,5105,5106,5107,5108,5121,5122,5123,5124,5125,5126,5127,5128,5129,5130,5131,5132,5133,5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149,5150,5151,5152,5153,5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164,5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,5176,5177,5178,5179,5180,5181,5182,5183,5184,5185,5186,5187,5188,5189,5190,5191,5192,5193,5194,5195,5196,5197,5198,5199,5200,5201,5202,5203,5204,5205,5206,5207,5208,5209,5210,5211,5212,5213,5214,5215,5216,5217,5218,5219,5220,5221,5222,5223,5224,5225,5226,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,5237,5238,5239,5240,5241,5242,5243,5244,5245,5246,5247,5248,5249,5250,5251,5252,5253,5254,5255,5256,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267,5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283,5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299,5300,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315,5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331,5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5347,5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363,5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379,5380,5381,5382,5383,5384,5385,5386,5387,5388,5389,5390,5391,5392,5393,5394,5395,5396,5397,5398,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408,5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5421,5422,5423,5424,5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440,5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456,5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472,5473,5474,5475,5476,5477,5478,5479,5480,5481,5482,5483,5484,5485,5486,5487,5488,5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520,5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536,5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,5549,5550,5551,5552,5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568,5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584,5585,5586,5587,5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600,5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632,5633,5634,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648,5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664,5665,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,5677,5678,5679,5680,5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696,5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712,5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728,5729,5730,5731,5732,5733,5734,5735,5736,5737,5738,5739,5740,5743,5744,5745,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5761,5762,5763,5764,5765,5766,5767,5768,5769,5770,5771,5772,5773,5774,5775,5776,5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5792,5793,5794,5795,5796,5797,5798,5799,5800,5801,5802,5803,5804,5805,5806,5807,5808,5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824,5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856,5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5870,5871,5872,5888,5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5902,5903,5904,5905,5920,5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936,5937,5952,5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968,5969,5984,5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5998,5999,6000,6016,6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032,6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6065,6066,6067,6103,6108,6176,6177,6178,6179,6180,6181,6182,6183,6184,6185,6186,6187,6188,6189,6190,6191,6192,6193,6194,6195,6196,6197,6198,6199,6200,6201,6202,6203,6204,6205,6206,6207,6208,6209,6210,6211,6212,6213,6214,6215,6216,6217,6218,6219,6220,6221,6222,6223,6224,6225,6226,6227,6228,6229,6230,6231,6232,6233,6234,6235,6236,6237,6238,6239,6240,6241,6242,6243,6244,6245,6246,6247,6248,6249,6250,6251,6252,6253,6254,6255,6256,6257,6258,6259,6260,6261,6262,6263,6272,6273,6274,6275,6276,6277,6278,6279,6280,6281,6282,6283,6284,6285,6286,6287,6288,6289,6290,6291,6292,6293,6294,6295,6296,6297,6298,6299,6300,6301,6302,6303,6304,6305,6306,6307,6308,6309,6310,6311,6312,6314,6320,6321,6322,6323,6324,6325,6326,6327,6328,6329,6330,6331,6332,6333,6334,6335,6336,6337,6338,6339,6340,6341,6342,6343,6344,6345,6346,6347,6348,6349,6350,6351,6352,6353,6354,6355,6356,6357,6358,6359,6360,6361,6362,6363,6364,6365,6366,6367,6368,6369,6370,6371,6372,6373,6374,6375,6376,6377,6378,6379,6380,6381,6382,6383,6384,6385,6386,6387,6388,6389,6400,6401,6402,6403,6404,6405,6406,6407,6408,6409,6410,6411,6412,6413,6414,6415,6416,6417,6418,6419,6420,6421,6422,6423,6424,6425,6426,6427,6428,6480,6481,6482,6483,6484,6485,6486,6487,6488,6489,6490,6491,6492,6493,6494,6495,6496,6497,6498,6499,6500,6501,6502,6503,6504,6505,6506,6507,6508,6509,6512,6513,6514,6515,6516,6528,6529,6530,6531,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6544,6545,6546,6547,6548,6549,6550,6551,6552,6553,6554,6555,6556,6557,6558,6559,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,6570,6571,6593,6594,6595,6596,6597,6598,6599,6656,6657,6658,6659,6660,6661,6662,6663,6664,6665,6666,6667,6668,6669,6670,6671,6672,6673,6674,6675,6676,6677,6678,6688,6689,6690,6691,6692,6693,6694,6695,6696,6697,6698,6699,6700,6701,6702,6703,6704,6705,6706,6707,6708,6709,6710,6711,6712,6713,6714,6715,6716,6717,6718,6719,6720,6721,6722,6723,6724,6725,6726,6727,6728,6729,6730,6731,6732,6733,6734,6735,6736,6737,6738,6739,6740,6823,6917,6918,6919,6920,6921,6922,6923,6924,6925,6926,6927,6928,6929,6930,6931,6932,6933,6934,6935,6936,6937,6938,6939,6940,6941,6942,6943,6944,6945,6946,6947,6948,6949,6950,6951,6952,6953,6954,6955,6956,6957,6958,6959,6960,6961,6962,6963,6981,6982,6983,6984,6985,6986,6987,7043,7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7055,7056,7057,7058,7059,7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,7071,7072,7086,7087,7098,7099,7100,7101,7102,7103,7104,7105,7106,7107,7108,7109,7110,7111,7112,7113,7114,7115,7116,7117,7118,7119,7120,7121,7122,7123,7124,7125,7126,7127,7128,7129,7130,7131,7132,7133,7134,7135,7136,7137,7138,7139,7140,7141,7168,7169,7170,7171,7172,7173,7174,7175,7176,7177,7178,7179,7180,7181,7182,7183,7184,7185,7186,7187,7188,7189,7190,7191,7192,7193,7194,7195,7196,7197,7198,7199,7200,7201,7202,7203,7245,7246,7247,7258,7259,7260,7261,7262,7263,7264,7265,7266,7267,7268,7269,7270,7271,7272,7273,7274,7275,7276,7277,7278,7279,7280,7281,7282,7283,7284,7285,7286,7287,7288,7289,7290,7291,7292,7293,7401,7402,7403,7404,7406,7407,7408,7409,7413,7414,7424,7425,7426,7427,7428,7429,7430,7431,7432,7433,7434,7435,7436,7437,7438,7439,7440,7441,7442,7443,7444,7445,7446,7447,7448,7449,7450,7451,7452,7453,7454,7455,7456,7457,7458,7459,7460,7461,7462,7463,7464,7465,7466,7467,7468,7469,7470,7471,7472,7473,7474,7475,7476,7477,7478,7479,7480,7481,7482,7483,7484,7485,7486,7487,7488,7489,7490,7491,7492,7493,7494,7495,7496,7497,7498,7499,7500,7501,7502,7503,7504,7505,7506,7507,7508,7509,7510,7511,7512,7513,7514,7515,7516,7517,7518,7519,7520,7521,7522,7523,7524,7525,7526,7527,7528,7529,7530,7531,7532,7533,7534,7535,7536,7537,7538,7539,7540,7541,7542,7543,7544,7545,7546,7547,7548,7549,7550,7551,7552,7553,7554,7555,7556,7557,7558,7559,7560,7561,7562,7563,7564,7565,7566,7567,7568,7569,7570,7571,7572,7573,7574,7575,7576,7577,7578,7579,7580,7581,7582,7583,7584,7585,7586,7587,7588,7589,7590,7591,7592,7593,7594,7595,7596,7597,7598,7599,7600,7601,7602,7603,7604,7605,7606,7607,7608,7609,7610,7611,7612,7613,7614,7615,7680,7681,7682,7683,7684,7685,7686,7687,7688,7689,7690,7691,7692,7693,7694,7695,7696,7697,7698,7699,7700,7701,7702,7703,7704,7705,7706,7707,7708,7709,7710,7711,7712,7713,7714,7715,7716,7717,7718,7719,7720,7721,7722,7723,7724,7725,7726,7727,7728,7729,7730,7731,7732,7733,7734,7735,7736,7737,7738,7739,7740,7741,7742,7743,7744,7745,7746,7747,7748,7749,7750,7751,7752,7753,7754,7755,7756,7757,7758,7759,7760,7761,7762,7763,7764,7765,7766,7767,7768,7769,7770,7771,7772,7773,7774,7775,7776,7777,7778,7779,7780,7781,7782,7783,7784,7785,7786,7787,7788,7789,7790,7791,7792,7793,7794,7795,7796,7797,7798,7799,7800,7801,7802,7803,7804,7805,7806,7807,7808,7809,7810,7811,7812,7813,7814,7815,7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,7826,7827,7828,7829,7830,7831,7832,7833,7834,7835,7836,7837,7838,7839,7840,7841,7842,7843,7844,7845,7846,7847,7848,7849,7850,7851,7852,7853,7854,7855,7856,7857,7858,7859,7860,7861,7862,7863,7864,7865,7866,7867,7868,7869,7870,7871,7872,7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886,7887,7888,7889,7890,7891,7892,7893,7894,7895,7896,7897,7898,7899,7900,7901,7902,7903,7904,7905,7906,7907,7908,7909,7910,7911,7912,7913,7914,7915,7916,7917,7918,7919,7920,7921,7922,7923,7924,7925,7926,7927,7928,7929,7930,7931,7932,7933,7934,7935,7936,7937,7938,7939,7940,7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7951,7952,7953,7954,7955,7956,7957,7960,7961,7962,7963,7964,7965,7968,7969,7970,7971,7972,7973,7974,7975,7976,7977,7978,7979,7980,7981,7982,7983,7984,7985,7986,7987,7988,7989,7990,7991,7992,7993,7994,7995,7996,7997,7998,7999,8000,8001,8002,8003,8004,8005,8008,8009,8010,8011,8012,8013,8016,8017,8018,8019,8020,8021,8022,8023,8025,8027,8029,8031,8032,8033,8034,8035,8036,8037,8038,8039,8040,8041,8042,8043,8044,8045,8046,8047,8048,8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8064,8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8096,8097,8098,8099,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111,8112,8113,8114,8115,8116,8118,8119,8120,8121,8122,8123,8124,8126,8130,8131,8132,8134,8135,8136,8137,8138,8139,8140,8144,8145,8146,8147,8150,8151,8152,8153,8154,8155,8160,8161,8162,8163,8164,8165,8166,8167,8168,8169,8170,8171,8172,8178,8179,8180,8182,8183,8184,8185,8186,8187,8188,8305,8319,8336,8337,8338,8339,8340,8341,8342,8343,8344,8345,8346,8347,8348,8450,8455,8458,8459,8460,8461,8462,8463,8464,8465,8466,8467,8469,8473,8474,8475,8476,8477,8484,8486,8488,8490,8491,8492,8493,8495,8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8508,8509,8510,8511,8517,8518,8519,8520,8521,8526,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,8556,8557,8558,8559,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8570,8571,8572,8573,8574,8575,8576,8577,8578,8579,8580,8581,8582,8583,8584,11264,11265,11266,11267,11268,11269,11270,11271,11272,11273,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11284,11285,11286,11287,11288,11289,11290,11291,11292,11293,11294,11295,11296,11297,11298,11299,11300,11301,11302,11303,11304,11305,11306,11307,11308,11309,11310,11312,11313,11314,11315,11316,11317,11318,11319,11320,11321,11322,11323,11324,11325,11326,11327,11328,11329,11330,11331,11332,11333,11334,11335,11336,11337,11338,11339,11340,11341,11342,11343,11344,11345,11346,11347,11348,11349,11350,11351,11352,11353,11354,11355,11356,11357,11358,11360,11361,11362,11363,11364,11365,11366,11367,11368,11369,11370,11371,11372,11373,11374,11375,11376,11377,11378,11379,11380,11381,11382,11383,11384,11385,11386,11387,11388,11389,11390,11391,11392,11393,11394,11395,11396,11397,11398,11399,11400,11401,11402,11403,11404,11405,11406,11407,11408,11409,11410,11411,11412,11413,11414,11415,11416,11417,11418,11419,11420,11421,11422,11423,11424,11425,11426,11427,11428,11429,11430,11431,11432,11433,11434,11435,11436,11437,11438,11439,11440,11441,11442,11443,11444,11445,11446,11447,11448,11449,11450,11451,11452,11453,11454,11455,11456,11457,11458,11459,11460,11461,11462,11463,11464,11465,11466,11467,11468,11469,11470,11471,11472,11473,11474,11475,11476,11477,11478,11479,11480,11481,11482,11483,11484,11485,11486,11487,11488,11489,11490,11491,11492,11499,11500,11501,11502,11506,11507,11520,11521,11522,11523,11524,11525,11526,11527,11528,11529,11530,11531,11532,11533,11534,11535,11536,11537,11538,11539,11540,11541,11542,11543,11544,11545,11546,11547,11548,11549,11550,11551,11552,11553,11554,11555,11556,11557,11559,11565,11568,11569,11570,11571,11572,11573,11574,11575,11576,11577,11578,11579,11580,11581,11582,11583,11584,11585,11586,11587,11588,11589,11590,11591,11592,11593,11594,11595,11596,11597,11598,11599,11600,11601,11602,11603,11604,11605,11606,11607,11608,11609,11610,11611,11612,11613,11614,11615,11616,11617,11618,11619,11620,11621,11622,11623,11631,11648,11649,11650,11651,11652,11653,11654,11655,11656,11657,11658,11659,11660,11661,11662,11663,11664,11665,11666,11667,11668,11669,11670,11680,11681,11682,11683,11684,11685,11686,11688,11689,11690,11691,11692,11693,11694,11696,11697,11698,11699,11700,11701,11702,11704,11705,11706,11707,11708,11709,11710,11712,11713,11714,11715,11716,11717,11718,11720,11721,11722,11723,11724,11725,11726,11728,11729,11730,11731,11732,11733,11734,11736,11737,11738,11739,11740,11741,11742,11823,12293,12294,12295,12321,12322,12323,12324,12325,12326,12327,12328,12329,12337,12338,12339,12340,12341,12344,12345,12346,12347,12348,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,12436,12437,12438,12445,12446,12447,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,12535,12536,12537,12538,12540,12541,12542,12543,12549,12550,12551,12552,12553,12554,12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12575,12576,12577,12578,12579,12580,12581,12582,12583,12584,12585,12586,12587,12588,12589,12593,12594,12595,12596,12597,12598,12599,12600,12601,12602,12603,12604,12605,12606,12607,12608,12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643,12644,12645,12646,12647,12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660,12661,12662,12663,12664,12665,12666,12667,12668,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680,12681,12682,12683,12684,12685,12686,12704,12705,12706,12707,12708,12709,12710,12711,12712,12713,12714,12715,12716,12717,12718,12719,12720,12721,12722,12723,12724,12725,12726,12727,12728,12729,12730,12784,12785,12786,12787,12788,12789,12790,12791,12792,12793,12794,12795,12796,12797,12798,12799,13312,13313,13314,13315,13316,13317,13318,13319,13320,13321,13322,13323,13324,13325,13326,13327,13328,13329,13330,13331,13332,13333,13334,13335,13336,13337,13338,13339,13340,13341,13342,13343,13344,13345,13346,13347,13348,13349,13350,13351,13352,13353,13354,13355,13356,13357,13358,13359,13360,13361,13362,13363,13364,13365,13366,13367,13368,13369,13370,13371,13372,13373,13374,13375,13376,13377,13378,13379,13380,13381,13382,13383,13384,13385,13386,13387,13388,13389,13390,13391,13392,13393,13394,13395,13396,13397,13398,13399,13400,13401,13402,13403,13404,13405,13406,13407,13408,13409,13410,13411,13412,13413,13414,13415,13416,13417,13418,13419,13420,13421,13422,13423,13424,13425,13426,13427,13428,13429,13430,13431,13432,13433,13434,13435,13436,13437,13438,13439,13440,13441,13442,13443,13444,13445,13446,13447,13448,13449,13450,13451,13452,13453,13454,13455,13456,13457,13458,13459,13460,13461,13462,13463,13464,13465,13466,13467,13468,13469,13470,13471,13472,13473,13474,13475,13476,13477,13478,13479,13480,13481,13482,13483,13484,13485,13486,13487,13488,13489,13490,13491,13492,13493,13494,13495,13496,13497,13498,13499,13500,13501,13502,13503,13504,13505,13506,13507,13508,13509,13510,13511,13512,13513,13514,13515,13516,13517,13518,13519,13520,13521,13522,13523,13524,13525,13526,13527,13528,13529,13530,13531,13532,13533,13534,13535,13536,13537,13538,13539,13540,13541,13542,13543,13544,13545,13546,13547,13548,13549,13550,13551,13552,13553,13554,13555,13556,13557,13558,13559,13560,13561,13562,13563,13564,13565,13566,13567,13568,13569,13570,13571,13572,13573,13574,13575,13576,13577,13578,13579,13580,13581,13582,13583,13584,13585,13586,13587,13588,13589,13590,13591,13592,13593,13594,13595,13596,13597,13598,13599,13600,13601,13602,13603,13604,13605,13606,13607,13608,13609,13610,13611,13612,13613,13614,13615,13616,13617,13618,13619,13620,13621,13622,13623,13624,13625,13626,13627,13628,13629,13630,13631,13632,13633,13634,13635,13636,13637,13638,13639,13640,13641,13642,13643,13644,13645,13646,13647,13648,13649,13650,13651,13652,13653,13654,13655,13656,13657,13658,13659,13660,13661,13662,13663,13664,13665,13666,13667,13668,13669,13670,13671,13672,13673,13674,13675,13676,13677,13678,13679,13680,13681,13682,13683,13684,13685,13686,13687,13688,13689,13690,13691,13692,13693,13694,13695,13696,13697,13698,13699,13700,13701,13702,13703,13704,13705,13706,13707,13708,13709,13710,13711,13712,13713,13714,13715,13716,13717,13718,13719,13720,13721,13722,13723,13724,13725,13726,13727,13728,13729,13730,13731,13732,13733,13734,13735,13736,13737,13738,13739,13740,13741,13742,13743,13744,13745,13746,13747,13748,13749,13750,13751,13752,13753,13754,13755,13756,13757,13758,13759,13760,13761,13762,13763,13764,13765,13766,13767,13768,13769,13770,13771,13772,13773,13774,13775,13776,13777,13778,13779,13780,13781,13782,13783,13784,13785,13786,13787,13788,13789,13790,13791,13792,13793,13794,13795,13796,13797,13798,13799,13800,13801,13802,13803,13804,13805,13806,13807,13808,13809,13810,13811,13812,13813,13814,13815,13816,13817,13818,13819,13820,13821,13822,13823,13824,13825,13826,13827,13828,13829,13830,13831,13832,13833,13834,13835,13836,13837,13838,13839,13840,13841,13842,13843,13844,13845,13846,13847,13848,13849,13850,13851,13852,13853,13854,13855,13856,13857,13858,13859,13860,13861,13862,13863,13864,13865,13866,13867,13868,13869,13870,13871,13872,13873,13874,13875,13876,13877,13878,13879,13880,13881,13882,13883,13884,13885,13886,13887,13888,13889,13890,13891,13892,13893,13894,13895,13896,13897,13898,13899,13900,13901,13902,13903,13904,13905,13906,13907,13908,13909,13910,13911,13912,13913,13914,13915,13916,13917,13918,13919,13920,13921,13922,13923,13924,13925,13926,13927,13928,13929,13930,13931,13932,13933,13934,13935,13936,13937,13938,13939,13940,13941,13942,13943,13944,13945,13946,13947,13948,13949,13950,13951,13952,13953,13954,13955,13956,13957,13958,13959,13960,13961,13962,13963,13964,13965,13966,13967,13968,13969,13970,13971,13972,13973,13974,13975,13976,13977,13978,13979,13980,13981,13982,13983,13984,13985,13986,13987,13988,13989,13990,13991,13992,13993,13994,13995,13996,13997,13998,13999,14000,14001,14002,14003,14004,14005,14006,14007,14008,14009,14010,14011,14012,14013,14014,14015,14016,14017,14018,14019,14020,14021,14022,14023,14024,14025,14026,14027,14028,14029,14030,14031,14032,14033,14034,14035,14036,14037,14038,14039,14040,14041,14042,14043,14044,14045,14046,14047,14048,14049,14050,14051,14052,14053,14054,14055,14056,14057,14058,14059,14060,14061,14062,14063,14064,14065,14066,14067,14068,14069,14070,14071,14072,14073,14074,14075,14076,14077,14078,14079,14080,14081,14082,14083,14084,14085,14086,14087,14088,14089,14090,14091,14092,14093,14094,14095,14096,14097,14098,14099,14100,14101,14102,14103,14104,14105,14106,14107,14108,14109,14110,14111,14112,14113,14114,14115,14116,14117,14118,14119,14120,14121,14122,14123,14124,14125,14126,14127,14128,14129,14130,14131,14132,14133,14134,14135,14136,14137,14138,14139,14140,14141,14142,14143,14144,14145,14146,14147,14148,14149,14150,14151,14152,14153,14154,14155,14156,14157,14158,14159,14160,14161,14162,14163,14164,14165,14166,14167,14168,14169,14170,14171,14172,14173,14174,14175,14176,14177,14178,14179,14180,14181,14182,14183,14184,14185,14186,14187,14188,14189,14190,14191,14192,14193,14194,14195,14196,14197,14198,14199,14200,14201,14202,14203,14204,14205,14206,14207,14208,14209,14210,14211,14212,14213,14214,14215,14216,14217,14218,14219,14220,14221,14222,14223,14224,14225,14226,14227,14228,14229,14230,14231,14232,14233,14234,14235,14236,14237,14238,14239,14240,14241,14242,14243,14244,14245,14246,14247,14248,14249,14250,14251,14252,14253,14254,14255,14256,14257,14258,14259,14260,14261,14262,14263,14264,14265,14266,14267,14268,14269,14270,14271,14272,14273,14274,14275,14276,14277,14278,14279,14280,14281,14282,14283,14284,14285,14286,14287,14288,14289,14290,14291,14292,14293,14294,14295,14296,14297,14298,14299,14300,14301,14302,14303,14304,14305,14306,14307,14308,14309,14310,14311,14312,14313,14314,14315,14316,14317,14318,14319,14320,14321,14322,14323,14324,14325,14326,14327,14328,14329,14330,14331,14332,14333,14334,14335,14336,14337,14338,14339,14340,14341,14342,14343,14344,14345,14346,14347,14348,14349,14350,14351,14352,14353,14354,14355,14356,14357,14358,14359,14360,14361,14362,14363,14364,14365,14366,14367,14368,14369,14370,14371,14372,14373,14374,14375,14376,14377,14378,14379,14380,14381,14382,14383,14384,14385,14386,14387,14388,14389,14390,14391,14392,14393,14394,14395,14396,14397,14398,14399,14400,14401,14402,14403,14404,14405,14406,14407,14408,14409,14410,14411,14412,14413,14414,14415,14416,14417,14418,14419,14420,14421,14422,14423,14424,14425,14426,14427,14428,14429,14430,14431,14432,14433,14434,14435,14436,14437,14438,14439,14440,14441,14442,14443,14444,14445,14446,14447,14448,14449,14450,14451,14452,14453,14454,14455,14456,14457,14458,14459,14460,14461,14462,14463,14464,14465,14466,14467,14468,14469,14470,14471,14472,14473,14474,14475,14476,14477,14478,14479,14480,14481,14482,14483,14484,14485,14486,14487,14488,14489,14490,14491,14492,14493,14494,14495,14496,14497,14498,14499,14500,14501,14502,14503,14504,14505,14506,14507,14508,14509,14510,14511,14512,14513,14514,14515,14516,14517,14518,14519,14520,14521,14522,14523,14524,14525,14526,14527,14528,14529,14530,14531,14532,14533,14534,14535,14536,14537,14538,14539,14540,14541,14542,14543,14544,14545,14546,14547,14548,14549,14550,14551,14552,14553,14554,14555,14556,14557,14558,14559,14560,14561,14562,14563,14564,14565,14566,14567,14568,14569,14570,14571,14572,14573,14574,14575,14576,14577,14578,14579,14580,14581,14582,14583,14584,14585,14586,14587,14588,14589,14590,14591,14592,14593,14594,14595,14596,14597,14598,14599,14600,14601,14602,14603,14604,14605,14606,14607,14608,14609,14610,14611,14612,14613,14614,14615,14616,14617,14618,14619,14620,14621,14622,14623,14624,14625,14626,14627,14628,14629,14630,14631,14632,14633,14634,14635,14636,14637,14638,14639,14640,14641,14642,14643,14644,14645,14646,14647,14648,14649,14650,14651,14652,14653,14654,14655,14656,14657,14658,14659,14660,14661,14662,14663,14664,14665,14666,14667,14668,14669,14670,14671,14672,14673,14674,14675,14676,14677,14678,14679,14680,14681,14682,14683,14684,14685,14686,14687,14688,14689,14690,14691,14692,14693,14694,14695,14696,14697,14698,14699,14700,14701,14702,14703,14704,14705,14706,14707,14708,14709,14710,14711,14712,14713,14714,14715,14716,14717,14718,14719,14720,14721,14722,14723,14724,14725,14726,14727,14728,14729,14730,14731,14732,14733,14734,14735,14736,14737,14738,14739,14740,14741,14742,14743,14744,14745,14746,14747,14748,14749,14750,14751,14752,14753,14754,14755,14756,14757,14758,14759,14760,14761,14762,14763,14764,14765,14766,14767,14768,14769,14770,14771,14772,14773,14774,14775,14776,14777,14778,14779,14780,14781,14782,14783,14784,14785,14786,14787,14788,14789,14790,14791,14792,14793,14794,14795,14796,14797,14798,14799,14800,14801,14802,14803,14804,14805,14806,14807,14808,14809,14810,14811,14812,14813,14814,14815,14816,14817,14818,14819,14820,14821,14822,14823,14824,14825,14826,14827,14828,14829,14830,14831,14832,14833,14834,14835,14836,14837,14838,14839,14840,14841,14842,14843,14844,14845,14846,14847,14848,14849,14850,14851,14852,14853,14854,14855,14856,14857,14858,14859,14860,14861,14862,14863,14864,14865,14866,14867,14868,14869,14870,14871,14872,14873,14874,14875,14876,14877,14878,14879,14880,14881,14882,14883,14884,14885,14886,14887,14888,14889,14890,14891,14892,14893,14894,14895,14896,14897,14898,14899,14900,14901,14902,14903,14904,14905,14906,14907,14908,14909,14910,14911,14912,14913,14914,14915,14916,14917,14918,14919,14920,14921,14922,14923,14924,14925,14926,14927,14928,14929,14930,14931,14932,14933,14934,14935,14936,14937,14938,14939,14940,14941,14942,14943,14944,14945,14946,14947,14948,14949,14950,14951,14952,14953,14954,14955,14956,14957,14958,14959,14960,14961,14962,14963,14964,14965,14966,14967,14968,14969,14970,14971,14972,14973,14974,14975,14976,14977,14978,14979,14980,14981,14982,14983,14984,14985,14986,14987,14988,14989,14990,14991,14992,14993,14994,14995,14996,14997,14998,14999,15000,15001,15002,15003,15004,15005,15006,15007,15008,15009,15010,15011,15012,15013,15014,15015,15016,15017,15018,15019,15020,15021,15022,15023,15024,15025,15026,15027,15028,15029,15030,15031,15032,15033,15034,15035,15036,15037,15038,15039,15040,15041,15042,15043,15044,15045,15046,15047,15048,15049,15050,15051,15052,15053,15054,15055,15056,15057,15058,15059,15060,15061,15062,15063,15064,15065,15066,15067,15068,15069,15070,15071,15072,15073,15074,15075,15076,15077,15078,15079,15080,15081,15082,15083,15084,15085,15086,15087,15088,15089,15090,15091,15092,15093,15094,15095,15096,15097,15098,15099,15100,15101,15102,15103,15104,15105,15106,15107,15108,15109,15110,15111,15112,15113,15114,15115,15116,15117,15118,15119,15120,15121,15122,15123,15124,15125,15126,15127,15128,15129,15130,15131,15132,15133,15134,15135,15136,15137,15138,15139,15140,15141,15142,15143,15144,15145,15146,15147,15148,15149,15150,15151,15152,15153,15154,15155,15156,15157,15158,15159,15160,15161,15162,15163,15164,15165,15166,15167,15168,15169,15170,15171,15172,15173,15174,15175,15176,15177,15178,15179,15180,15181,15182,15183,15184,15185,15186,15187,15188,15189,15190,15191,15192,15193,15194,15195,15196,15197,15198,15199,15200,15201,15202,15203,15204,15205,15206,15207,15208,15209,15210,15211,15212,15213,15214,15215,15216,15217,15218,15219,15220,15221,15222,15223,15224,15225,15226,15227,15228,15229,15230,15231,15232,15233,15234,15235,15236,15237,15238,15239,15240,15241,15242,15243,15244,15245,15246,15247,15248,15249,15250,15251,15252,15253,15254,15255,15256,15257,15258,15259,15260,15261,15262,15263,15264,15265,15266,15267,15268,15269,15270,15271,15272,15273,15274,15275,15276,15277,15278,15279,15280,15281,15282,15283,15284,15285,15286,15287,15288,15289,15290,15291,15292,15293,15294,15295,15296,15297,15298,15299,15300,15301,15302,15303,15304,15305,15306,15307,15308,15309,15310,15311,15312,15313,15314,15315,15316,15317,15318,15319,15320,15321,15322,15323,15324,15325,15326,15327,15328,15329,15330,15331,15332,15333,15334,15335,15336,15337,15338,15339,15340,15341,15342,15343,15344,15345,15346,15347,15348,15349,15350,15351,15352,15353,15354,15355,15356,15357,15358,15359,15360,15361,15362,15363,15364,15365,15366,15367,15368,15369,15370,15371,15372,15373,15374,15375,15376,15377,15378,15379,15380,15381,15382,15383,15384,15385,15386,15387,15388,15389,15390,15391,15392,15393,15394,15395,15396,15397,15398,15399,15400,15401,15402,15403,15404,15405,15406,15407,15408,15409,15410,15411,15412,15413,15414,15415,15416,15417,15418,15419,15420,15421,15422,15423,15424,15425,15426,15427,15428,15429,15430,15431,15432,15433,15434,15435,15436,15437,15438,15439,15440,15441,15442,15443,15444,15445,15446,15447,15448,15449,15450,15451,15452,15453,15454,15455,15456,15457,15458,15459,15460,15461,15462,15463,15464,15465,15466,15467,15468,15469,15470,15471,15472,15473,15474,15475,15476,15477,15478,15479,15480,15481,15482,15483,15484,15485,15486,15487,15488,15489,15490,15491,15492,15493,15494,15495,15496,15497,15498,15499,15500,15501,15502,15503,15504,15505,15506,15507,15508,15509,15510,15511,15512,15513,15514,15515,15516,15517,15518,15519,15520,15521,15522,15523,15524,15525,15526,15527,15528,15529,15530,15531,15532,15533,15534,15535,15536,15537,15538,15539,15540,15541,15542,15543,15544,15545,15546,15547,15548,15549,15550,15551,15552,15553,15554,15555,15556,15557,15558,15559,15560,15561,15562,15563,15564,15565,15566,15567,15568,15569,15570,15571,15572,15573,15574,15575,15576,15577,15578,15579,15580,15581,15582,15583,15584,15585,15586,15587,15588,15589,15590,15591,15592,15593,15594,15595,15596,15597,15598,15599,15600,15601,15602,15603,15604,15605,15606,15607,15608,15609,15610,15611,15612,15613,15614,15615,15616,15617,15618,15619,15620,15621,15622,15623,15624,15625,15626,15627,15628,15629,15630,15631,15632,15633,15634,15635,15636,15637,15638,15639,15640,15641,15642,15643,15644,15645,15646,15647,15648,15649,15650,15651,15652,15653,15654,15655,15656,15657,15658,15659,15660,15661,15662,15663,15664,15665,15666,15667,15668,15669,15670,15671,15672,15673,15674,15675,15676,15677,15678,15679,15680,15681,15682,15683,15684,15685,15686,15687,15688,15689,15690,15691,15692,15693,15694,15695,15696,15697,15698,15699,15700,15701,15702,15703,15704,15705,15706,15707,15708,15709,15710,15711,15712,15713,15714,15715,15716,15717,15718,15719,15720,15721,15722,15723,15724,15725,15726,15727,15728,15729,15730,15731,15732,15733,15734,15735,15736,15737,15738,15739,15740,15741,15742,15743,15744,15745,15746,15747,15748,15749,15750,15751,15752,15753,15754,15755,15756,15757,15758,15759,15760,15761,15762,15763,15764,15765,15766,15767,15768,15769,15770,15771,15772,15773,15774,15775,15776,15777,15778,15779,15780,15781,15782,15783,15784,15785,15786,15787,15788,15789,15790,15791,15792,15793,15794,15795,15796,15797,15798,15799,15800,15801,15802,15803,15804,15805,15806,15807,15808,15809,15810,15811,15812,15813,15814,15815,15816,15817,15818,15819,15820,15821,15822,15823,15824,15825,15826,15827,15828,15829,15830,15831,15832,15833,15834,15835,15836,15837,15838,15839,15840,15841,15842,15843,15844,15845,15846,15847,15848,15849,15850,15851,15852,15853,15854,15855,15856,15857,15858,15859,15860,15861,15862,15863,15864,15865,15866,15867,15868,15869,15870,15871,15872,15873,15874,15875,15876,15877,15878,15879,15880,15881,15882,15883,15884,15885,15886,15887,15888,15889,15890,15891,15892,15893,15894,15895,15896,15897,15898,15899,15900,15901,15902,15903,15904,15905,15906,15907,15908,15909,15910,15911,15912,15913,15914,15915,15916,15917,15918,15919,15920,15921,15922,15923,15924,15925,15926,15927,15928,15929,15930,15931,15932,15933,15934,15935,15936,15937,15938,15939,15940,15941,15942,15943,15944,15945,15946,15947,15948,15949,15950,15951,15952,15953,15954,15955,15956,15957,15958,15959,15960,15961,15962,15963,15964,15965,15966,15967,15968,15969,15970,15971,15972,15973,15974,15975,15976,15977,15978,15979,15980,15981,15982,15983,15984,15985,15986,15987,15988,15989,15990,15991,15992,15993,15994,15995,15996,15997,15998,15999,16000,16001,16002,16003,16004,16005,16006,16007,16008,16009,16010,16011,16012,16013,16014,16015,16016,16017,16018,16019,16020,16021,16022,16023,16024,16025,16026,16027,16028,16029,16030,16031,16032,16033,16034,16035,16036,16037,16038,16039,16040,16041,16042,16043,16044,16045,16046,16047,16048,16049,16050,16051,16052,16053,16054,16055,16056,16057,16058,16059,16060,16061,16062,16063,16064,16065,16066,16067,16068,16069,16070,16071,16072,16073,16074,16075,16076,16077,16078,16079,16080,16081,16082,16083,16084,16085,16086,16087,16088,16089,16090,16091,16092,16093,16094,16095,16096,16097,16098,16099,16100,16101,16102,16103,16104,16105,16106,16107,16108,16109,16110,16111,16112,16113,16114,16115,16116,16117,16118,16119,16120,16121,16122,16123,16124,16125,16126,16127,16128,16129,16130,16131,16132,16133,16134,16135,16136,16137,16138,16139,16140,16141,16142,16143,16144,16145,16146,16147,16148,16149,16150,16151,16152,16153,16154,16155,16156,16157,16158,16159,16160,16161,16162,16163,16164,16165,16166,16167,16168,16169,16170,16171,16172,16173,16174,16175,16176,16177,16178,16179,16180,16181,16182,16183,16184,16185,16186,16187,16188,16189,16190,16191,16192,16193,16194,16195,16196,16197,16198,16199,16200,16201,16202,16203,16204,16205,16206,16207,16208,16209,16210,16211,16212,16213,16214,16215,16216,16217,16218,16219,16220,16221,16222,16223,16224,16225,16226,16227,16228,16229,16230,16231,16232,16233,16234,16235,16236,16237,16238,16239,16240,16241,16242,16243,16244,16245,16246,16247,16248,16249,16250,16251,16252,16253,16254,16255,16256,16257,16258,16259,16260,16261,16262,16263,16264,16265,16266,16267,16268,16269,16270,16271,16272,16273,16274,16275,16276,16277,16278,16279,16280,16281,16282,16283,16284,16285,16286,16287,16288,16289,16290,16291,16292,16293,16294,16295,16296,16297,16298,16299,16300,16301,16302,16303,16304,16305,16306,16307,16308,16309,16310,16311,16312,16313,16314,16315,16316,16317,16318,16319,16320,16321,16322,16323,16324,16325,16326,16327,16328,16329,16330,16331,16332,16333,16334,16335,16336,16337,16338,16339,16340,16341,16342,16343,16344,16345,16346,16347,16348,16349,16350,16351,16352,16353,16354,16355,16356,16357,16358,16359,16360,16361,16362,16363,16364,16365,16366,16367,16368,16369,16370,16371,16372,16373,16374,16375,16376,16377,16378,16379,16380,16381,16382,16383,16384,16385,16386,16387,16388,16389,16390,16391,16392,16393,16394,16395,16396,16397,16398,16399,16400,16401,16402,16403,16404,16405,16406,16407,16408,16409,16410,16411,16412,16413,16414,16415,16416,16417,16418,16419,16420,16421,16422,16423,16424,16425,16426,16427,16428,16429,16430,16431,16432,16433,16434,16435,16436,16437,16438,16439,16440,16441,16442,16443,16444,16445,16446,16447,16448,16449,16450,16451,16452,16453,16454,16455,16456,16457,16458,16459,16460,16461,16462,16463,16464,16465,16466,16467,16468,16469,16470,16471,16472,16473,16474,16475,16476,16477,16478,16479,16480,16481,16482,16483,16484,16485,16486,16487,16488,16489,16490,16491,16492,16493,16494,16495,16496,16497,16498,16499,16500,16501,16502,16503,16504,16505,16506,16507,16508,16509,16510,16511,16512,16513,16514,16515,16516,16517,16518,16519,16520,16521,16522,16523,16524,16525,16526,16527,16528,16529,16530,16531,16532,16533,16534,16535,16536,16537,16538,16539,16540,16541,16542,16543,16544,16545,16546,16547,16548,16549,16550,16551,16552,16553,16554,16555,16556,16557,16558,16559,16560,16561,16562,16563,16564,16565,16566,16567,16568,16569,16570,16571,16572,16573,16574,16575,16576,16577,16578,16579,16580,16581,16582,16583,16584,16585,16586,16587,16588,16589,16590,16591,16592,16593,16594,16595,16596,16597,16598,16599,16600,16601,16602,16603,16604,16605,16606,16607,16608,16609,16610,16611,16612,16613,16614,16615,16616,16617,16618,16619,16620,16621,16622,16623,16624,16625,16626,16627,16628,16629,16630,16631,16632,16633,16634,16635,16636,16637,16638,16639,16640,16641,16642,16643,16644,16645,16646,16647,16648,16649,16650,16651,16652,16653,16654,16655,16656,16657,16658,16659,16660,16661,16662,16663,16664,16665,16666,16667,16668,16669,16670,16671,16672,16673,16674,16675,16676,16677,16678,16679,16680,16681,16682,16683,16684,16685,16686,16687,16688,16689,16690,16691,16692,16693,16694,16695,16696,16697,16698,16699,16700,16701,16702,16703,16704,16705,16706,16707,16708,16709,16710,16711,16712,16713,16714,16715,16716,16717,16718,16719,16720,16721,16722,16723,16724,16725,16726,16727,16728,16729,16730,16731,16732,16733,16734,16735,16736,16737,16738,16739,16740,16741,16742,16743,16744,16745,16746,16747,16748,16749,16750,16751,16752,16753,16754,16755,16756,16757,16758,16759,16760,16761,16762,16763,16764,16765,16766,16767,16768,16769,16770,16771,16772,16773,16774,16775,16776,16777,16778,16779,16780,16781,16782,16783,16784,16785,16786,16787,16788,16789,16790,16791,16792,16793,16794,16795,16796,16797,16798,16799,16800,16801,16802,16803,16804,16805,16806,16807,16808,16809,16810,16811,16812,16813,16814,16815,16816,16817,16818,16819,16820,16821,16822,16823,16824,16825,16826,16827,16828,16829,16830,16831,16832,16833,16834,16835,16836,16837,16838,16839,16840,16841,16842,16843,16844,16845,16846,16847,16848,16849,16850,16851,16852,16853,16854,16855,16856,16857,16858,16859,16860,16861,16862,16863,16864,16865,16866,16867,16868,16869,16870,16871,16872,16873,16874,16875,16876,16877,16878,16879,16880,16881,16882,16883,16884,16885,16886,16887,16888,16889,16890,16891,16892,16893,16894,16895,16896,16897,16898,16899,16900,16901,16902,16903,16904,16905,16906,16907,16908,16909,16910,16911,16912,16913,16914,16915,16916,16917,16918,16919,16920,16921,16922,16923,16924,16925,16926,16927,16928,16929,16930,16931,16932,16933,16934,16935,16936,16937,16938,16939,16940,16941,16942,16943,16944,16945,16946,16947,16948,16949,16950,16951,16952,16953,16954,16955,16956,16957,16958,16959,16960,16961,16962,16963,16964,16965,16966,16967,16968,16969,16970,16971,16972,16973,16974,16975,16976,16977,16978,16979,16980,16981,16982,16983,16984,16985,16986,16987,16988,16989,16990,16991,16992,16993,16994,16995,16996,16997,16998,16999,17000,17001,17002,17003,17004,17005,17006,17007,17008,17009,17010,17011,17012,17013,17014,17015,17016,17017,17018,17019,17020,17021,17022,17023,17024,17025,17026,17027,17028,17029,17030,17031,17032,17033,17034,17035,17036,17037,17038,17039,17040,17041,17042,17043,17044,17045,17046,17047,17048,17049,17050,17051,17052,17053,17054,17055,17056,17057,17058,17059,17060,17061,17062,17063,17064,17065,17066,17067,17068,17069,17070,17071,17072,17073,17074,17075,17076,17077,17078,17079,17080,17081,17082,17083,17084,17085,17086,17087,17088,17089,17090,17091,17092,17093,17094,17095,17096,17097,17098,17099,17100,17101,17102,17103,17104,17105,17106,17107,17108,17109,17110,17111,17112,17113,17114,17115,17116,17117,17118,17119,17120,17121,17122,17123,17124,17125,17126,17127,17128,17129,17130,17131,17132,17133,17134,17135,17136,17137,17138,17139,17140,17141,17142,17143,17144,17145,17146,17147,17148,17149,17150,17151,17152,17153,17154,17155,17156,17157,17158,17159,17160,17161,17162,17163,17164,17165,17166,17167,17168,17169,17170,17171,17172,17173,17174,17175,17176,17177,17178,17179,17180,17181,17182,17183,17184,17185,17186,17187,17188,17189,17190,17191,17192,17193,17194,17195,17196,17197,17198,17199,17200,17201,17202,17203,17204,17205,17206,17207,17208,17209,17210,17211,17212,17213,17214,17215,17216,17217,17218,17219,17220,17221,17222,17223,17224,17225,17226,17227,17228,17229,17230,17231,17232,17233,17234,17235,17236,17237,17238,17239,17240,17241,17242,17243,17244,17245,17246,17247,17248,17249,17250,17251,17252,17253,17254,17255,17256,17257,17258,17259,17260,17261,17262,17263,17264,17265,17266,17267,17268,17269,17270,17271,17272,17273,17274,17275,17276,17277,17278,17279,17280,17281,17282,17283,17284,17285,17286,17287,17288,17289,17290,17291,17292,17293,17294,17295,17296,17297,17298,17299,17300,17301,17302,17303,17304,17305,17306,17307,17308,17309,17310,17311,17312,17313,17314,17315,17316,17317,17318,17319,17320,17321,17322,17323,17324,17325,17326,17327,17328,17329,17330,17331,17332,17333,17334,17335,17336,17337,17338,17339,17340,17341,17342,17343,17344,17345,17346,17347,17348,17349,17350,17351,17352,17353,17354,17355,17356,17357,17358,17359,17360,17361,17362,17363,17364,17365,17366,17367,17368,17369,17370,17371,17372,17373,17374,17375,17376,17377,17378,17379,17380,17381,17382,17383,17384,17385,17386,17387,17388,17389,17390,17391,17392,17393,17394,17395,17396,17397,17398,17399,17400,17401,17402,17403,17404,17405,17406,17407,17408,17409,17410,17411,17412,17413,17414,17415,17416,17417,17418,17419,17420,17421,17422,17423,17424,17425,17426,17427,17428,17429,17430,17431,17432,17433,17434,17435,17436,17437,17438,17439,17440,17441,17442,17443,17444,17445,17446,17447,17448,17449,17450,17451,17452,17453,17454,17455,17456,17457,17458,17459,17460,17461,17462,17463,17464,17465,17466,17467,17468,17469,17470,17471,17472,17473,17474,17475,17476,17477,17478,17479,17480,17481,17482,17483,17484,17485,17486,17487,17488,17489,17490,17491,17492,17493,17494,17495,17496,17497,17498,17499,17500,17501,17502,17503,17504,17505,17506,17507,17508,17509,17510,17511,17512,17513,17514,17515,17516,17517,17518,17519,17520,17521,17522,17523,17524,17525,17526,17527,17528,17529,17530,17531,17532,17533,17534,17535,17536,17537,17538,17539,17540,17541,17542,17543,17544,17545,17546,17547,17548,17549,17550,17551,17552,17553,17554,17555,17556,17557,17558,17559,17560,17561,17562,17563,17564,17565,17566,17567,17568,17569,17570,17571,17572,17573,17574,17575,17576,17577,17578,17579,17580,17581,17582,17583,17584,17585,17586,17587,17588,17589,17590,17591,17592,17593,17594,17595,17596,17597,17598,17599,17600,17601,17602,17603,17604,17605,17606,17607,17608,17609,17610,17611,17612,17613,17614,17615,17616,17617,17618,17619,17620,17621,17622,17623,17624,17625,17626,17627,17628,17629,17630,17631,17632,17633,17634,17635,17636,17637,17638,17639,17640,17641,17642,17643,17644,17645,17646,17647,17648,17649,17650,17651,17652,17653,17654,17655,17656,17657,17658,17659,17660,17661,17662,17663,17664,17665,17666,17667,17668,17669,17670,17671,17672,17673,17674,17675,17676,17677,17678,17679,17680,17681,17682,17683,17684,17685,17686,17687,17688,17689,17690,17691,17692,17693,17694,17695,17696,17697,17698,17699,17700,17701,17702,17703,17704,17705,17706,17707,17708,17709,17710,17711,17712,17713,17714,17715,17716,17717,17718,17719,17720,17721,17722,17723,17724,17725,17726,17727,17728,17729,17730,17731,17732,17733,17734,17735,17736,17737,17738,17739,17740,17741,17742,17743,17744,17745,17746,17747,17748,17749,17750,17751,17752,17753,17754,17755,17756,17757,17758,17759,17760,17761,17762,17763,17764,17765,17766,17767,17768,17769,17770,17771,17772,17773,17774,17775,17776,17777,17778,17779,17780,17781,17782,17783,17784,17785,17786,17787,17788,17789,17790,17791,17792,17793,17794,17795,17796,17797,17798,17799,17800,17801,17802,17803,17804,17805,17806,17807,17808,17809,17810,17811,17812,17813,17814,17815,17816,17817,17818,17819,17820,17821,17822,17823,17824,17825,17826,17827,17828,17829,17830,17831,17832,17833,17834,17835,17836,17837,17838,17839,17840,17841,17842,17843,17844,17845,17846,17847,17848,17849,17850,17851,17852,17853,17854,17855,17856,17857,17858,17859,17860,17861,17862,17863,17864,17865,17866,17867,17868,17869,17870,17871,17872,17873,17874,17875,17876,17877,17878,17879,17880,17881,17882,17883,17884,17885,17886,17887,17888,17889,17890,17891,17892,17893,17894,17895,17896,17897,17898,17899,17900,17901,17902,17903,17904,17905,17906,17907,17908,17909,17910,17911,17912,17913,17914,17915,17916,17917,17918,17919,17920,17921,17922,17923,17924,17925,17926,17927,17928,17929,17930,17931,17932,17933,17934,17935,17936,17937,17938,17939,17940,17941,17942,17943,17944,17945,17946,17947,17948,17949,17950,17951,17952,17953,17954,17955,17956,17957,17958,17959,17960,17961,17962,17963,17964,17965,17966,17967,17968,17969,17970,17971,17972,17973,17974,17975,17976,17977,17978,17979,17980,17981,17982,17983,17984,17985,17986,17987,17988,17989,17990,17991,17992,17993,17994,17995,17996,17997,17998,17999,18000,18001,18002,18003,18004,18005,18006,18007,18008,18009,18010,18011,18012,18013,18014,18015,18016,18017,18018,18019,18020,18021,18022,18023,18024,18025,18026,18027,18028,18029,18030,18031,18032,18033,18034,18035,18036,18037,18038,18039,18040,18041,18042,18043,18044,18045,18046,18047,18048,18049,18050,18051,18052,18053,18054,18055,18056,18057,18058,18059,18060,18061,18062,18063,18064,18065,18066,18067,18068,18069,18070,18071,18072,18073,18074,18075,18076,18077,18078,18079,18080,18081,18082,18083,18084,18085,18086,18087,18088,18089,18090,18091,18092,18093,18094,18095,18096,18097,18098,18099,18100,18101,18102,18103,18104,18105,18106,18107,18108,18109,18110,18111,18112,18113,18114,18115,18116,18117,18118,18119,18120,18121,18122,18123,18124,18125,18126,18127,18128,18129,18130,18131,18132,18133,18134,18135,18136,18137,18138,18139,18140,18141,18142,18143,18144,18145,18146,18147,18148,18149,18150,18151,18152,18153,18154,18155,18156,18157,18158,18159,18160,18161,18162,18163,18164,18165,18166,18167,18168,18169,18170,18171,18172,18173,18174,18175,18176,18177,18178,18179,18180,18181,18182,18183,18184,18185,18186,18187,18188,18189,18190,18191,18192,18193,18194,18195,18196,18197,18198,18199,18200,18201,18202,18203,18204,18205,18206,18207,18208,18209,18210,18211,18212,18213,18214,18215,18216,18217,18218,18219,18220,18221,18222,18223,18224,18225,18226,18227,18228,18229,18230,18231,18232,18233,18234,18235,18236,18237,18238,18239,18240,18241,18242,18243,18244,18245,18246,18247,18248,18249,18250,18251,18252,18253,18254,18255,18256,18257,18258,18259,18260,18261,18262,18263,18264,18265,18266,18267,18268,18269,18270,18271,18272,18273,18274,18275,18276,18277,18278,18279,18280,18281,18282,18283,18284,18285,18286,18287,18288,18289,18290,18291,18292,18293,18294,18295,18296,18297,18298,18299,18300,18301,18302,18303,18304,18305,18306,18307,18308,18309,18310,18311,18312,18313,18314,18315,18316,18317,18318,18319,18320,18321,18322,18323,18324,18325,18326,18327,18328,18329,18330,18331,18332,18333,18334,18335,18336,18337,18338,18339,18340,18341,18342,18343,18344,18345,18346,18347,18348,18349,18350,18351,18352,18353,18354,18355,18356,18357,18358,18359,18360,18361,18362,18363,18364,18365,18366,18367,18368,18369,18370,18371,18372,18373,18374,18375,18376,18377,18378,18379,18380,18381,18382,18383,18384,18385,18386,18387,18388,18389,18390,18391,18392,18393,18394,18395,18396,18397,18398,18399,18400,18401,18402,18403,18404,18405,18406,18407,18408,18409,18410,18411,18412,18413,18414,18415,18416,18417,18418,18419,18420,18421,18422,18423,18424,18425,18426,18427,18428,18429,18430,18431,18432,18433,18434,18435,18436,18437,18438,18439,18440,18441,18442,18443,18444,18445,18446,18447,18448,18449,18450,18451,18452,18453,18454,18455,18456,18457,18458,18459,18460,18461,18462,18463,18464,18465,18466,18467,18468,18469,18470,18471,18472,18473,18474,18475,18476,18477,18478,18479,18480,18481,18482,18483,18484,18485,18486,18487,18488,18489,18490,18491,18492,18493,18494,18495,18496,18497,18498,18499,18500,18501,18502,18503,18504,18505,18506,18507,18508,18509,18510,18511,18512,18513,18514,18515,18516,18517,18518,18519,18520,18521,18522,18523,18524,18525,18526,18527,18528,18529,18530,18531,18532,18533,18534,18535,18536,18537,18538,18539,18540,18541,18542,18543,18544,18545,18546,18547,18548,18549,18550,18551,18552,18553,18554,18555,18556,18557,18558,18559,18560,18561,18562,18563,18564,18565,18566,18567,18568,18569,18570,18571,18572,18573,18574,18575,18576,18577,18578,18579,18580,18581,18582,18583,18584,18585,18586,18587,18588,18589,18590,18591,18592,18593,18594,18595,18596,18597,18598,18599,18600,18601,18602,18603,18604,18605,18606,18607,18608,18609,18610,18611,18612,18613,18614,18615,18616,18617,18618,18619,18620,18621,18622,18623,18624,18625,18626,18627,18628,18629,18630,18631,18632,18633,18634,18635,18636,18637,18638,18639,18640,18641,18642,18643,18644,18645,18646,18647,18648,18649,18650,18651,18652,18653,18654,18655,18656,18657,18658,18659,18660,18661,18662,18663,18664,18665,18666,18667,18668,18669,18670,18671,18672,18673,18674,18675,18676,18677,18678,18679,18680,18681,18682,18683,18684,18685,18686,18687,18688,18689,18690,18691,18692,18693,18694,18695,18696,18697,18698,18699,18700,18701,18702,18703,18704,18705,18706,18707,18708,18709,18710,18711,18712,18713,18714,18715,18716,18717,18718,18719,18720,18721,18722,18723,18724,18725,18726,18727,18728,18729,18730,18731,18732,18733,18734,18735,18736,18737,18738,18739,18740,18741,18742,18743,18744,18745,18746,18747,18748,18749,18750,18751,18752,18753,18754,18755,18756,18757,18758,18759,18760,18761,18762,18763,18764,18765,18766,18767,18768,18769,18770,18771,18772,18773,18774,18775,18776,18777,18778,18779,18780,18781,18782,18783,18784,18785,18786,18787,18788,18789,18790,18791,18792,18793,18794,18795,18796,18797,18798,18799,18800,18801,18802,18803,18804,18805,18806,18807,18808,18809,18810,18811,18812,18813,18814,18815,18816,18817,18818,18819,18820,18821,18822,18823,18824,18825,18826,18827,18828,18829,18830,18831,18832,18833,18834,18835,18836,18837,18838,18839,18840,18841,18842,18843,18844,18845,18846,18847,18848,18849,18850,18851,18852,18853,18854,18855,18856,18857,18858,18859,18860,18861,18862,18863,18864,18865,18866,18867,18868,18869,18870,18871,18872,18873,18874,18875,18876,18877,18878,18879,18880,18881,18882,18883,18884,18885,18886,18887,18888,18889,18890,18891,18892,18893,18894,18895,18896,18897,18898,18899,18900,18901,18902,18903,18904,18905,18906,18907,18908,18909,18910,18911,18912,18913,18914,18915,18916,18917,18918,18919,18920,18921,18922,18923,18924,18925,18926,18927,18928,18929,18930,18931,18932,18933,18934,18935,18936,18937,18938,18939,18940,18941,18942,18943,18944,18945,18946,18947,18948,18949,18950,18951,18952,18953,18954,18955,18956,18957,18958,18959,18960,18961,18962,18963,18964,18965,18966,18967,18968,18969,18970,18971,18972,18973,18974,18975,18976,18977,18978,18979,18980,18981,18982,18983,18984,18985,18986,18987,18988,18989,18990,18991,18992,18993,18994,18995,18996,18997,18998,18999,19000,19001,19002,19003,19004,19005,19006,19007,19008,19009,19010,19011,19012,19013,19014,19015,19016,19017,19018,19019,19020,19021,19022,19023,19024,19025,19026,19027,19028,19029,19030,19031,19032,19033,19034,19035,19036,19037,19038,19039,19040,19041,19042,19043,19044,19045,19046,19047,19048,19049,19050,19051,19052,19053,19054,19055,19056,19057,19058,19059,19060,19061,19062,19063,19064,19065,19066,19067,19068,19069,19070,19071,19072,19073,19074,19075,19076,19077,19078,19079,19080,19081,19082,19083,19084,19085,19086,19087,19088,19089,19090,19091,19092,19093,19094,19095,19096,19097,19098,19099,19100,19101,19102,19103,19104,19105,19106,19107,19108,19109,19110,19111,19112,19113,19114,19115,19116,19117,19118,19119,19120,19121,19122,19123,19124,19125,19126,19127,19128,19129,19130,19131,19132,19133,19134,19135,19136,19137,19138,19139,19140,19141,19142,19143,19144,19145,19146,19147,19148,19149,19150,19151,19152,19153,19154,19155,19156,19157,19158,19159,19160,19161,19162,19163,19164,19165,19166,19167,19168,19169,19170,19171,19172,19173,19174,19175,19176,19177,19178,19179,19180,19181,19182,19183,19184,19185,19186,19187,19188,19189,19190,19191,19192,19193,19194,19195,19196,19197,19198,19199,19200,19201,19202,19203,19204,19205,19206,19207,19208,19209,19210,19211,19212,19213,19214,19215,19216,19217,19218,19219,19220,19221,19222,19223,19224,19225,19226,19227,19228,19229,19230,19231,19232,19233,19234,19235,19236,19237,19238,19239,19240,19241,19242,19243,19244,19245,19246,19247,19248,19249,19250,19251,19252,19253,19254,19255,19256,19257,19258,19259,19260,19261,19262,19263,19264,19265,19266,19267,19268,19269,19270,19271,19272,19273,19274,19275,19276,19277,19278,19279,19280,19281,19282,19283,19284,19285,19286,19287,19288,19289,19290,19291,19292,19293,19294,19295,19296,19297,19298,19299,19300,19301,19302,19303,19304,19305,19306,19307,19308,19309,19310,19311,19312,19313,19314,19315,19316,19317,19318,19319,19320,19321,19322,19323,19324,19325,19326,19327,19328,19329,19330,19331,19332,19333,19334,19335,19336,19337,19338,19339,19340,19341,19342,19343,19344,19345,19346,19347,19348,19349,19350,19351,19352,19353,19354,19355,19356,19357,19358,19359,19360,19361,19362,19363,19364,19365,19366,19367,19368,19369,19370,19371,19372,19373,19374,19375,19376,19377,19378,19379,19380,19381,19382,19383,19384,19385,19386,19387,19388,19389,19390,19391,19392,19393,19394,19395,19396,19397,19398,19399,19400,19401,19402,19403,19404,19405,19406,19407,19408,19409,19410,19411,19412,19413,19414,19415,19416,19417,19418,19419,19420,19421,19422,19423,19424,19425,19426,19427,19428,19429,19430,19431,19432,19433,19434,19435,19436,19437,19438,19439,19440,19441,19442,19443,19444,19445,19446,19447,19448,19449,19450,19451,19452,19453,19454,19455,19456,19457,19458,19459,19460,19461,19462,19463,19464,19465,19466,19467,19468,19469,19470,19471,19472,19473,19474,19475,19476,19477,19478,19479,19480,19481,19482,19483,19484,19485,19486,19487,19488,19489,19490,19491,19492,19493,19494,19495,19496,19497,19498,19499,19500,19501,19502,19503,19504,19505,19506,19507,19508,19509,19510,19511,19512,19513,19514,19515,19516,19517,19518,19519,19520,19521,19522,19523,19524,19525,19526,19527,19528,19529,19530,19531,19532,19533,19534,19535,19536,19537,19538,19539,19540,19541,19542,19543,19544,19545,19546,19547,19548,19549,19550,19551,19552,19553,19554,19555,19556,19557,19558,19559,19560,19561,19562,19563,19564,19565,19566,19567,19568,19569,19570,19571,19572,19573,19574,19575,19576,19577,19578,19579,19580,19581,19582,19583,19584,19585,19586,19587,19588,19589,19590,19591,19592,19593,19594,19595,19596,19597,19598,19599,19600,19601,19602,19603,19604,19605,19606,19607,19608,19609,19610,19611,19612,19613,19614,19615,19616,19617,19618,19619,19620,19621,19622,19623,19624,19625,19626,19627,19628,19629,19630,19631,19632,19633,19634,19635,19636,19637,19638,19639,19640,19641,19642,19643,19644,19645,19646,19647,19648,19649,19650,19651,19652,19653,19654,19655,19656,19657,19658,19659,19660,19661,19662,19663,19664,19665,19666,19667,19668,19669,19670,19671,19672,19673,19674,19675,19676,19677,19678,19679,19680,19681,19682,19683,19684,19685,19686,19687,19688,19689,19690,19691,19692,19693,19694,19695,19696,19697,19698,19699,19700,19701,19702,19703,19704,19705,19706,19707,19708,19709,19710,19711,19712,19713,19714,19715,19716,19717,19718,19719,19720,19721,19722,19723,19724,19725,19726,19727,19728,19729,19730,19731,19732,19733,19734,19735,19736,19737,19738,19739,19740,19741,19742,19743,19744,19745,19746,19747,19748,19749,19750,19751,19752,19753,19754,19755,19756,19757,19758,19759,19760,19761,19762,19763,19764,19765,19766,19767,19768,19769,19770,19771,19772,19773,19774,19775,19776,19777,19778,19779,19780,19781,19782,19783,19784,19785,19786,19787,19788,19789,19790,19791,19792,19793,19794,19795,19796,19797,19798,19799,19800,19801,19802,19803,19804,19805,19806,19807,19808,19809,19810,19811,19812,19813,19814,19815,19816,19817,19818,19819,19820,19821,19822,19823,19824,19825,19826,19827,19828,19829,19830,19831,19832,19833,19834,19835,19836,19837,19838,19839,19840,19841,19842,19843,19844,19845,19846,19847,19848,19849,19850,19851,19852,19853,19854,19855,19856,19857,19858,19859,19860,19861,19862,19863,19864,19865,19866,19867,19868,19869,19870,19871,19872,19873,19874,19875,19876,19877,19878,19879,19880,19881,19882,19883,19884,19885,19886,19887,19888,19889,19890,19891,19892,19893,19968,19969,19970,19971,19972,19973,19974,19975,19976,19977,19978,19979,19980,19981,19982,19983,19984,19985,19986,19987,19988,19989,19990,19991,19992,19993,19994,19995,19996,19997,19998,19999,20000,20001,20002,20003,20004,20005,20006,20007,20008,20009,20010,20011,20012,20013,20014,20015,20016,20017,20018,20019,20020,20021,20022,20023,20024,20025,20026,20027,20028,20029,20030,20031,20032,20033,20034,20035,20036,20037,20038,20039,20040,20041,20042,20043,20044,20045,20046,20047,20048,20049,20050,20051,20052,20053,20054,20055,20056,20057,20058,20059,20060,20061,20062,20063,20064,20065,20066,20067,20068,20069,20070,20071,20072,20073,20074,20075,20076,20077,20078,20079,20080,20081,20082,20083,20084,20085,20086,20087,20088,20089,20090,20091,20092,20093,20094,20095,20096,20097,20098,20099,20100,20101,20102,20103,20104,20105,20106,20107,20108,20109,20110,20111,20112,20113,20114,20115,20116,20117,20118,20119,20120,20121,20122,20123,20124,20125,20126,20127,20128,20129,20130,20131,20132,20133,20134,20135,20136,20137,20138,20139,20140,20141,20142,20143,20144,20145,20146,20147,20148,20149,20150,20151,20152,20153,20154,20155,20156,20157,20158,20159,20160,20161,20162,20163,20164,20165,20166,20167,20168,20169,20170,20171,20172,20173,20174,20175,20176,20177,20178,20179,20180,20181,20182,20183,20184,20185,20186,20187,20188,20189,20190,20191,20192,20193,20194,20195,20196,20197,20198,20199,20200,20201,20202,20203,20204,20205,20206,20207,20208,20209,20210,20211,20212,20213,20214,20215,20216,20217,20218,20219,20220,20221,20222,20223,20224,20225,20226,20227,20228,20229,20230,20231,20232,20233,20234,20235,20236,20237,20238,20239,20240,20241,20242,20243,20244,20245,20246,20247,20248,20249,20250,20251,20252,20253,20254,20255,20256,20257,20258,20259,20260,20261,20262,20263,20264,20265,20266,20267,20268,20269,20270,20271,20272,20273,20274,20275,20276,20277,20278,20279,20280,20281,20282,20283,20284,20285,20286,20287,20288,20289,20290,20291,20292,20293,20294,20295,20296,20297,20298,20299,20300,20301,20302,20303,20304,20305,20306,20307,20308,20309,20310,20311,20312,20313,20314,20315,20316,20317,20318,20319,20320,20321,20322,20323,20324,20325,20326,20327,20328,20329,20330,20331,20332,20333,20334,20335,20336,20337,20338,20339,20340,20341,20342,20343,20344,20345,20346,20347,20348,20349,20350,20351,20352,20353,20354,20355,20356,20357,20358,20359,20360,20361,20362,20363,20364,20365,20366,20367,20368,20369,20370,20371,20372,20373,20374,20375,20376,20377,20378,20379,20380,20381,20382,20383,20384,20385,20386,20387,20388,20389,20390,20391,20392,20393,20394,20395,20396,20397,20398,20399,20400,20401,20402,20403,20404,20405,20406,20407,20408,20409,20410,20411,20412,20413,20414,20415,20416,20417,20418,20419,20420,20421,20422,20423,20424,20425,20426,20427,20428,20429,20430,20431,20432,20433,20434,20435,20436,20437,20438,20439,20440,20441,20442,20443,20444,20445,20446,20447,20448,20449,20450,20451,20452,20453,20454,20455,20456,20457,20458,20459,20460,20461,20462,20463,20464,20465,20466,20467,20468,20469,20470,20471,20472,20473,20474,20475,20476,20477,20478,20479,20480,20481,20482,20483,20484,20485,20486,20487,20488,20489,20490,20491,20492,20493,20494,20495,20496,20497,20498,20499,20500,20501,20502,20503,20504,20505,20506,20507,20508,20509,20510,20511,20512,20513,20514,20515,20516,20517,20518,20519,20520,20521,20522,20523,20524,20525,20526,20527,20528,20529,20530,20531,20532,20533,20534,20535,20536,20537,20538,20539,20540,20541,20542,20543,20544,20545,20546,20547,20548,20549,20550,20551,20552,20553,20554,20555,20556,20557,20558,20559,20560,20561,20562,20563,20564,20565,20566,20567,20568,20569,20570,20571,20572,20573,20574,20575,20576,20577,20578,20579,20580,20581,20582,20583,20584,20585,20586,20587,20588,20589,20590,20591,20592,20593,20594,20595,20596,20597,20598,20599,20600,20601,20602,20603,20604,20605,20606,20607,20608,20609,20610,20611,20612,20613,20614,20615,20616,20617,20618,20619,20620,20621,20622,20623,20624,20625,20626,20627,20628,20629,20630,20631,20632,20633,20634,20635,20636,20637,20638,20639,20640,20641,20642,20643,20644,20645,20646,20647,20648,20649,20650,20651,20652,20653,20654,20655,20656,20657,20658,20659,20660,20661,20662,20663,20664,20665,20666,20667,20668,20669,20670,20671,20672,20673,20674,20675,20676,20677,20678,20679,20680,20681,20682,20683,20684,20685,20686,20687,20688,20689,20690,20691,20692,20693,20694,20695,20696,20697,20698,20699,20700,20701,20702,20703,20704,20705,20706,20707,20708,20709,20710,20711,20712,20713,20714,20715,20716,20717,20718,20719,20720,20721,20722,20723,20724,20725,20726,20727,20728,20729,20730,20731,20732,20733,20734,20735,20736,20737,20738,20739,20740,20741,20742,20743,20744,20745,20746,20747,20748,20749,20750,20751,20752,20753,20754,20755,20756,20757,20758,20759,20760,20761,20762,20763,20764,20765,20766,20767,20768,20769,20770,20771,20772,20773,20774,20775,20776,20777,20778,20779,20780,20781,20782,20783,20784,20785,20786,20787,20788,20789,20790,20791,20792,20793,20794,20795,20796,20797,20798,20799,20800,20801,20802,20803,20804,20805,20806,20807,20808,20809,20810,20811,20812,20813,20814,20815,20816,20817,20818,20819,20820,20821,20822,20823,20824,20825,20826,20827,20828,20829,20830,20831,20832,20833,20834,20835,20836,20837,20838,20839,20840,20841,20842,20843,20844,20845,20846,20847,20848,20849,20850,20851,20852,20853,20854,20855,20856,20857,20858,20859,20860,20861,20862,20863,20864,20865,20866,20867,20868,20869,20870,20871,20872,20873,20874,20875,20876,20877,20878,20879,20880,20881,20882,20883,20884,20885,20886,20887,20888,20889,20890,20891,20892,20893,20894,20895,20896,20897,20898,20899,20900,20901,20902,20903,20904,20905,20906,20907,20908,20909,20910,20911,20912,20913,20914,20915,20916,20917,20918,20919,20920,20921,20922,20923,20924,20925,20926,20927,20928,20929,20930,20931,20932,20933,20934,20935,20936,20937,20938,20939,20940,20941,20942,20943,20944,20945,20946,20947,20948,20949,20950,20951,20952,20953,20954,20955,20956,20957,20958,20959,20960,20961,20962,20963,20964,20965,20966,20967,20968,20969,20970,20971,20972,20973,20974,20975,20976,20977,20978,20979,20980,20981,20982,20983,20984,20985,20986,20987,20988,20989,20990,20991,20992,20993,20994,20995,20996,20997,20998,20999,21000,21001,21002,21003,21004,21005,21006,21007,21008,21009,21010,21011,21012,21013,21014,21015,21016,21017,21018,21019,21020,21021,21022,21023,21024,21025,21026,21027,21028,21029,21030,21031,21032,21033,21034,21035,21036,21037,21038,21039,21040,21041,21042,21043,21044,21045,21046,21047,21048,21049,21050,21051,21052,21053,21054,21055,21056,21057,21058,21059,21060,21061,21062,21063,21064,21065,21066,21067,21068,21069,21070,21071,21072,21073,21074,21075,21076,21077,21078,21079,21080,21081,21082,21083,21084,21085,21086,21087,21088,21089,21090,21091,21092,21093,21094,21095,21096,21097,21098,21099,21100,21101,21102,21103,21104,21105,21106,21107,21108,21109,21110,21111,21112,21113,21114,21115,21116,21117,21118,21119,21120,21121,21122,21123,21124,21125,21126,21127,21128,21129,21130,21131,21132,21133,21134,21135,21136,21137,21138,21139,21140,21141,21142,21143,21144,21145,21146,21147,21148,21149,21150,21151,21152,21153,21154,21155,21156,21157,21158,21159,21160,21161,21162,21163,21164,21165,21166,21167,21168,21169,21170,21171,21172,21173,21174,21175,21176,21177,21178,21179,21180,21181,21182,21183,21184,21185,21186,21187,21188,21189,21190,21191,21192,21193,21194,21195,21196,21197,21198,21199,21200,21201,21202,21203,21204,21205,21206,21207,21208,21209,21210,21211,21212,21213,21214,21215,21216,21217,21218,21219,21220,21221,21222,21223,21224,21225,21226,21227,21228,21229,21230,21231,21232,21233,21234,21235,21236,21237,21238,21239,21240,21241,21242,21243,21244,21245,21246,21247,21248,21249,21250,21251,21252,21253,21254,21255,21256,21257,21258,21259,21260,21261,21262,21263,21264,21265,21266,21267,21268,21269,21270,21271,21272,21273,21274,21275,21276,21277,21278,21279,21280,21281,21282,21283,21284,21285,21286,21287,21288,21289,21290,21291,21292,21293,21294,21295,21296,21297,21298,21299,21300,21301,21302,21303,21304,21305,21306,21307,21308,21309,21310,21311,21312,21313,21314,21315,21316,21317,21318,21319,21320,21321,21322,21323,21324,21325,21326,21327,21328,21329,21330,21331,21332,21333,21334,21335,21336,21337,21338,21339,21340,21341,21342,21343,21344,21345,21346,21347,21348,21349,21350,21351,21352,21353,21354,21355,21356,21357,21358,21359,21360,21361,21362,21363,21364,21365,21366,21367,21368,21369,21370,21371,21372,21373,21374,21375,21376,21377,21378,21379,21380,21381,21382,21383,21384,21385,21386,21387,21388,21389,21390,21391,21392,21393,21394,21395,21396,21397,21398,21399,21400,21401,21402,21403,21404,21405,21406,21407,21408,21409,21410,21411,21412,21413,21414,21415,21416,21417,21418,21419,21420,21421,21422,21423,21424,21425,21426,21427,21428,21429,21430,21431,21432,21433,21434,21435,21436,21437,21438,21439,21440,21441,21442,21443,21444,21445,21446,21447,21448,21449,21450,21451,21452,21453,21454,21455,21456,21457,21458,21459,21460,21461,21462,21463,21464,21465,21466,21467,21468,21469,21470,21471,21472,21473,21474,21475,21476,21477,21478,21479,21480,21481,21482,21483,21484,21485,21486,21487,21488,21489,21490,21491,21492,21493,21494,21495,21496,21497,21498,21499,21500,21501,21502,21503,21504,21505,21506,21507,21508,21509,21510,21511,21512,21513,21514,21515,21516,21517,21518,21519,21520,21521,21522,21523,21524,21525,21526,21527,21528,21529,21530,21531,21532,21533,21534,21535,21536,21537,21538,21539,21540,21541,21542,21543,21544,21545,21546,21547,21548,21549,21550,21551,21552,21553,21554,21555,21556,21557,21558,21559,21560,21561,21562,21563,21564,21565,21566,21567,21568,21569,21570,21571,21572,21573,21574,21575,21576,21577,21578,21579,21580,21581,21582,21583,21584,21585,21586,21587,21588,21589,21590,21591,21592,21593,21594,21595,21596,21597,21598,21599,21600,21601,21602,21603,21604,21605,21606,21607,21608,21609,21610,21611,21612,21613,21614,21615,21616,21617,21618,21619,21620,21621,21622,21623,21624,21625,21626,21627,21628,21629,21630,21631,21632,21633,21634,21635,21636,21637,21638,21639,21640,21641,21642,21643,21644,21645,21646,21647,21648,21649,21650,21651,21652,21653,21654,21655,21656,21657,21658,21659,21660,21661,21662,21663,21664,21665,21666,21667,21668,21669,21670,21671,21672,21673,21674,21675,21676,21677,21678,21679,21680,21681,21682,21683,21684,21685,21686,21687,21688,21689,21690,21691,21692,21693,21694,21695,21696,21697,21698,21699,21700,21701,21702,21703,21704,21705,21706,21707,21708,21709,21710,21711,21712,21713,21714,21715,21716,21717,21718,21719,21720,21721,21722,21723,21724,21725,21726,21727,21728,21729,21730,21731,21732,21733,21734,21735,21736,21737,21738,21739,21740,21741,21742,21743,21744,21745,21746,21747,21748,21749,21750,21751,21752,21753,21754,21755,21756,21757,21758,21759,21760,21761,21762,21763,21764,21765,21766,21767,21768,21769,21770,21771,21772,21773,21774,21775,21776,21777,21778,21779,21780,21781,21782,21783,21784,21785,21786,21787,21788,21789,21790,21791,21792,21793,21794,21795,21796,21797,21798,21799,21800,21801,21802,21803,21804,21805,21806,21807,21808,21809,21810,21811,21812,21813,21814,21815,21816,21817,21818,21819,21820,21821,21822,21823,21824,21825,21826,21827,21828,21829,21830,21831,21832,21833,21834,21835,21836,21837,21838,21839,21840,21841,21842,21843,21844,21845,21846,21847,21848,21849,21850,21851,21852,21853,21854,21855,21856,21857,21858,21859,21860,21861,21862,21863,21864,21865,21866,21867,21868,21869,21870,21871,21872,21873,21874,21875,21876,21877,21878,21879,21880,21881,21882,21883,21884,21885,21886,21887,21888,21889,21890,21891,21892,21893,21894,21895,21896,21897,21898,21899,21900,21901,21902,21903,21904,21905,21906,21907,21908,21909,21910,21911,21912,21913,21914,21915,21916,21917,21918,21919,21920,21921,21922,21923,21924,21925,21926,21927,21928,21929,21930,21931,21932,21933,21934,21935,21936,21937,21938,21939,21940,21941,21942,21943,21944,21945,21946,21947,21948,21949,21950,21951,21952,21953,21954,21955,21956,21957,21958,21959,21960,21961,21962,21963,21964,21965,21966,21967,21968,21969,21970,21971,21972,21973,21974,21975,21976,21977,21978,21979,21980,21981,21982,21983,21984,21985,21986,21987,21988,21989,21990,21991,21992,21993,21994,21995,21996,21997,21998,21999,22000,22001,22002,22003,22004,22005,22006,22007,22008,22009,22010,22011,22012,22013,22014,22015,22016,22017,22018,22019,22020,22021,22022,22023,22024,22025,22026,22027,22028,22029,22030,22031,22032,22033,22034,22035,22036,22037,22038,22039,22040,22041,22042,22043,22044,22045,22046,22047,22048,22049,22050,22051,22052,22053,22054,22055,22056,22057,22058,22059,22060,22061,22062,22063,22064,22065,22066,22067,22068,22069,22070,22071,22072,22073,22074,22075,22076,22077,22078,22079,22080,22081,22082,22083,22084,22085,22086,22087,22088,22089,22090,22091,22092,22093,22094,22095,22096,22097,22098,22099,22100,22101,22102,22103,22104,22105,22106,22107,22108,22109,22110,22111,22112,22113,22114,22115,22116,22117,22118,22119,22120,22121,22122,22123,22124,22125,22126,22127,22128,22129,22130,22131,22132,22133,22134,22135,22136,22137,22138,22139,22140,22141,22142,22143,22144,22145,22146,22147,22148,22149,22150,22151,22152,22153,22154,22155,22156,22157,22158,22159,22160,22161,22162,22163,22164,22165,22166,22167,22168,22169,22170,22171,22172,22173,22174,22175,22176,22177,22178,22179,22180,22181,22182,22183,22184,22185,22186,22187,22188,22189,22190,22191,22192,22193,22194,22195,22196,22197,22198,22199,22200,22201,22202,22203,22204,22205,22206,22207,22208,22209,22210,22211,22212,22213,22214,22215,22216,22217,22218,22219,22220,22221,22222,22223,22224,22225,22226,22227,22228,22229,22230,22231,22232,22233,22234,22235,22236,22237,22238,22239,22240,22241,22242,22243,22244,22245,22246,22247,22248,22249,22250,22251,22252,22253,22254,22255,22256,22257,22258,22259,22260,22261,22262,22263,22264,22265,22266,22267,22268,22269,22270,22271,22272,22273,22274,22275,22276,22277,22278,22279,22280,22281,22282,22283,22284,22285,22286,22287,22288,22289,22290,22291,22292,22293,22294,22295,22296,22297,22298,22299,22300,22301,22302,22303,22304,22305,22306,22307,22308,22309,22310,22311,22312,22313,22314,22315,22316,22317,22318,22319,22320,22321,22322,22323,22324,22325,22326,22327,22328,22329,22330,22331,22332,22333,22334,22335,22336,22337,22338,22339,22340,22341,22342,22343,22344,22345,22346,22347,22348,22349,22350,22351,22352,22353,22354,22355,22356,22357,22358,22359,22360,22361,22362,22363,22364,22365,22366,22367,22368,22369,22370,22371,22372,22373,22374,22375,22376,22377,22378,22379,22380,22381,22382,22383,22384,22385,22386,22387,22388,22389,22390,22391,22392,22393,22394,22395,22396,22397,22398,22399,22400,22401,22402,22403,22404,22405,22406,22407,22408,22409,22410,22411,22412,22413,22414,22415,22416,22417,22418,22419,22420,22421,22422,22423,22424,22425,22426,22427,22428,22429,22430,22431,22432,22433,22434,22435,22436,22437,22438,22439,22440,22441,22442,22443,22444,22445,22446,22447,22448,22449,22450,22451,22452,22453,22454,22455,22456,22457,22458,22459,22460,22461,22462,22463,22464,22465,22466,22467,22468,22469,22470,22471,22472,22473,22474,22475,22476,22477,22478,22479,22480,22481,22482,22483,22484,22485,22486,22487,22488,22489,22490,22491,22492,22493,22494,22495,22496,22497,22498,22499,22500,22501,22502,22503,22504,22505,22506,22507,22508,22509,22510,22511,22512,22513,22514,22515,22516,22517,22518,22519,22520,22521,22522,22523,22524,22525,22526,22527,22528,22529,22530,22531,22532,22533,22534,22535,22536,22537,22538,22539,22540,22541,22542,22543,22544,22545,22546,22547,22548,22549,22550,22551,22552,22553,22554,22555,22556,22557,22558,22559,22560,22561,22562,22563,22564,22565,22566,22567,22568,22569,22570,22571,22572,22573,22574,22575,22576,22577,22578,22579,22580,22581,22582,22583,22584,22585,22586,22587,22588,22589,22590,22591,22592,22593,22594,22595,22596,22597,22598,22599,22600,22601,22602,22603,22604,22605,22606,22607,22608,22609,22610,22611,22612,22613,22614,22615,22616,22617,22618,22619,22620,22621,22622,22623,22624,22625,22626,22627,22628,22629,22630,22631,22632,22633,22634,22635,22636,22637,22638,22639,22640,22641,22642,22643,22644,22645,22646,22647,22648,22649,22650,22651,22652,22653,22654,22655,22656,22657,22658,22659,22660,22661,22662,22663,22664,22665,22666,22667,22668,22669,22670,22671,22672,22673,22674,22675,22676,22677,22678,22679,22680,22681,22682,22683,22684,22685,22686,22687,22688,22689,22690,22691,22692,22693,22694,22695,22696,22697,22698,22699,22700,22701,22702,22703,22704,22705,22706,22707,22708,22709,22710,22711,22712,22713,22714,22715,22716,22717,22718,22719,22720,22721,22722,22723,22724,22725,22726,22727,22728,22729,22730,22731,22732,22733,22734,22735,22736,22737,22738,22739,22740,22741,22742,22743,22744,22745,22746,22747,22748,22749,22750,22751,22752,22753,22754,22755,22756,22757,22758,22759,22760,22761,22762,22763,22764,22765,22766,22767,22768,22769,22770,22771,22772,22773,22774,22775,22776,22777,22778,22779,22780,22781,22782,22783,22784,22785,22786,22787,22788,22789,22790,22791,22792,22793,22794,22795,22796,22797,22798,22799,22800,22801,22802,22803,22804,22805,22806,22807,22808,22809,22810,22811,22812,22813,22814,22815,22816,22817,22818,22819,22820,22821,22822,22823,22824,22825,22826,22827,22828,22829,22830,22831,22832,22833,22834,22835,22836,22837,22838,22839,22840,22841,22842,22843,22844,22845,22846,22847,22848,22849,22850,22851,22852,22853,22854,22855,22856,22857,22858,22859,22860,22861,22862,22863,22864,22865,22866,22867,22868,22869,22870,22871,22872,22873,22874,22875,22876,22877,22878,22879,22880,22881,22882,22883,22884,22885,22886,22887,22888,22889,22890,22891,22892,22893,22894,22895,22896,22897,22898,22899,22900,22901,22902,22903,22904,22905,22906,22907,22908,22909,22910,22911,22912,22913,22914,22915,22916,22917,22918,22919,22920,22921,22922,22923,22924,22925,22926,22927,22928,22929,22930,22931,22932,22933,22934,22935,22936,22937,22938,22939,22940,22941,22942,22943,22944,22945,22946,22947,22948,22949,22950,22951,22952,22953,22954,22955,22956,22957,22958,22959,22960,22961,22962,22963,22964,22965,22966,22967,22968,22969,22970,22971,22972,22973,22974,22975,22976,22977,22978,22979,22980,22981,22982,22983,22984,22985,22986,22987,22988,22989,22990,22991,22992,22993,22994,22995,22996,22997,22998,22999,23000,23001,23002,23003,23004,23005,23006,23007,23008,23009,23010,23011,23012,23013,23014,23015,23016,23017,23018,23019,23020,23021,23022,23023,23024,23025,23026,23027,23028,23029,23030,23031,23032,23033,23034,23035,23036,23037,23038,23039,23040,23041,23042,23043,23044,23045,23046,23047,23048,23049,23050,23051,23052,23053,23054,23055,23056,23057,23058,23059,23060,23061,23062,23063,23064,23065,23066,23067,23068,23069,23070,23071,23072,23073,23074,23075,23076,23077,23078,23079,23080,23081,23082,23083,23084,23085,23086,23087,23088,23089,23090,23091,23092,23093,23094,23095,23096,23097,23098,23099,23100,23101,23102,23103,23104,23105,23106,23107,23108,23109,23110,23111,23112,23113,23114,23115,23116,23117,23118,23119,23120,23121,23122,23123,23124,23125,23126,23127,23128,23129,23130,23131,23132,23133,23134,23135,23136,23137,23138,23139,23140,23141,23142,23143,23144,23145,23146,23147,23148,23149,23150,23151,23152,23153,23154,23155,23156,23157,23158,23159,23160,23161,23162,23163,23164,23165,23166,23167,23168,23169,23170,23171,23172,23173,23174,23175,23176,23177,23178,23179,23180,23181,23182,23183,23184,23185,23186,23187,23188,23189,23190,23191,23192,23193,23194,23195,23196,23197,23198,23199,23200,23201,23202,23203,23204,23205,23206,23207,23208,23209,23210,23211,23212,23213,23214,23215,23216,23217,23218,23219,23220,23221,23222,23223,23224,23225,23226,23227,23228,23229,23230,23231,23232,23233,23234,23235,23236,23237,23238,23239,23240,23241,23242,23243,23244,23245,23246,23247,23248,23249,23250,23251,23252,23253,23254,23255,23256,23257,23258,23259,23260,23261,23262,23263,23264,23265,23266,23267,23268,23269,23270,23271,23272,23273,23274,23275,23276,23277,23278,23279,23280,23281,23282,23283,23284,23285,23286,23287,23288,23289,23290,23291,23292,23293,23294,23295,23296,23297,23298,23299,23300,23301,23302,23303,23304,23305,23306,23307,23308,23309,23310,23311,23312,23313,23314,23315,23316,23317,23318,23319,23320,23321,23322,23323,23324,23325,23326,23327,23328,23329,23330,23331,23332,23333,23334,23335,23336,23337,23338,23339,23340,23341,23342,23343,23344,23345,23346,23347,23348,23349,23350,23351,23352,23353,23354,23355,23356,23357,23358,23359,23360,23361,23362,23363,23364,23365,23366,23367,23368,23369,23370,23371,23372,23373,23374,23375,23376,23377,23378,23379,23380,23381,23382,23383,23384,23385,23386,23387,23388,23389,23390,23391,23392,23393,23394,23395,23396,23397,23398,23399,23400,23401,23402,23403,23404,23405,23406,23407,23408,23409,23410,23411,23412,23413,23414,23415,23416,23417,23418,23419,23420,23421,23422,23423,23424,23425,23426,23427,23428,23429,23430,23431,23432,23433,23434,23435,23436,23437,23438,23439,23440,23441,23442,23443,23444,23445,23446,23447,23448,23449,23450,23451,23452,23453,23454,23455,23456,23457,23458,23459,23460,23461,23462,23463,23464,23465,23466,23467,23468,23469,23470,23471,23472,23473,23474,23475,23476,23477,23478,23479,23480,23481,23482,23483,23484,23485,23486,23487,23488,23489,23490,23491,23492,23493,23494,23495,23496,23497,23498,23499,23500,23501,23502,23503,23504,23505,23506,23507,23508,23509,23510,23511,23512,23513,23514,23515,23516,23517,23518,23519,23520,23521,23522,23523,23524,23525,23526,23527,23528,23529,23530,23531,23532,23533,23534,23535,23536,23537,23538,23539,23540,23541,23542,23543,23544,23545,23546,23547,23548,23549,23550,23551,23552,23553,23554,23555,23556,23557,23558,23559,23560,23561,23562,23563,23564,23565,23566,23567,23568,23569,23570,23571,23572,23573,23574,23575,23576,23577,23578,23579,23580,23581,23582,23583,23584,23585,23586,23587,23588,23589,23590,23591,23592,23593,23594,23595,23596,23597,23598,23599,23600,23601,23602,23603,23604,23605,23606,23607,23608,23609,23610,23611,23612,23613,23614,23615,23616,23617,23618,23619,23620,23621,23622,23623,23624,23625,23626,23627,23628,23629,23630,23631,23632,23633,23634,23635,23636,23637,23638,23639,23640,23641,23642,23643,23644,23645,23646,23647,23648,23649,23650,23651,23652,23653,23654,23655,23656,23657,23658,23659,23660,23661,23662,23663,23664,23665,23666,23667,23668,23669,23670,23671,23672,23673,23674,23675,23676,23677,23678,23679,23680,23681,23682,23683,23684,23685,23686,23687,23688,23689,23690,23691,23692,23693,23694,23695,23696,23697,23698,23699,23700,23701,23702,23703,23704,23705,23706,23707,23708,23709,23710,23711,23712,23713,23714,23715,23716,23717,23718,23719,23720,23721,23722,23723,23724,23725,23726,23727,23728,23729,23730,23731,23732,23733,23734,23735,23736,23737,23738,23739,23740,23741,23742,23743,23744,23745,23746,23747,23748,23749,23750,23751,23752,23753,23754,23755,23756,23757,23758,23759,23760,23761,23762,23763,23764,23765,23766,23767,23768,23769,23770,23771,23772,23773,23774,23775,23776,23777,23778,23779,23780,23781,23782,23783,23784,23785,23786,23787,23788,23789,23790,23791,23792,23793,23794,23795,23796,23797,23798,23799,23800,23801,23802,23803,23804,23805,23806,23807,23808,23809,23810,23811,23812,23813,23814,23815,23816,23817,23818,23819,23820,23821,23822,23823,23824,23825,23826,23827,23828,23829,23830,23831,23832,23833,23834,23835,23836,23837,23838,23839,23840,23841,23842,23843,23844,23845,23846,23847,23848,23849,23850,23851,23852,23853,23854,23855,23856,23857,23858,23859,23860,23861,23862,23863,23864,23865,23866,23867,23868,23869,23870,23871,23872,23873,23874,23875,23876,23877,23878,23879,23880,23881,23882,23883,23884,23885,23886,23887,23888,23889,23890,23891,23892,23893,23894,23895,23896,23897,23898,23899,23900,23901,23902,23903,23904,23905,23906,23907,23908,23909,23910,23911,23912,23913,23914,23915,23916,23917,23918,23919,23920,23921,23922,23923,23924,23925,23926,23927,23928,23929,23930,23931,23932,23933,23934,23935,23936,23937,23938,23939,23940,23941,23942,23943,23944,23945,23946,23947,23948,23949,23950,23951,23952,23953,23954,23955,23956,23957,23958,23959,23960,23961,23962,23963,23964,23965,23966,23967,23968,23969,23970,23971,23972,23973,23974,23975,23976,23977,23978,23979,23980,23981,23982,23983,23984,23985,23986,23987,23988,23989,23990,23991,23992,23993,23994,23995,23996,23997,23998,23999,24000,24001,24002,24003,24004,24005,24006,24007,24008,24009,24010,24011,24012,24013,24014,24015,24016,24017,24018,24019,24020,24021,24022,24023,24024,24025,24026,24027,24028,24029,24030,24031,24032,24033,24034,24035,24036,24037,24038,24039,24040,24041,24042,24043,24044,24045,24046,24047,24048,24049,24050,24051,24052,24053,24054,24055,24056,24057,24058,24059,24060,24061,24062,24063,24064,24065,24066,24067,24068,24069,24070,24071,24072,24073,24074,24075,24076,24077,24078,24079,24080,24081,24082,24083,24084,24085,24086,24087,24088,24089,24090,24091,24092,24093,24094,24095,24096,24097,24098,24099,24100,24101,24102,24103,24104,24105,24106,24107,24108,24109,24110,24111,24112,24113,24114,24115,24116,24117,24118,24119,24120,24121,24122,24123,24124,24125,24126,24127,24128,24129,24130,24131,24132,24133,24134,24135,24136,24137,24138,24139,24140,24141,24142,24143,24144,24145,24146,24147,24148,24149,24150,24151,24152,24153,24154,24155,24156,24157,24158,24159,24160,24161,24162,24163,24164,24165,24166,24167,24168,24169,24170,24171,24172,24173,24174,24175,24176,24177,24178,24179,24180,24181,24182,24183,24184,24185,24186,24187,24188,24189,24190,24191,24192,24193,24194,24195,24196,24197,24198,24199,24200,24201,24202,24203,24204,24205,24206,24207,24208,24209,24210,24211,24212,24213,24214,24215,24216,24217,24218,24219,24220,24221,24222,24223,24224,24225,24226,24227,24228,24229,24230,24231,24232,24233,24234,24235,24236,24237,24238,24239,24240,24241,24242,24243,24244,24245,24246,24247,24248,24249,24250,24251,24252,24253,24254,24255,24256,24257,24258,24259,24260,24261,24262,24263,24264,24265,24266,24267,24268,24269,24270,24271,24272,24273,24274,24275,24276,24277,24278,24279,24280,24281,24282,24283,24284,24285,24286,24287,24288,24289,24290,24291,24292,24293,24294,24295,24296,24297,24298,24299,24300,24301,24302,24303,24304,24305,24306,24307,24308,24309,24310,24311,24312,24313,24314,24315,24316,24317,24318,24319,24320,24321,24322,24323,24324,24325,24326,24327,24328,24329,24330,24331,24332,24333,24334,24335,24336,24337,24338,24339,24340,24341,24342,24343,24344,24345,24346,24347,24348,24349,24350,24351,24352,24353,24354,24355,24356,24357,24358,24359,24360,24361,24362,24363,24364,24365,24366,24367,24368,24369,24370,24371,24372,24373,24374,24375,24376,24377,24378,24379,24380,24381,24382,24383,24384,24385,24386,24387,24388,24389,24390,24391,24392,24393,24394,24395,24396,24397,24398,24399,24400,24401,24402,24403,24404,24405,24406,24407,24408,24409,24410,24411,24412,24413,24414,24415,24416,24417,24418,24419,24420,24421,24422,24423,24424,24425,24426,24427,24428,24429,24430,24431,24432,24433,24434,24435,24436,24437,24438,24439,24440,24441,24442,24443,24444,24445,24446,24447,24448,24449,24450,24451,24452,24453,24454,24455,24456,24457,24458,24459,24460,24461,24462,24463,24464,24465,24466,24467,24468,24469,24470,24471,24472,24473,24474,24475,24476,24477,24478,24479,24480,24481,24482,24483,24484,24485,24486,24487,24488,24489,24490,24491,24492,24493,24494,24495,24496,24497,24498,24499,24500,24501,24502,24503,24504,24505,24506,24507,24508,24509,24510,24511,24512,24513,24514,24515,24516,24517,24518,24519,24520,24521,24522,24523,24524,24525,24526,24527,24528,24529,24530,24531,24532,24533,24534,24535,24536,24537,24538,24539,24540,24541,24542,24543,24544,24545,24546,24547,24548,24549,24550,24551,24552,24553,24554,24555,24556,24557,24558,24559,24560,24561,24562,24563,24564,24565,24566,24567,24568,24569,24570,24571,24572,24573,24574,24575,24576,24577,24578,24579,24580,24581,24582,24583,24584,24585,24586,24587,24588,24589,24590,24591,24592,24593,24594,24595,24596,24597,24598,24599,24600,24601,24602,24603,24604,24605,24606,24607,24608,24609,24610,24611,24612,24613,24614,24615,24616,24617,24618,24619,24620,24621,24622,24623,24624,24625,24626,24627,24628,24629,24630,24631,24632,24633,24634,24635,24636,24637,24638,24639,24640,24641,24642,24643,24644,24645,24646,24647,24648,24649,24650,24651,24652,24653,24654,24655,24656,24657,24658,24659,24660,24661,24662,24663,24664,24665,24666,24667,24668,24669,24670,24671,24672,24673,24674,24675,24676,24677,24678,24679,24680,24681,24682,24683,24684,24685,24686,24687,24688,24689,24690,24691,24692,24693,24694,24695,24696,24697,24698,24699,24700,24701,24702,24703,24704,24705,24706,24707,24708,24709,24710,24711,24712,24713,24714,24715,24716,24717,24718,24719,24720,24721,24722,24723,24724,24725,24726,24727,24728,24729,24730,24731,24732,24733,24734,24735,24736,24737,24738,24739,24740,24741,24742,24743,24744,24745,24746,24747,24748,24749,24750,24751,24752,24753,24754,24755,24756,24757,24758,24759,24760,24761,24762,24763,24764,24765,24766,24767,24768,24769,24770,24771,24772,24773,24774,24775,24776,24777,24778,24779,24780,24781,24782,24783,24784,24785,24786,24787,24788,24789,24790,24791,24792,24793,24794,24795,24796,24797,24798,24799,24800,24801,24802,24803,24804,24805,24806,24807,24808,24809,24810,24811,24812,24813,24814,24815,24816,24817,24818,24819,24820,24821,24822,24823,24824,24825,24826,24827,24828,24829,24830,24831,24832,24833,24834,24835,24836,24837,24838,24839,24840,24841,24842,24843,24844,24845,24846,24847,24848,24849,24850,24851,24852,24853,24854,24855,24856,24857,24858,24859,24860,24861,24862,24863,24864,24865,24866,24867,24868,24869,24870,24871,24872,24873,24874,24875,24876,24877,24878,24879,24880,24881,24882,24883,24884,24885,24886,24887,24888,24889,24890,24891,24892,24893,24894,24895,24896,24897,24898,24899,24900,24901,24902,24903,24904,24905,24906,24907,24908,24909,24910,24911,24912,24913,24914,24915,24916,24917,24918,24919,24920,24921,24922,24923,24924,24925,24926,24927,24928,24929,24930,24931,24932,24933,24934,24935,24936,24937,24938,24939,24940,24941,24942,24943,24944,24945,24946,24947,24948,24949,24950,24951,24952,24953,24954,24955,24956,24957,24958,24959,24960,24961,24962,24963,24964,24965,24966,24967,24968,24969,24970,24971,24972,24973,24974,24975,24976,24977,24978,24979,24980,24981,24982,24983,24984,24985,24986,24987,24988,24989,24990,24991,24992,24993,24994,24995,24996,24997,24998,24999,25000,25001,25002,25003,25004,25005,25006,25007,25008,25009,25010,25011,25012,25013,25014,25015,25016,25017,25018,25019,25020,25021,25022,25023,25024,25025,25026,25027,25028,25029,25030,25031,25032,25033,25034,25035,25036,25037,25038,25039,25040,25041,25042,25043,25044,25045,25046,25047,25048,25049,25050,25051,25052,25053,25054,25055,25056,25057,25058,25059,25060,25061,25062,25063,25064,25065,25066,25067,25068,25069,25070,25071,25072,25073,25074,25075,25076,25077,25078,25079,25080,25081,25082,25083,25084,25085,25086,25087,25088,25089,25090,25091,25092,25093,25094,25095,25096,25097,25098,25099,25100,25101,25102,25103,25104,25105,25106,25107,25108,25109,25110,25111,25112,25113,25114,25115,25116,25117,25118,25119,25120,25121,25122,25123,25124,25125,25126,25127,25128,25129,25130,25131,25132,25133,25134,25135,25136,25137,25138,25139,25140,25141,25142,25143,25144,25145,25146,25147,25148,25149,25150,25151,25152,25153,25154,25155,25156,25157,25158,25159,25160,25161,25162,25163,25164,25165,25166,25167,25168,25169,25170,25171,25172,25173,25174,25175,25176,25177,25178,25179,25180,25181,25182,25183,25184,25185,25186,25187,25188,25189,25190,25191,25192,25193,25194,25195,25196,25197,25198,25199,25200,25201,25202,25203,25204,25205,25206,25207,25208,25209,25210,25211,25212,25213,25214,25215,25216,25217,25218,25219,25220,25221,25222,25223,25224,25225,25226,25227,25228,25229,25230,25231,25232,25233,25234,25235,25236,25237,25238,25239,25240,25241,25242,25243,25244,25245,25246,25247,25248,25249,25250,25251,25252,25253,25254,25255,25256,25257,25258,25259,25260,25261,25262,25263,25264,25265,25266,25267,25268,25269,25270,25271,25272,25273,25274,25275,25276,25277,25278,25279,25280,25281,25282,25283,25284,25285,25286,25287,25288,25289,25290,25291,25292,25293,25294,25295,25296,25297,25298,25299,25300,25301,25302,25303,25304,25305,25306,25307,25308,25309,25310,25311,25312,25313,25314,25315,25316,25317,25318,25319,25320,25321,25322,25323,25324,25325,25326,25327,25328,25329,25330,25331,25332,25333,25334,25335,25336,25337,25338,25339,25340,25341,25342,25343,25344,25345,25346,25347,25348,25349,25350,25351,25352,25353,25354,25355,25356,25357,25358,25359,25360,25361,25362,25363,25364,25365,25366,25367,25368,25369,25370,25371,25372,25373,25374,25375,25376,25377,25378,25379,25380,25381,25382,25383,25384,25385,25386,25387,25388,25389,25390,25391,25392,25393,25394,25395,25396,25397,25398,25399,25400,25401,25402,25403,25404,25405,25406,25407,25408,25409,25410,25411,25412,25413,25414,25415,25416,25417,25418,25419,25420,25421,25422,25423,25424,25425,25426,25427,25428,25429,25430,25431,25432,25433,25434,25435,25436,25437,25438,25439,25440,25441,25442,25443,25444,25445,25446,25447,25448,25449,25450,25451,25452,25453,25454,25455,25456,25457,25458,25459,25460,25461,25462,25463,25464,25465,25466,25467,25468,25469,25470,25471,25472,25473,25474,25475,25476,25477,25478,25479,25480,25481,25482,25483,25484,25485,25486,25487,25488,25489,25490,25491,25492,25493,25494,25495,25496,25497,25498,25499,25500,25501,25502,25503,25504,25505,25506,25507,25508,25509,25510,25511,25512,25513,25514,25515,25516,25517,25518,25519,25520,25521,25522,25523,25524,25525,25526,25527,25528,25529,25530,25531,25532,25533,25534,25535,25536,25537,25538,25539,25540,25541,25542,25543,25544,25545,25546,25547,25548,25549,25550,25551,25552,25553,25554,25555,25556,25557,25558,25559,25560,25561,25562,25563,25564,25565,25566,25567,25568,25569,25570,25571,25572,25573,25574,25575,25576,25577,25578,25579,25580,25581,25582,25583,25584,25585,25586,25587,25588,25589,25590,25591,25592,25593,25594,25595,25596,25597,25598,25599,25600,25601,25602,25603,25604,25605,25606,25607,25608,25609,25610,25611,25612,25613,25614,25615,25616,25617,25618,25619,25620,25621,25622,25623,25624,25625,25626,25627,25628,25629,25630,25631,25632,25633,25634,25635,25636,25637,25638,25639,25640,25641,25642,25643,25644,25645,25646,25647,25648,25649,25650,25651,25652,25653,25654,25655,25656,25657,25658,25659,25660,25661,25662,25663,25664,25665,25666,25667,25668,25669,25670,25671,25672,25673,25674,25675,25676,25677,25678,25679,25680,25681,25682,25683,25684,25685,25686,25687,25688,25689,25690,25691,25692,25693,25694,25695,25696,25697,25698,25699,25700,25701,25702,25703,25704,25705,25706,25707,25708,25709,25710,25711,25712,25713,25714,25715,25716,25717,25718,25719,25720,25721,25722,25723,25724,25725,25726,25727,25728,25729,25730,25731,25732,25733,25734,25735,25736,25737,25738,25739,25740,25741,25742,25743,25744,25745,25746,25747,25748,25749,25750,25751,25752,25753,25754,25755,25756,25757,25758,25759,25760,25761,25762,25763,25764,25765,25766,25767,25768,25769,25770,25771,25772,25773,25774,25775,25776,25777,25778,25779,25780,25781,25782,25783,25784,25785,25786,25787,25788,25789,25790,25791,25792,25793,25794,25795,25796,25797,25798,25799,25800,25801,25802,25803,25804,25805,25806,25807,25808,25809,25810,25811,25812,25813,25814,25815,25816,25817,25818,25819,25820,25821,25822,25823,25824,25825,25826,25827,25828,25829,25830,25831,25832,25833,25834,25835,25836,25837,25838,25839,25840,25841,25842,25843,25844,25845,25846,25847,25848,25849,25850,25851,25852,25853,25854,25855,25856,25857,25858,25859,25860,25861,25862,25863,25864,25865,25866,25867,25868,25869,25870,25871,25872,25873,25874,25875,25876,25877,25878,25879,25880,25881,25882,25883,25884,25885,25886,25887,25888,25889,25890,25891,25892,25893,25894,25895,25896,25897,25898,25899,25900,25901,25902,25903,25904,25905,25906,25907,25908,25909,25910,25911,25912,25913,25914,25915,25916,25917,25918,25919,25920,25921,25922,25923,25924,25925,25926,25927,25928,25929,25930,25931,25932,25933,25934,25935,25936,25937,25938,25939,25940,25941,25942,25943,25944,25945,25946,25947,25948,25949,25950,25951,25952,25953,25954,25955,25956,25957,25958,25959,25960,25961,25962,25963,25964,25965,25966,25967,25968,25969,25970,25971,25972,25973,25974,25975,25976,25977,25978,25979,25980,25981,25982,25983,25984,25985,25986,25987,25988,25989,25990,25991,25992,25993,25994,25995,25996,25997,25998,25999,26000,26001,26002,26003,26004,26005,26006,26007,26008,26009,26010,26011,26012,26013,26014,26015,26016,26017,26018,26019,26020,26021,26022,26023,26024,26025,26026,26027,26028,26029,26030,26031,26032,26033,26034,26035,26036,26037,26038,26039,26040,26041,26042,26043,26044,26045,26046,26047,26048,26049,26050,26051,26052,26053,26054,26055,26056,26057,26058,26059,26060,26061,26062,26063,26064,26065,26066,26067,26068,26069,26070,26071,26072,26073,26074,26075,26076,26077,26078,26079,26080,26081,26082,26083,26084,26085,26086,26087,26088,26089,26090,26091,26092,26093,26094,26095,26096,26097,26098,26099,26100,26101,26102,26103,26104,26105,26106,26107,26108,26109,26110,26111,26112,26113,26114,26115,26116,26117,26118,26119,26120,26121,26122,26123,26124,26125,26126,26127,26128,26129,26130,26131,26132,26133,26134,26135,26136,26137,26138,26139,26140,26141,26142,26143,26144,26145,26146,26147,26148,26149,26150,26151,26152,26153,26154,26155,26156,26157,26158,26159,26160,26161,26162,26163,26164,26165,26166,26167,26168,26169,26170,26171,26172,26173,26174,26175,26176,26177,26178,26179,26180,26181,26182,26183,26184,26185,26186,26187,26188,26189,26190,26191,26192,26193,26194,26195,26196,26197,26198,26199,26200,26201,26202,26203,26204,26205,26206,26207,26208,26209,26210,26211,26212,26213,26214,26215,26216,26217,26218,26219,26220,26221,26222,26223,26224,26225,26226,26227,26228,26229,26230,26231,26232,26233,26234,26235,26236,26237,26238,26239,26240,26241,26242,26243,26244,26245,26246,26247,26248,26249,26250,26251,26252,26253,26254,26255,26256,26257,26258,26259,26260,26261,26262,26263,26264,26265,26266,26267,26268,26269,26270,26271,26272,26273,26274,26275,26276,26277,26278,26279,26280,26281,26282,26283,26284,26285,26286,26287,26288,26289,26290,26291,26292,26293,26294,26295,26296,26297,26298,26299,26300,26301,26302,26303,26304,26305,26306,26307,26308,26309,26310,26311,26312,26313,26314,26315,26316,26317,26318,26319,26320,26321,26322,26323,26324,26325,26326,26327,26328,26329,26330,26331,26332,26333,26334,26335,26336,26337,26338,26339,26340,26341,26342,26343,26344,26345,26346,26347,26348,26349,26350,26351,26352,26353,26354,26355,26356,26357,26358,26359,26360,26361,26362,26363,26364,26365,26366,26367,26368,26369,26370,26371,26372,26373,26374,26375,26376,26377,26378,26379,26380,26381,26382,26383,26384,26385,26386,26387,26388,26389,26390,26391,26392,26393,26394,26395,26396,26397,26398,26399,26400,26401,26402,26403,26404,26405,26406,26407,26408,26409,26410,26411,26412,26413,26414,26415,26416,26417,26418,26419,26420,26421,26422,26423,26424,26425,26426,26427,26428,26429,26430,26431,26432,26433,26434,26435,26436,26437,26438,26439,26440,26441,26442,26443,26444,26445,26446,26447,26448,26449,26450,26451,26452,26453,26454,26455,26456,26457,26458,26459,26460,26461,26462,26463,26464,26465,26466,26467,26468,26469,26470,26471,26472,26473,26474,26475,26476,26477,26478,26479,26480,26481,26482,26483,26484,26485,26486,26487,26488,26489,26490,26491,26492,26493,26494,26495,26496,26497,26498,26499,26500,26501,26502,26503,26504,26505,26506,26507,26508,26509,26510,26511,26512,26513,26514,26515,26516,26517,26518,26519,26520,26521,26522,26523,26524,26525,26526,26527,26528,26529,26530,26531,26532,26533,26534,26535,26536,26537,26538,26539,26540,26541,26542,26543,26544,26545,26546,26547,26548,26549,26550,26551,26552,26553,26554,26555,26556,26557,26558,26559,26560,26561,26562,26563,26564,26565,26566,26567,26568,26569,26570,26571,26572,26573,26574,26575,26576,26577,26578,26579,26580,26581,26582,26583,26584,26585,26586,26587,26588,26589,26590,26591,26592,26593,26594,26595,26596,26597,26598,26599,26600,26601,26602,26603,26604,26605,26606,26607,26608,26609,26610,26611,26612,26613,26614,26615,26616,26617,26618,26619,26620,26621,26622,26623,26624,26625,26626,26627,26628,26629,26630,26631,26632,26633,26634,26635,26636,26637,26638,26639,26640,26641,26642,26643,26644,26645,26646,26647,26648,26649,26650,26651,26652,26653,26654,26655,26656,26657,26658,26659,26660,26661,26662,26663,26664,26665,26666,26667,26668,26669,26670,26671,26672,26673,26674,26675,26676,26677,26678,26679,26680,26681,26682,26683,26684,26685,26686,26687,26688,26689,26690,26691,26692,26693,26694,26695,26696,26697,26698,26699,26700,26701,26702,26703,26704,26705,26706,26707,26708,26709,26710,26711,26712,26713,26714,26715,26716,26717,26718,26719,26720,26721,26722,26723,26724,26725,26726,26727,26728,26729,26730,26731,26732,26733,26734,26735,26736,26737,26738,26739,26740,26741,26742,26743,26744,26745,26746,26747,26748,26749,26750,26751,26752,26753,26754,26755,26756,26757,26758,26759,26760,26761,26762,26763,26764,26765,26766,26767,26768,26769,26770,26771,26772,26773,26774,26775,26776,26777,26778,26779,26780,26781,26782,26783,26784,26785,26786,26787,26788,26789,26790,26791,26792,26793,26794,26795,26796,26797,26798,26799,26800,26801,26802,26803,26804,26805,26806,26807,26808,26809,26810,26811,26812,26813,26814,26815,26816,26817,26818,26819,26820,26821,26822,26823,26824,26825,26826,26827,26828,26829,26830,26831,26832,26833,26834,26835,26836,26837,26838,26839,26840,26841,26842,26843,26844,26845,26846,26847,26848,26849,26850,26851,26852,26853,26854,26855,26856,26857,26858,26859,26860,26861,26862,26863,26864,26865,26866,26867,26868,26869,26870,26871,26872,26873,26874,26875,26876,26877,26878,26879,26880,26881,26882,26883,26884,26885,26886,26887,26888,26889,26890,26891,26892,26893,26894,26895,26896,26897,26898,26899,26900,26901,26902,26903,26904,26905,26906,26907,26908,26909,26910,26911,26912,26913,26914,26915,26916,26917,26918,26919,26920,26921,26922,26923,26924,26925,26926,26927,26928,26929,26930,26931,26932,26933,26934,26935,26936,26937,26938,26939,26940,26941,26942,26943,26944,26945,26946,26947,26948,26949,26950,26951,26952,26953,26954,26955,26956,26957,26958,26959,26960,26961,26962,26963,26964,26965,26966,26967,26968,26969,26970,26971,26972,26973,26974,26975,26976,26977,26978,26979,26980,26981,26982,26983,26984,26985,26986,26987,26988,26989,26990,26991,26992,26993,26994,26995,26996,26997,26998,26999,27000,27001,27002,27003,27004,27005,27006,27007,27008,27009,27010,27011,27012,27013,27014,27015,27016,27017,27018,27019,27020,27021,27022,27023,27024,27025,27026,27027,27028,27029,27030,27031,27032,27033,27034,27035,27036,27037,27038,27039,27040,27041,27042,27043,27044,27045,27046,27047,27048,27049,27050,27051,27052,27053,27054,27055,27056,27057,27058,27059,27060,27061,27062,27063,27064,27065,27066,27067,27068,27069,27070,27071,27072,27073,27074,27075,27076,27077,27078,27079,27080,27081,27082,27083,27084,27085,27086,27087,27088,27089,27090,27091,27092,27093,27094,27095,27096,27097,27098,27099,27100,27101,27102,27103,27104,27105,27106,27107,27108,27109,27110,27111,27112,27113,27114,27115,27116,27117,27118,27119,27120,27121,27122,27123,27124,27125,27126,27127,27128,27129,27130,27131,27132,27133,27134,27135,27136,27137,27138,27139,27140,27141,27142,27143,27144,27145,27146,27147,27148,27149,27150,27151,27152,27153,27154,27155,27156,27157,27158,27159,27160,27161,27162,27163,27164,27165,27166,27167,27168,27169,27170,27171,27172,27173,27174,27175,27176,27177,27178,27179,27180,27181,27182,27183,27184,27185,27186,27187,27188,27189,27190,27191,27192,27193,27194,27195,27196,27197,27198,27199,27200,27201,27202,27203,27204,27205,27206,27207,27208,27209,27210,27211,27212,27213,27214,27215,27216,27217,27218,27219,27220,27221,27222,27223,27224,27225,27226,27227,27228,27229,27230,27231,27232,27233,27234,27235,27236,27237,27238,27239,27240,27241,27242,27243,27244,27245,27246,27247,27248,27249,27250,27251,27252,27253,27254,27255,27256,27257,27258,27259,27260,27261,27262,27263,27264,27265,27266,27267,27268,27269,27270,27271,27272,27273,27274,27275,27276,27277,27278,27279,27280,27281,27282,27283,27284,27285,27286,27287,27288,27289,27290,27291,27292,27293,27294,27295,27296,27297,27298,27299,27300,27301,27302,27303,27304,27305,27306,27307,27308,27309,27310,27311,27312,27313,27314,27315,27316,27317,27318,27319,27320,27321,27322,27323,27324,27325,27326,27327,27328,27329,27330,27331,27332,27333,27334,27335,27336,27337,27338,27339,27340,27341,27342,27343,27344,27345,27346,27347,27348,27349,27350,27351,27352,27353,27354,27355,27356,27357,27358,27359,27360,27361,27362,27363,27364,27365,27366,27367,27368,27369,27370,27371,27372,27373,27374,27375,27376,27377,27378,27379,27380,27381,27382,27383,27384,27385,27386,27387,27388,27389,27390,27391,27392,27393,27394,27395,27396,27397,27398,27399,27400,27401,27402,27403,27404,27405,27406,27407,27408,27409,27410,27411,27412,27413,27414,27415,27416,27417,27418,27419,27420,27421,27422,27423,27424,27425,27426,27427,27428,27429,27430,27431,27432,27433,27434,27435,27436,27437,27438,27439,27440,27441,27442,27443,27444,27445,27446,27447,27448,27449,27450,27451,27452,27453,27454,27455,27456,27457,27458,27459,27460,27461,27462,27463,27464,27465,27466,27467,27468,27469,27470,27471,27472,27473,27474,27475,27476,27477,27478,27479,27480,27481,27482,27483,27484,27485,27486,27487,27488,27489,27490,27491,27492,27493,27494,27495,27496,27497,27498,27499,27500,27501,27502,27503,27504,27505,27506,27507,27508,27509,27510,27511,27512,27513,27514,27515,27516,27517,27518,27519,27520,27521,27522,27523,27524,27525,27526,27527,27528,27529,27530,27531,27532,27533,27534,27535,27536,27537,27538,27539,27540,27541,27542,27543,27544,27545,27546,27547,27548,27549,27550,27551,27552,27553,27554,27555,27556,27557,27558,27559,27560,27561,27562,27563,27564,27565,27566,27567,27568,27569,27570,27571,27572,27573,27574,27575,27576,27577,27578,27579,27580,27581,27582,27583,27584,27585,27586,27587,27588,27589,27590,27591,27592,27593,27594,27595,27596,27597,27598,27599,27600,27601,27602,27603,27604,27605,27606,27607,27608,27609,27610,27611,27612,27613,27614,27615,27616,27617,27618,27619,27620,27621,27622,27623,27624,27625,27626,27627,27628,27629,27630,27631,27632,27633,27634,27635,27636,27637,27638,27639,27640,27641,27642,27643,27644,27645,27646,27647,27648,27649,27650,27651,27652,27653,27654,27655,27656,27657,27658,27659,27660,27661,27662,27663,27664,27665,27666,27667,27668,27669,27670,27671,27672,27673,27674,27675,27676,27677,27678,27679,27680,27681,27682,27683,27684,27685,27686,27687,27688,27689,27690,27691,27692,27693,27694,27695,27696,27697,27698,27699,27700,27701,27702,27703,27704,27705,27706,27707,27708,27709,27710,27711,27712,27713,27714,27715,27716,27717,27718,27719,27720,27721,27722,27723,27724,27725,27726,27727,27728,27729,27730,27731,27732,27733,27734,27735,27736,27737,27738,27739,27740,27741,27742,27743,27744,27745,27746,27747,27748,27749,27750,27751,27752,27753,27754,27755,27756,27757,27758,27759,27760,27761,27762,27763,27764,27765,27766,27767,27768,27769,27770,27771,27772,27773,27774,27775,27776,27777,27778,27779,27780,27781,27782,27783,27784,27785,27786,27787,27788,27789,27790,27791,27792,27793,27794,27795,27796,27797,27798,27799,27800,27801,27802,27803,27804,27805,27806,27807,27808,27809,27810,27811,27812,27813,27814,27815,27816,27817,27818,27819,27820,27821,27822,27823,27824,27825,27826,27827,27828,27829,27830,27831,27832,27833,27834,27835,27836,27837,27838,27839,27840,27841,27842,27843,27844,27845,27846,27847,27848,27849,27850,27851,27852,27853,27854,27855,27856,27857,27858,27859,27860,27861,27862,27863,27864,27865,27866,27867,27868,27869,27870,27871,27872,27873,27874,27875,27876,27877,27878,27879,27880,27881,27882,27883,27884,27885,27886,27887,27888,27889,27890,27891,27892,27893,27894,27895,27896,27897,27898,27899,27900,27901,27902,27903,27904,27905,27906,27907,27908,27909,27910,27911,27912,27913,27914,27915,27916,27917,27918,27919,27920,27921,27922,27923,27924,27925,27926,27927,27928,27929,27930,27931,27932,27933,27934,27935,27936,27937,27938,27939,27940,27941,27942,27943,27944,27945,27946,27947,27948,27949,27950,27951,27952,27953,27954,27955,27956,27957,27958,27959,27960,27961,27962,27963,27964,27965,27966,27967,27968,27969,27970,27971,27972,27973,27974,27975,27976,27977,27978,27979,27980,27981,27982,27983,27984,27985,27986,27987,27988,27989,27990,27991,27992,27993,27994,27995,27996,27997,27998,27999,28000,28001,28002,28003,28004,28005,28006,28007,28008,28009,28010,28011,28012,28013,28014,28015,28016,28017,28018,28019,28020,28021,28022,28023,28024,28025,28026,28027,28028,28029,28030,28031,28032,28033,28034,28035,28036,28037,28038,28039,28040,28041,28042,28043,28044,28045,28046,28047,28048,28049,28050,28051,28052,28053,28054,28055,28056,28057,28058,28059,28060,28061,28062,28063,28064,28065,28066,28067,28068,28069,28070,28071,28072,28073,28074,28075,28076,28077,28078,28079,28080,28081,28082,28083,28084,28085,28086,28087,28088,28089,28090,28091,28092,28093,28094,28095,28096,28097,28098,28099,28100,28101,28102,28103,28104,28105,28106,28107,28108,28109,28110,28111,28112,28113,28114,28115,28116,28117,28118,28119,28120,28121,28122,28123,28124,28125,28126,28127,28128,28129,28130,28131,28132,28133,28134,28135,28136,28137,28138,28139,28140,28141,28142,28143,28144,28145,28146,28147,28148,28149,28150,28151,28152,28153,28154,28155,28156,28157,28158,28159,28160,28161,28162,28163,28164,28165,28166,28167,28168,28169,28170,28171,28172,28173,28174,28175,28176,28177,28178,28179,28180,28181,28182,28183,28184,28185,28186,28187,28188,28189,28190,28191,28192,28193,28194,28195,28196,28197,28198,28199,28200,28201,28202,28203,28204,28205,28206,28207,28208,28209,28210,28211,28212,28213,28214,28215,28216,28217,28218,28219,28220,28221,28222,28223,28224,28225,28226,28227,28228,28229,28230,28231,28232,28233,28234,28235,28236,28237,28238,28239,28240,28241,28242,28243,28244,28245,28246,28247,28248,28249,28250,28251,28252,28253,28254,28255,28256,28257,28258,28259,28260,28261,28262,28263,28264,28265,28266,28267,28268,28269,28270,28271,28272,28273,28274,28275,28276,28277,28278,28279,28280,28281,28282,28283,28284,28285,28286,28287,28288,28289,28290,28291,28292,28293,28294,28295,28296,28297,28298,28299,28300,28301,28302,28303,28304,28305,28306,28307,28308,28309,28310,28311,28312,28313,28314,28315,28316,28317,28318,28319,28320,28321,28322,28323,28324,28325,28326,28327,28328,28329,28330,28331,28332,28333,28334,28335,28336,28337,28338,28339,28340,28341,28342,28343,28344,28345,28346,28347,28348,28349,28350,28351,28352,28353,28354,28355,28356,28357,28358,28359,28360,28361,28362,28363,28364,28365,28366,28367,28368,28369,28370,28371,28372,28373,28374,28375,28376,28377,28378,28379,28380,28381,28382,28383,28384,28385,28386,28387,28388,28389,28390,28391,28392,28393,28394,28395,28396,28397,28398,28399,28400,28401,28402,28403,28404,28405,28406,28407,28408,28409,28410,28411,28412,28413,28414,28415,28416,28417,28418,28419,28420,28421,28422,28423,28424,28425,28426,28427,28428,28429,28430,28431,28432,28433,28434,28435,28436,28437,28438,28439,28440,28441,28442,28443,28444,28445,28446,28447,28448,28449,28450,28451,28452,28453,28454,28455,28456,28457,28458,28459,28460,28461,28462,28463,28464,28465,28466,28467,28468,28469,28470,28471,28472,28473,28474,28475,28476,28477,28478,28479,28480,28481,28482,28483,28484,28485,28486,28487,28488,28489,28490,28491,28492,28493,28494,28495,28496,28497,28498,28499,28500,28501,28502,28503,28504,28505,28506,28507,28508,28509,28510,28511,28512,28513,28514,28515,28516,28517,28518,28519,28520,28521,28522,28523,28524,28525,28526,28527,28528,28529,28530,28531,28532,28533,28534,28535,28536,28537,28538,28539,28540,28541,28542,28543,28544,28545,28546,28547,28548,28549,28550,28551,28552,28553,28554,28555,28556,28557,28558,28559,28560,28561,28562,28563,28564,28565,28566,28567,28568,28569,28570,28571,28572,28573,28574,28575,28576,28577,28578,28579,28580,28581,28582,28583,28584,28585,28586,28587,28588,28589,28590,28591,28592,28593,28594,28595,28596,28597,28598,28599,28600,28601,28602,28603,28604,28605,28606,28607,28608,28609,28610,28611,28612,28613,28614,28615,28616,28617,28618,28619,28620,28621,28622,28623,28624,28625,28626,28627,28628,28629,28630,28631,28632,28633,28634,28635,28636,28637,28638,28639,28640,28641,28642,28643,28644,28645,28646,28647,28648,28649,28650,28651,28652,28653,28654,28655,28656,28657,28658,28659,28660,28661,28662,28663,28664,28665,28666,28667,28668,28669,28670,28671,28672,28673,28674,28675,28676,28677,28678,28679,28680,28681,28682,28683,28684,28685,28686,28687,28688,28689,28690,28691,28692,28693,28694,28695,28696,28697,28698,28699,28700,28701,28702,28703,28704,28705,28706,28707,28708,28709,28710,28711,28712,28713,28714,28715,28716,28717,28718,28719,28720,28721,28722,28723,28724,28725,28726,28727,28728,28729,28730,28731,28732,28733,28734,28735,28736,28737,28738,28739,28740,28741,28742,28743,28744,28745,28746,28747,28748,28749,28750,28751,28752,28753,28754,28755,28756,28757,28758,28759,28760,28761,28762,28763,28764,28765,28766,28767,28768,28769,28770,28771,28772,28773,28774,28775,28776,28777,28778,28779,28780,28781,28782,28783,28784,28785,28786,28787,28788,28789,28790,28791,28792,28793,28794,28795,28796,28797,28798,28799,28800,28801,28802,28803,28804,28805,28806,28807,28808,28809,28810,28811,28812,28813,28814,28815,28816,28817,28818,28819,28820,28821,28822,28823,28824,28825,28826,28827,28828,28829,28830,28831,28832,28833,28834,28835,28836,28837,28838,28839,28840,28841,28842,28843,28844,28845,28846,28847,28848,28849,28850,28851,28852,28853,28854,28855,28856,28857,28858,28859,28860,28861,28862,28863,28864,28865,28866,28867,28868,28869,28870,28871,28872,28873,28874,28875,28876,28877,28878,28879,28880,28881,28882,28883,28884,28885,28886,28887,28888,28889,28890,28891,28892,28893,28894,28895,28896,28897,28898,28899,28900,28901,28902,28903,28904,28905,28906,28907,28908,28909,28910,28911,28912,28913,28914,28915,28916,28917,28918,28919,28920,28921,28922,28923,28924,28925,28926,28927,28928,28929,28930,28931,28932,28933,28934,28935,28936,28937,28938,28939,28940,28941,28942,28943,28944,28945,28946,28947,28948,28949,28950,28951,28952,28953,28954,28955,28956,28957,28958,28959,28960,28961,28962,28963,28964,28965,28966,28967,28968,28969,28970,28971,28972,28973,28974,28975,28976,28977,28978,28979,28980,28981,28982,28983,28984,28985,28986,28987,28988,28989,28990,28991,28992,28993,28994,28995,28996,28997,28998,28999,29000,29001,29002,29003,29004,29005,29006,29007,29008,29009,29010,29011,29012,29013,29014,29015,29016,29017,29018,29019,29020,29021,29022,29023,29024,29025,29026,29027,29028,29029,29030,29031,29032,29033,29034,29035,29036,29037,29038,29039,29040,29041,29042,29043,29044,29045,29046,29047,29048,29049,29050,29051,29052,29053,29054,29055,29056,29057,29058,29059,29060,29061,29062,29063,29064,29065,29066,29067,29068,29069,29070,29071,29072,29073,29074,29075,29076,29077,29078,29079,29080,29081,29082,29083,29084,29085,29086,29087,29088,29089,29090,29091,29092,29093,29094,29095,29096,29097,29098,29099,29100,29101,29102,29103,29104,29105,29106,29107,29108,29109,29110,29111,29112,29113,29114,29115,29116,29117,29118,29119,29120,29121,29122,29123,29124,29125,29126,29127,29128,29129,29130,29131,29132,29133,29134,29135,29136,29137,29138,29139,29140,29141,29142,29143,29144,29145,29146,29147,29148,29149,29150,29151,29152,29153,29154,29155,29156,29157,29158,29159,29160,29161,29162,29163,29164,29165,29166,29167,29168,29169,29170,29171,29172,29173,29174,29175,29176,29177,29178,29179,29180,29181,29182,29183,29184,29185,29186,29187,29188,29189,29190,29191,29192,29193,29194,29195,29196,29197,29198,29199,29200,29201,29202,29203,29204,29205,29206,29207,29208,29209,29210,29211,29212,29213,29214,29215,29216,29217,29218,29219,29220,29221,29222,29223,29224,29225,29226,29227,29228,29229,29230,29231,29232,29233,29234,29235,29236,29237,29238,29239,29240,29241,29242,29243,29244,29245,29246,29247,29248,29249,29250,29251,29252,29253,29254,29255,29256,29257,29258,29259,29260,29261,29262,29263,29264,29265,29266,29267,29268,29269,29270,29271,29272,29273,29274,29275,29276,29277,29278,29279,29280,29281,29282,29283,29284,29285,29286,29287,29288,29289,29290,29291,29292,29293,29294,29295,29296,29297,29298,29299,29300,29301,29302,29303,29304,29305,29306,29307,29308,29309,29310,29311,29312,29313,29314,29315,29316,29317,29318,29319,29320,29321,29322,29323,29324,29325,29326,29327,29328,29329,29330,29331,29332,29333,29334,29335,29336,29337,29338,29339,29340,29341,29342,29343,29344,29345,29346,29347,29348,29349,29350,29351,29352,29353,29354,29355,29356,29357,29358,29359,29360,29361,29362,29363,29364,29365,29366,29367,29368,29369,29370,29371,29372,29373,29374,29375,29376,29377,29378,29379,29380,29381,29382,29383,29384,29385,29386,29387,29388,29389,29390,29391,29392,29393,29394,29395,29396,29397,29398,29399,29400,29401,29402,29403,29404,29405,29406,29407,29408,29409,29410,29411,29412,29413,29414,29415,29416,29417,29418,29419,29420,29421,29422,29423,29424,29425,29426,29427,29428,29429,29430,29431,29432,29433,29434,29435,29436,29437,29438,29439,29440,29441,29442,29443,29444,29445,29446,29447,29448,29449,29450,29451,29452,29453,29454,29455,29456,29457,29458,29459,29460,29461,29462,29463,29464,29465,29466,29467,29468,29469,29470,29471,29472,29473,29474,29475,29476,29477,29478,29479,29480,29481,29482,29483,29484,29485,29486,29487,29488,29489,29490,29491,29492,29493,29494,29495,29496,29497,29498,29499,29500,29501,29502,29503,29504,29505,29506,29507,29508,29509,29510,29511,29512,29513,29514,29515,29516,29517,29518,29519,29520,29521,29522,29523,29524,29525,29526,29527,29528,29529,29530,29531,29532,29533,29534,29535,29536,29537,29538,29539,29540,29541,29542,29543,29544,29545,29546,29547,29548,29549,29550,29551,29552,29553,29554,29555,29556,29557,29558,29559,29560,29561,29562,29563,29564,29565,29566,29567,29568,29569,29570,29571,29572,29573,29574,29575,29576,29577,29578,29579,29580,29581,29582,29583,29584,29585,29586,29587,29588,29589,29590,29591,29592,29593,29594,29595,29596,29597,29598,29599,29600,29601,29602,29603,29604,29605,29606,29607,29608,29609,29610,29611,29612,29613,29614,29615,29616,29617,29618,29619,29620,29621,29622,29623,29624,29625,29626,29627,29628,29629,29630,29631,29632,29633,29634,29635,29636,29637,29638,29639,29640,29641,29642,29643,29644,29645,29646,29647,29648,29649,29650,29651,29652,29653,29654,29655,29656,29657,29658,29659,29660,29661,29662,29663,29664,29665,29666,29667,29668,29669,29670,29671,29672,29673,29674,29675,29676,29677,29678,29679,29680,29681,29682,29683,29684,29685,29686,29687,29688,29689,29690,29691,29692,29693,29694,29695,29696,29697,29698,29699,29700,29701,29702,29703,29704,29705,29706,29707,29708,29709,29710,29711,29712,29713,29714,29715,29716,29717,29718,29719,29720,29721,29722,29723,29724,29725,29726,29727,29728,29729,29730,29731,29732,29733,29734,29735,29736,29737,29738,29739,29740,29741,29742,29743,29744,29745,29746,29747,29748,29749,29750,29751,29752,29753,29754,29755,29756,29757,29758,29759,29760,29761,29762,29763,29764,29765,29766,29767,29768,29769,29770,29771,29772,29773,29774,29775,29776,29777,29778,29779,29780,29781,29782,29783,29784,29785,29786,29787,29788,29789,29790,29791,29792,29793,29794,29795,29796,29797,29798,29799,29800,29801,29802,29803,29804,29805,29806,29807,29808,29809,29810,29811,29812,29813,29814,29815,29816,29817,29818,29819,29820,29821,29822,29823,29824,29825,29826,29827,29828,29829,29830,29831,29832,29833,29834,29835,29836,29837,29838,29839,29840,29841,29842,29843,29844,29845,29846,29847,29848,29849,29850,29851,29852,29853,29854,29855,29856,29857,29858,29859,29860,29861,29862,29863,29864,29865,29866,29867,29868,29869,29870,29871,29872,29873,29874,29875,29876,29877,29878,29879,29880,29881,29882,29883,29884,29885,29886,29887,29888,29889,29890,29891,29892,29893,29894,29895,29896,29897,29898,29899,29900,29901,29902,29903,29904,29905,29906,29907,29908,29909,29910,29911,29912,29913,29914,29915,29916,29917,29918,29919,29920,29921,29922,29923,29924,29925,29926,29927,29928,29929,29930,29931,29932,29933,29934,29935,29936,29937,29938,29939,29940,29941,29942,29943,29944,29945,29946,29947,29948,29949,29950,29951,29952,29953,29954,29955,29956,29957,29958,29959,29960,29961,29962,29963,29964,29965,29966,29967,29968,29969,29970,29971,29972,29973,29974,29975,29976,29977,29978,29979,29980,29981,29982,29983,29984,29985,29986,29987,29988,29989,29990,29991,29992,29993,29994,29995,29996,29997,29998,29999,30000,30001,30002,30003,30004,30005,30006,30007,30008,30009,30010,30011,30012,30013,30014,30015,30016,30017,30018,30019,30020,30021,30022,30023,30024,30025,30026,30027,30028,30029,30030,30031,30032,30033,30034,30035,30036,30037,30038,30039,30040,30041,30042,30043,30044,30045,30046,30047,30048,30049,30050,30051,30052,30053,30054,30055,30056,30057,30058,30059,30060,30061,30062,30063,30064,30065,30066,30067,30068,30069,30070,30071,30072,30073,30074,30075,30076,30077,30078,30079,30080,30081,30082,30083,30084,30085,30086,30087,30088,30089,30090,30091,30092,30093,30094,30095,30096,30097,30098,30099,30100,30101,30102,30103,30104,30105,30106,30107,30108,30109,30110,30111,30112,30113,30114,30115,30116,30117,30118,30119,30120,30121,30122,30123,30124,30125,30126,30127,30128,30129,30130,30131,30132,30133,30134,30135,30136,30137,30138,30139,30140,30141,30142,30143,30144,30145,30146,30147,30148,30149,30150,30151,30152,30153,30154,30155,30156,30157,30158,30159,30160,30161,30162,30163,30164,30165,30166,30167,30168,30169,30170,30171,30172,30173,30174,30175,30176,30177,30178,30179,30180,30181,30182,30183,30184,30185,30186,30187,30188,30189,30190,30191,30192,30193,30194,30195,30196,30197,30198,30199,30200,30201,30202,30203,30204,30205,30206,30207,30208,30209,30210,30211,30212,30213,30214,30215,30216,30217,30218,30219,30220,30221,30222,30223,30224,30225,30226,30227,30228,30229,30230,30231,30232,30233,30234,30235,30236,30237,30238,30239,30240,30241,30242,30243,30244,30245,30246,30247,30248,30249,30250,30251,30252,30253,30254,30255,30256,30257,30258,30259,30260,30261,30262,30263,30264,30265,30266,30267,30268,30269,30270,30271,30272,30273,30274,30275,30276,30277,30278,30279,30280,30281,30282,30283,30284,30285,30286,30287,30288,30289,30290,30291,30292,30293,30294,30295,30296,30297,30298,30299,30300,30301,30302,30303,30304,30305,30306,30307,30308,30309,30310,30311,30312,30313,30314,30315,30316,30317,30318,30319,30320,30321,30322,30323,30324,30325,30326,30327,30328,30329,30330,30331,30332,30333,30334,30335,30336,30337,30338,30339,30340,30341,30342,30343,30344,30345,30346,30347,30348,30349,30350,30351,30352,30353,30354,30355,30356,30357,30358,30359,30360,30361,30362,30363,30364,30365,30366,30367,30368,30369,30370,30371,30372,30373,30374,30375,30376,30377,30378,30379,30380,30381,30382,30383,30384,30385,30386,30387,30388,30389,30390,30391,30392,30393,30394,30395,30396,30397,30398,30399,30400,30401,30402,30403,30404,30405,30406,30407,30408,30409,30410,30411,30412,30413,30414,30415,30416,30417,30418,30419,30420,30421,30422,30423,30424,30425,30426,30427,30428,30429,30430,30431,30432,30433,30434,30435,30436,30437,30438,30439,30440,30441,30442,30443,30444,30445,30446,30447,30448,30449,30450,30451,30452,30453,30454,30455,30456,30457,30458,30459,30460,30461,30462,30463,30464,30465,30466,30467,30468,30469,30470,30471,30472,30473,30474,30475,30476,30477,30478,30479,30480,30481,30482,30483,30484,30485,30486,30487,30488,30489,30490,30491,30492,30493,30494,30495,30496,30497,30498,30499,30500,30501,30502,30503,30504,30505,30506,30507,30508,30509,30510,30511,30512,30513,30514,30515,30516,30517,30518,30519,30520,30521,30522,30523,30524,30525,30526,30527,30528,30529,30530,30531,30532,30533,30534,30535,30536,30537,30538,30539,30540,30541,30542,30543,30544,30545,30546,30547,30548,30549,30550,30551,30552,30553,30554,30555,30556,30557,30558,30559,30560,30561,30562,30563,30564,30565,30566,30567,30568,30569,30570,30571,30572,30573,30574,30575,30576,30577,30578,30579,30580,30581,30582,30583,30584,30585,30586,30587,30588,30589,30590,30591,30592,30593,30594,30595,30596,30597,30598,30599,30600,30601,30602,30603,30604,30605,30606,30607,30608,30609,30610,30611,30612,30613,30614,30615,30616,30617,30618,30619,30620,30621,30622,30623,30624,30625,30626,30627,30628,30629,30630,30631,30632,30633,30634,30635,30636,30637,30638,30639,30640,30641,30642,30643,30644,30645,30646,30647,30648,30649,30650,30651,30652,30653,30654,30655,30656,30657,30658,30659,30660,30661,30662,30663,30664,30665,30666,30667,30668,30669,30670,30671,30672,30673,30674,30675,30676,30677,30678,30679,30680,30681,30682,30683,30684,30685,30686,30687,30688,30689,30690,30691,30692,30693,30694,30695,30696,30697,30698,30699,30700,30701,30702,30703,30704,30705,30706,30707,30708,30709,30710,30711,30712,30713,30714,30715,30716,30717,30718,30719,30720,30721,30722,30723,30724,30725,30726,30727,30728,30729,30730,30731,30732,30733,30734,30735,30736,30737,30738,30739,30740,30741,30742,30743,30744,30745,30746,30747,30748,30749,30750,30751,30752,30753,30754,30755,30756,30757,30758,30759,30760,30761,30762,30763,30764,30765,30766,30767,30768,30769,30770,30771,30772,30773,30774,30775,30776,30777,30778,30779,30780,30781,30782,30783,30784,30785,30786,30787,30788,30789,30790,30791,30792,30793,30794,30795,30796,30797,30798,30799,30800,30801,30802,30803,30804,30805,30806,30807,30808,30809,30810,30811,30812,30813,30814,30815,30816,30817,30818,30819,30820,30821,30822,30823,30824,30825,30826,30827,30828,30829,30830,30831,30832,30833,30834,30835,30836,30837,30838,30839,30840,30841,30842,30843,30844,30845,30846,30847,30848,30849,30850,30851,30852,30853,30854,30855,30856,30857,30858,30859,30860,30861,30862,30863,30864,30865,30866,30867,30868,30869,30870,30871,30872,30873,30874,30875,30876,30877,30878,30879,30880,30881,30882,30883,30884,30885,30886,30887,30888,30889,30890,30891,30892,30893,30894,30895,30896,30897,30898,30899,30900,30901,30902,30903,30904,30905,30906,30907,30908,30909,30910,30911,30912,30913,30914,30915,30916,30917,30918,30919,30920,30921,30922,30923,30924,30925,30926,30927,30928,30929,30930,30931,30932,30933,30934,30935,30936,30937,30938,30939,30940,30941,30942,30943,30944,30945,30946,30947,30948,30949,30950,30951,30952,30953,30954,30955,30956,30957,30958,30959,30960,30961,30962,30963,30964,30965,30966,30967,30968,30969,30970,30971,30972,30973,30974,30975,30976,30977,30978,30979,30980,30981,30982,30983,30984,30985,30986,30987,30988,30989,30990,30991,30992,30993,30994,30995,30996,30997,30998,30999,31000,31001,31002,31003,31004,31005,31006,31007,31008,31009,31010,31011,31012,31013,31014,31015,31016,31017,31018,31019,31020,31021,31022,31023,31024,31025,31026,31027,31028,31029,31030,31031,31032,31033,31034,31035,31036,31037,31038,31039,31040,31041,31042,31043,31044,31045,31046,31047,31048,31049,31050,31051,31052,31053,31054,31055,31056,31057,31058,31059,31060,31061,31062,31063,31064,31065,31066,31067,31068,31069,31070,31071,31072,31073,31074,31075,31076,31077,31078,31079,31080,31081,31082,31083,31084,31085,31086,31087,31088,31089,31090,31091,31092,31093,31094,31095,31096,31097,31098,31099,31100,31101,31102,31103,31104,31105,31106,31107,31108,31109,31110,31111,31112,31113,31114,31115,31116,31117,31118,31119,31120,31121,31122,31123,31124,31125,31126,31127,31128,31129,31130,31131,31132,31133,31134,31135,31136,31137,31138,31139,31140,31141,31142,31143,31144,31145,31146,31147,31148,31149,31150,31151,31152,31153,31154,31155,31156,31157,31158,31159,31160,31161,31162,31163,31164,31165,31166,31167,31168,31169,31170,31171,31172,31173,31174,31175,31176,31177,31178,31179,31180,31181,31182,31183,31184,31185,31186,31187,31188,31189,31190,31191,31192,31193,31194,31195,31196,31197,31198,31199,31200,31201,31202,31203,31204,31205,31206,31207,31208,31209,31210,31211,31212,31213,31214,31215,31216,31217,31218,31219,31220,31221,31222,31223,31224,31225,31226,31227,31228,31229,31230,31231,31232,31233,31234,31235,31236,31237,31238,31239,31240,31241,31242,31243,31244,31245,31246,31247,31248,31249,31250,31251,31252,31253,31254,31255,31256,31257,31258,31259,31260,31261,31262,31263,31264,31265,31266,31267,31268,31269,31270,31271,31272,31273,31274,31275,31276,31277,31278,31279,31280,31281,31282,31283,31284,31285,31286,31287,31288,31289,31290,31291,31292,31293,31294,31295,31296,31297,31298,31299,31300,31301,31302,31303,31304,31305,31306,31307,31308,31309,31310,31311,31312,31313,31314,31315,31316,31317,31318,31319,31320,31321,31322,31323,31324,31325,31326,31327,31328,31329,31330,31331,31332,31333,31334,31335,31336,31337,31338,31339,31340,31341,31342,31343,31344,31345,31346,31347,31348,31349,31350,31351,31352,31353,31354,31355,31356,31357,31358,31359,31360,31361,31362,31363,31364,31365,31366,31367,31368,31369,31370,31371,31372,31373,31374,31375,31376,31377,31378,31379,31380,31381,31382,31383,31384,31385,31386,31387,31388,31389,31390,31391,31392,31393,31394,31395,31396,31397,31398,31399,31400,31401,31402,31403,31404,31405,31406,31407,31408,31409,31410,31411,31412,31413,31414,31415,31416,31417,31418,31419,31420,31421,31422,31423,31424,31425,31426,31427,31428,31429,31430,31431,31432,31433,31434,31435,31436,31437,31438,31439,31440,31441,31442,31443,31444,31445,31446,31447,31448,31449,31450,31451,31452,31453,31454,31455,31456,31457,31458,31459,31460,31461,31462,31463,31464,31465,31466,31467,31468,31469,31470,31471,31472,31473,31474,31475,31476,31477,31478,31479,31480,31481,31482,31483,31484,31485,31486,31487,31488,31489,31490,31491,31492,31493,31494,31495,31496,31497,31498,31499,31500,31501,31502,31503,31504,31505,31506,31507,31508,31509,31510,31511,31512,31513,31514,31515,31516,31517,31518,31519,31520,31521,31522,31523,31524,31525,31526,31527,31528,31529,31530,31531,31532,31533,31534,31535,31536,31537,31538,31539,31540,31541,31542,31543,31544,31545,31546,31547,31548,31549,31550,31551,31552,31553,31554,31555,31556,31557,31558,31559,31560,31561,31562,31563,31564,31565,31566,31567,31568,31569,31570,31571,31572,31573,31574,31575,31576,31577,31578,31579,31580,31581,31582,31583,31584,31585,31586,31587,31588,31589,31590,31591,31592,31593,31594,31595,31596,31597,31598,31599,31600,31601,31602,31603,31604,31605,31606,31607,31608,31609,31610,31611,31612,31613,31614,31615,31616,31617,31618,31619,31620,31621,31622,31623,31624,31625,31626,31627,31628,31629,31630,31631,31632,31633,31634,31635,31636,31637,31638,31639,31640,31641,31642,31643,31644,31645,31646,31647,31648,31649,31650,31651,31652,31653,31654,31655,31656,31657,31658,31659,31660,31661,31662,31663,31664,31665,31666,31667,31668,31669,31670,31671,31672,31673,31674,31675,31676,31677,31678,31679,31680,31681,31682,31683,31684,31685,31686,31687,31688,31689,31690,31691,31692,31693,31694,31695,31696,31697,31698,31699,31700,31701,31702,31703,31704,31705,31706,31707,31708,31709,31710,31711,31712,31713,31714,31715,31716,31717,31718,31719,31720,31721,31722,31723,31724,31725,31726,31727,31728,31729,31730,31731,31732,31733,31734,31735,31736,31737,31738,31739,31740,31741,31742,31743,31744,31745,31746,31747,31748,31749,31750,31751,31752,31753,31754,31755,31756,31757,31758,31759,31760,31761,31762,31763,31764,31765,31766,31767,31768,31769,31770,31771,31772,31773,31774,31775,31776,31777,31778,31779,31780,31781,31782,31783,31784,31785,31786,31787,31788,31789,31790,31791,31792,31793,31794,31795,31796,31797,31798,31799,31800,31801,31802,31803,31804,31805,31806,31807,31808,31809,31810,31811,31812,31813,31814,31815,31816,31817,31818,31819,31820,31821,31822,31823,31824,31825,31826,31827,31828,31829,31830,31831,31832,31833,31834,31835,31836,31837,31838,31839,31840,31841,31842,31843,31844,31845,31846,31847,31848,31849,31850,31851,31852,31853,31854,31855,31856,31857,31858,31859,31860,31861,31862,31863,31864,31865,31866,31867,31868,31869,31870,31871,31872,31873,31874,31875,31876,31877,31878,31879,31880,31881,31882,31883,31884,31885,31886,31887,31888,31889,31890,31891,31892,31893,31894,31895,31896,31897,31898,31899,31900,31901,31902,31903,31904,31905,31906,31907,31908,31909,31910,31911,31912,31913,31914,31915,31916,31917,31918,31919,31920,31921,31922,31923,31924,31925,31926,31927,31928,31929,31930,31931,31932,31933,31934,31935,31936,31937,31938,31939,31940,31941,31942,31943,31944,31945,31946,31947,31948,31949,31950,31951,31952,31953,31954,31955,31956,31957,31958,31959,31960,31961,31962,31963,31964,31965,31966,31967,31968,31969,31970,31971,31972,31973,31974,31975,31976,31977,31978,31979,31980,31981,31982,31983,31984,31985,31986,31987,31988,31989,31990,31991,31992,31993,31994,31995,31996,31997,31998,31999,32000,32001,32002,32003,32004,32005,32006,32007,32008,32009,32010,32011,32012,32013,32014,32015,32016,32017,32018,32019,32020,32021,32022,32023,32024,32025,32026,32027,32028,32029,32030,32031,32032,32033,32034,32035,32036,32037,32038,32039,32040,32041,32042,32043,32044,32045,32046,32047,32048,32049,32050,32051,32052,32053,32054,32055,32056,32057,32058,32059,32060,32061,32062,32063,32064,32065,32066,32067,32068,32069,32070,32071,32072,32073,32074,32075,32076,32077,32078,32079,32080,32081,32082,32083,32084,32085,32086,32087,32088,32089,32090,32091,32092,32093,32094,32095,32096,32097,32098,32099,32100,32101,32102,32103,32104,32105,32106,32107,32108,32109,32110,32111,32112,32113,32114,32115,32116,32117,32118,32119,32120,32121,32122,32123,32124,32125,32126,32127,32128,32129,32130,32131,32132,32133,32134,32135,32136,32137,32138,32139,32140,32141,32142,32143,32144,32145,32146,32147,32148,32149,32150,32151,32152,32153,32154,32155,32156,32157,32158,32159,32160,32161,32162,32163,32164,32165,32166,32167,32168,32169,32170,32171,32172,32173,32174,32175,32176,32177,32178,32179,32180,32181,32182,32183,32184,32185,32186,32187,32188,32189,32190,32191,32192,32193,32194,32195,32196,32197,32198,32199,32200,32201,32202,32203,32204,32205,32206,32207,32208,32209,32210,32211,32212,32213,32214,32215,32216,32217,32218,32219,32220,32221,32222,32223,32224,32225,32226,32227,32228,32229,32230,32231,32232,32233,32234,32235,32236,32237,32238,32239,32240,32241,32242,32243,32244,32245,32246,32247,32248,32249,32250,32251,32252,32253,32254,32255,32256,32257,32258,32259,32260,32261,32262,32263,32264,32265,32266,32267,32268,32269,32270,32271,32272,32273,32274,32275,32276,32277,32278,32279,32280,32281,32282,32283,32284,32285,32286,32287,32288,32289,32290,32291,32292,32293,32294,32295,32296,32297,32298,32299,32300,32301,32302,32303,32304,32305,32306,32307,32308,32309,32310,32311,32312,32313,32314,32315,32316,32317,32318,32319,32320,32321,32322,32323,32324,32325,32326,32327,32328,32329,32330,32331,32332,32333,32334,32335,32336,32337,32338,32339,32340,32341,32342,32343,32344,32345,32346,32347,32348,32349,32350,32351,32352,32353,32354,32355,32356,32357,32358,32359,32360,32361,32362,32363,32364,32365,32366,32367,32368,32369,32370,32371,32372,32373,32374,32375,32376,32377,32378,32379,32380,32381,32382,32383,32384,32385,32386,32387,32388,32389,32390,32391,32392,32393,32394,32395,32396,32397,32398,32399,32400,32401,32402,32403,32404,32405,32406,32407,32408,32409,32410,32411,32412,32413,32414,32415,32416,32417,32418,32419,32420,32421,32422,32423,32424,32425,32426,32427,32428,32429,32430,32431,32432,32433,32434,32435,32436,32437,32438,32439,32440,32441,32442,32443,32444,32445,32446,32447,32448,32449,32450,32451,32452,32453,32454,32455,32456,32457,32458,32459,32460,32461,32462,32463,32464,32465,32466,32467,32468,32469,32470,32471,32472,32473,32474,32475,32476,32477,32478,32479,32480,32481,32482,32483,32484,32485,32486,32487,32488,32489,32490,32491,32492,32493,32494,32495,32496,32497,32498,32499,32500,32501,32502,32503,32504,32505,32506,32507,32508,32509,32510,32511,32512,32513,32514,32515,32516,32517,32518,32519,32520,32521,32522,32523,32524,32525,32526,32527,32528,32529,32530,32531,32532,32533,32534,32535,32536,32537,32538,32539,32540,32541,32542,32543,32544,32545,32546,32547,32548,32549,32550,32551,32552,32553,32554,32555,32556,32557,32558,32559,32560,32561,32562,32563,32564,32565,32566,32567,32568,32569,32570,32571,32572,32573,32574,32575,32576,32577,32578,32579,32580,32581,32582,32583,32584,32585,32586,32587,32588,32589,32590,32591,32592,32593,32594,32595,32596,32597,32598,32599,32600,32601,32602,32603,32604,32605,32606,32607,32608,32609,32610,32611,32612,32613,32614,32615,32616,32617,32618,32619,32620,32621,32622,32623,32624,32625,32626,32627,32628,32629,32630,32631,32632,32633,32634,32635,32636,32637,32638,32639,32640,32641,32642,32643,32644,32645,32646,32647,32648,32649,32650,32651,32652,32653,32654,32655,32656,32657,32658,32659,32660,32661,32662,32663,32664,32665,32666,32667,32668,32669,32670,32671,32672,32673,32674,32675,32676,32677,32678,32679,32680,32681,32682,32683,32684,32685,32686,32687,32688,32689,32690,32691,32692,32693,32694,32695,32696,32697,32698,32699,32700,32701,32702,32703,32704,32705,32706,32707,32708,32709,32710,32711,32712,32713,32714,32715,32716,32717,32718,32719,32720,32721,32722,32723,32724,32725,32726,32727,32728,32729,32730,32731,32732,32733,32734,32735,32736,32737,32738,32739,32740,32741,32742,32743,32744,32745,32746,32747,32748,32749,32750,32751,32752,32753,32754,32755,32756,32757,32758,32759,32760,32761,32762,32763,32764,32765,32766,32767,32768,32769,32770,32771,32772,32773,32774,32775,32776,32777,32778,32779,32780,32781,32782,32783,32784,32785,32786,32787,32788,32789,32790,32791,32792,32793,32794,32795,32796,32797,32798,32799,32800,32801,32802,32803,32804,32805,32806,32807,32808,32809,32810,32811,32812,32813,32814,32815,32816,32817,32818,32819,32820,32821,32822,32823,32824,32825,32826,32827,32828,32829,32830,32831,32832,32833,32834,32835,32836,32837,32838,32839,32840,32841,32842,32843,32844,32845,32846,32847,32848,32849,32850,32851,32852,32853,32854,32855,32856,32857,32858,32859,32860,32861,32862,32863,32864,32865,32866,32867,32868,32869,32870,32871,32872,32873,32874,32875,32876,32877,32878,32879,32880,32881,32882,32883,32884,32885,32886,32887,32888,32889,32890,32891,32892,32893,32894,32895,32896,32897,32898,32899,32900,32901,32902,32903,32904,32905,32906,32907,32908,32909,32910,32911,32912,32913,32914,32915,32916,32917,32918,32919,32920,32921,32922,32923,32924,32925,32926,32927,32928,32929,32930,32931,32932,32933,32934,32935,32936,32937,32938,32939,32940,32941,32942,32943,32944,32945,32946,32947,32948,32949,32950,32951,32952,32953,32954,32955,32956,32957,32958,32959,32960,32961,32962,32963,32964,32965,32966,32967,32968,32969,32970,32971,32972,32973,32974,32975,32976,32977,32978,32979,32980,32981,32982,32983,32984,32985,32986,32987,32988,32989,32990,32991,32992,32993,32994,32995,32996,32997,32998,32999,33000,33001,33002,33003,33004,33005,33006,33007,33008,33009,33010,33011,33012,33013,33014,33015,33016,33017,33018,33019,33020,33021,33022,33023,33024,33025,33026,33027,33028,33029,33030,33031,33032,33033,33034,33035,33036,33037,33038,33039,33040,33041,33042,33043,33044,33045,33046,33047,33048,33049,33050,33051,33052,33053,33054,33055,33056,33057,33058,33059,33060,33061,33062,33063,33064,33065,33066,33067,33068,33069,33070,33071,33072,33073,33074,33075,33076,33077,33078,33079,33080,33081,33082,33083,33084,33085,33086,33087,33088,33089,33090,33091,33092,33093,33094,33095,33096,33097,33098,33099,33100,33101,33102,33103,33104,33105,33106,33107,33108,33109,33110,33111,33112,33113,33114,33115,33116,33117,33118,33119,33120,33121,33122,33123,33124,33125,33126,33127,33128,33129,33130,33131,33132,33133,33134,33135,33136,33137,33138,33139,33140,33141,33142,33143,33144,33145,33146,33147,33148,33149,33150,33151,33152,33153,33154,33155,33156,33157,33158,33159,33160,33161,33162,33163,33164,33165,33166,33167,33168,33169,33170,33171,33172,33173,33174,33175,33176,33177,33178,33179,33180,33181,33182,33183,33184,33185,33186,33187,33188,33189,33190,33191,33192,33193,33194,33195,33196,33197,33198,33199,33200,33201,33202,33203,33204,33205,33206,33207,33208,33209,33210,33211,33212,33213,33214,33215,33216,33217,33218,33219,33220,33221,33222,33223,33224,33225,33226,33227,33228,33229,33230,33231,33232,33233,33234,33235,33236,33237,33238,33239,33240,33241,33242,33243,33244,33245,33246,33247,33248,33249,33250,33251,33252,33253,33254,33255,33256,33257,33258,33259,33260,33261,33262,33263,33264,33265,33266,33267,33268,33269,33270,33271,33272,33273,33274,33275,33276,33277,33278,33279,33280,33281,33282,33283,33284,33285,33286,33287,33288,33289,33290,33291,33292,33293,33294,33295,33296,33297,33298,33299,33300,33301,33302,33303,33304,33305,33306,33307,33308,33309,33310,33311,33312,33313,33314,33315,33316,33317,33318,33319,33320,33321,33322,33323,33324,33325,33326,33327,33328,33329,33330,33331,33332,33333,33334,33335,33336,33337,33338,33339,33340,33341,33342,33343,33344,33345,33346,33347,33348,33349,33350,33351,33352,33353,33354,33355,33356,33357,33358,33359,33360,33361,33362,33363,33364,33365,33366,33367,33368,33369,33370,33371,33372,33373,33374,33375,33376,33377,33378,33379,33380,33381,33382,33383,33384,33385,33386,33387,33388,33389,33390,33391,33392,33393,33394,33395,33396,33397,33398,33399,33400,33401,33402,33403,33404,33405,33406,33407,33408,33409,33410,33411,33412,33413,33414,33415,33416,33417,33418,33419,33420,33421,33422,33423,33424,33425,33426,33427,33428,33429,33430,33431,33432,33433,33434,33435,33436,33437,33438,33439,33440,33441,33442,33443,33444,33445,33446,33447,33448,33449,33450,33451,33452,33453,33454,33455,33456,33457,33458,33459,33460,33461,33462,33463,33464,33465,33466,33467,33468,33469,33470,33471,33472,33473,33474,33475,33476,33477,33478,33479,33480,33481,33482,33483,33484,33485,33486,33487,33488,33489,33490,33491,33492,33493,33494,33495,33496,33497,33498,33499,33500,33501,33502,33503,33504,33505,33506,33507,33508,33509,33510,33511,33512,33513,33514,33515,33516,33517,33518,33519,33520,33521,33522,33523,33524,33525,33526,33527,33528,33529,33530,33531,33532,33533,33534,33535,33536,33537,33538,33539,33540,33541,33542,33543,33544,33545,33546,33547,33548,33549,33550,33551,33552,33553,33554,33555,33556,33557,33558,33559,33560,33561,33562,33563,33564,33565,33566,33567,33568,33569,33570,33571,33572,33573,33574,33575,33576,33577,33578,33579,33580,33581,33582,33583,33584,33585,33586,33587,33588,33589,33590,33591,33592,33593,33594,33595,33596,33597,33598,33599,33600,33601,33602,33603,33604,33605,33606,33607,33608,33609,33610,33611,33612,33613,33614,33615,33616,33617,33618,33619,33620,33621,33622,33623,33624,33625,33626,33627,33628,33629,33630,33631,33632,33633,33634,33635,33636,33637,33638,33639,33640,33641,33642,33643,33644,33645,33646,33647,33648,33649,33650,33651,33652,33653,33654,33655,33656,33657,33658,33659,33660,33661,33662,33663,33664,33665,33666,33667,33668,33669,33670,33671,33672,33673,33674,33675,33676,33677,33678,33679,33680,33681,33682,33683,33684,33685,33686,33687,33688,33689,33690,33691,33692,33693,33694,33695,33696,33697,33698,33699,33700,33701,33702,33703,33704,33705,33706,33707,33708,33709,33710,33711,33712,33713,33714,33715,33716,33717,33718,33719,33720,33721,33722,33723,33724,33725,33726,33727,33728,33729,33730,33731,33732,33733,33734,33735,33736,33737,33738,33739,33740,33741,33742,33743,33744,33745,33746,33747,33748,33749,33750,33751,33752,33753,33754,33755,33756,33757,33758,33759,33760,33761,33762,33763,33764,33765,33766,33767,33768,33769,33770,33771,33772,33773,33774,33775,33776,33777,33778,33779,33780,33781,33782,33783,33784,33785,33786,33787,33788,33789,33790,33791,33792,33793,33794,33795,33796,33797,33798,33799,33800,33801,33802,33803,33804,33805,33806,33807,33808,33809,33810,33811,33812,33813,33814,33815,33816,33817,33818,33819,33820,33821,33822,33823,33824,33825,33826,33827,33828,33829,33830,33831,33832,33833,33834,33835,33836,33837,33838,33839,33840,33841,33842,33843,33844,33845,33846,33847,33848,33849,33850,33851,33852,33853,33854,33855,33856,33857,33858,33859,33860,33861,33862,33863,33864,33865,33866,33867,33868,33869,33870,33871,33872,33873,33874,33875,33876,33877,33878,33879,33880,33881,33882,33883,33884,33885,33886,33887,33888,33889,33890,33891,33892,33893,33894,33895,33896,33897,33898,33899,33900,33901,33902,33903,33904,33905,33906,33907,33908,33909,33910,33911,33912,33913,33914,33915,33916,33917,33918,33919,33920,33921,33922,33923,33924,33925,33926,33927,33928,33929,33930,33931,33932,33933,33934,33935,33936,33937,33938,33939,33940,33941,33942,33943,33944,33945,33946,33947,33948,33949,33950,33951,33952,33953,33954,33955,33956,33957,33958,33959,33960,33961,33962,33963,33964,33965,33966,33967,33968,33969,33970,33971,33972,33973,33974,33975,33976,33977,33978,33979,33980,33981,33982,33983,33984,33985,33986,33987,33988,33989,33990,33991,33992,33993,33994,33995,33996,33997,33998,33999,34000,34001,34002,34003,34004,34005,34006,34007,34008,34009,34010,34011,34012,34013,34014,34015,34016,34017,34018,34019,34020,34021,34022,34023,34024,34025,34026,34027,34028,34029,34030,34031,34032,34033,34034,34035,34036,34037,34038,34039,34040,34041,34042,34043,34044,34045,34046,34047,34048,34049,34050,34051,34052,34053,34054,34055,34056,34057,34058,34059,34060,34061,34062,34063,34064,34065,34066,34067,34068,34069,34070,34071,34072,34073,34074,34075,34076,34077,34078,34079,34080,34081,34082,34083,34084,34085,34086,34087,34088,34089,34090,34091,34092,34093,34094,34095,34096,34097,34098,34099,34100,34101,34102,34103,34104,34105,34106,34107,34108,34109,34110,34111,34112,34113,34114,34115,34116,34117,34118,34119,34120,34121,34122,34123,34124,34125,34126,34127,34128,34129,34130,34131,34132,34133,34134,34135,34136,34137,34138,34139,34140,34141,34142,34143,34144,34145,34146,34147,34148,34149,34150,34151,34152,34153,34154,34155,34156,34157,34158,34159,34160,34161,34162,34163,34164,34165,34166,34167,34168,34169,34170,34171,34172,34173,34174,34175,34176,34177,34178,34179,34180,34181,34182,34183,34184,34185,34186,34187,34188,34189,34190,34191,34192,34193,34194,34195,34196,34197,34198,34199,34200,34201,34202,34203,34204,34205,34206,34207,34208,34209,34210,34211,34212,34213,34214,34215,34216,34217,34218,34219,34220,34221,34222,34223,34224,34225,34226,34227,34228,34229,34230,34231,34232,34233,34234,34235,34236,34237,34238,34239,34240,34241,34242,34243,34244,34245,34246,34247,34248,34249,34250,34251,34252,34253,34254,34255,34256,34257,34258,34259,34260,34261,34262,34263,34264,34265,34266,34267,34268,34269,34270,34271,34272,34273,34274,34275,34276,34277,34278,34279,34280,34281,34282,34283,34284,34285,34286,34287,34288,34289,34290,34291,34292,34293,34294,34295,34296,34297,34298,34299,34300,34301,34302,34303,34304,34305,34306,34307,34308,34309,34310,34311,34312,34313,34314,34315,34316,34317,34318,34319,34320,34321,34322,34323,34324,34325,34326,34327,34328,34329,34330,34331,34332,34333,34334,34335,34336,34337,34338,34339,34340,34341,34342,34343,34344,34345,34346,34347,34348,34349,34350,34351,34352,34353,34354,34355,34356,34357,34358,34359,34360,34361,34362,34363,34364,34365,34366,34367,34368,34369,34370,34371,34372,34373,34374,34375,34376,34377,34378,34379,34380,34381,34382,34383,34384,34385,34386,34387,34388,34389,34390,34391,34392,34393,34394,34395,34396,34397,34398,34399,34400,34401,34402,34403,34404,34405,34406,34407,34408,34409,34410,34411,34412,34413,34414,34415,34416,34417,34418,34419,34420,34421,34422,34423,34424,34425,34426,34427,34428,34429,34430,34431,34432,34433,34434,34435,34436,34437,34438,34439,34440,34441,34442,34443,34444,34445,34446,34447,34448,34449,34450,34451,34452,34453,34454,34455,34456,34457,34458,34459,34460,34461,34462,34463,34464,34465,34466,34467,34468,34469,34470,34471,34472,34473,34474,34475,34476,34477,34478,34479,34480,34481,34482,34483,34484,34485,34486,34487,34488,34489,34490,34491,34492,34493,34494,34495,34496,34497,34498,34499,34500,34501,34502,34503,34504,34505,34506,34507,34508,34509,34510,34511,34512,34513,34514,34515,34516,34517,34518,34519,34520,34521,34522,34523,34524,34525,34526,34527,34528,34529,34530,34531,34532,34533,34534,34535,34536,34537,34538,34539,34540,34541,34542,34543,34544,34545,34546,34547,34548,34549,34550,34551,34552,34553,34554,34555,34556,34557,34558,34559,34560,34561,34562,34563,34564,34565,34566,34567,34568,34569,34570,34571,34572,34573,34574,34575,34576,34577,34578,34579,34580,34581,34582,34583,34584,34585,34586,34587,34588,34589,34590,34591,34592,34593,34594,34595,34596,34597,34598,34599,34600,34601,34602,34603,34604,34605,34606,34607,34608,34609,34610,34611,34612,34613,34614,34615,34616,34617,34618,34619,34620,34621,34622,34623,34624,34625,34626,34627,34628,34629,34630,34631,34632,34633,34634,34635,34636,34637,34638,34639,34640,34641,34642,34643,34644,34645,34646,34647,34648,34649,34650,34651,34652,34653,34654,34655,34656,34657,34658,34659,34660,34661,34662,34663,34664,34665,34666,34667,34668,34669,34670,34671,34672,34673,34674,34675,34676,34677,34678,34679,34680,34681,34682,34683,34684,34685,34686,34687,34688,34689,34690,34691,34692,34693,34694,34695,34696,34697,34698,34699,34700,34701,34702,34703,34704,34705,34706,34707,34708,34709,34710,34711,34712,34713,34714,34715,34716,34717,34718,34719,34720,34721,34722,34723,34724,34725,34726,34727,34728,34729,34730,34731,34732,34733,34734,34735,34736,34737,34738,34739,34740,34741,34742,34743,34744,34745,34746,34747,34748,34749,34750,34751,34752,34753,34754,34755,34756,34757,34758,34759,34760,34761,34762,34763,34764,34765,34766,34767,34768,34769,34770,34771,34772,34773,34774,34775,34776,34777,34778,34779,34780,34781,34782,34783,34784,34785,34786,34787,34788,34789,34790,34791,34792,34793,34794,34795,34796,34797,34798,34799,34800,34801,34802,34803,34804,34805,34806,34807,34808,34809,34810,34811,34812,34813,34814,34815,34816,34817,34818,34819,34820,34821,34822,34823,34824,34825,34826,34827,34828,34829,34830,34831,34832,34833,34834,34835,34836,34837,34838,34839,34840,34841,34842,34843,34844,34845,34846,34847,34848,34849,34850,34851,34852,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34866,34867,34868,34869,34870,34871,34872,34873,34874,34875,34876,34877,34878,34879,34880,34881,34882,34883,34884,34885,34886,34887,34888,34889,34890,34891,34892,34893,34894,34895,34896,34897,34898,34899,34900,34901,34902,34903,34904,34905,34906,34907,34908,34909,34910,34911,34912,34913,34914,34915,34916,34917,34918,34919,34920,34921,34922,34923,34924,34925,34926,34927,34928,34929,34930,34931,34932,34933,34934,34935,34936,34937,34938,34939,34940,34941,34942,34943,34944,34945,34946,34947,34948,34949,34950,34951,34952,34953,34954,34955,34956,34957,34958,34959,34960,34961,34962,34963,34964,34965,34966,34967,34968,34969,34970,34971,34972,34973,34974,34975,34976,34977,34978,34979,34980,34981,34982,34983,34984,34985,34986,34987,34988,34989,34990,34991,34992,34993,34994,34995,34996,34997,34998,34999,35000,35001,35002,35003,35004,35005,35006,35007,35008,35009,35010,35011,35012,35013,35014,35015,35016,35017,35018,35019,35020,35021,35022,35023,35024,35025,35026,35027,35028,35029,35030,35031,35032,35033,35034,35035,35036,35037,35038,35039,35040,35041,35042,35043,35044,35045,35046,35047,35048,35049,35050,35051,35052,35053,35054,35055,35056,35057,35058,35059,35060,35061,35062,35063,35064,35065,35066,35067,35068,35069,35070,35071,35072,35073,35074,35075,35076,35077,35078,35079,35080,35081,35082,35083,35084,35085,35086,35087,35088,35089,35090,35091,35092,35093,35094,35095,35096,35097,35098,35099,35100,35101,35102,35103,35104,35105,35106,35107,35108,35109,35110,35111,35112,35113,35114,35115,35116,35117,35118,35119,35120,35121,35122,35123,35124,35125,35126,35127,35128,35129,35130,35131,35132,35133,35134,35135,35136,35137,35138,35139,35140,35141,35142,35143,35144,35145,35146,35147,35148,35149,35150,35151,35152,35153,35154,35155,35156,35157,35158,35159,35160,35161,35162,35163,35164,35165,35166,35167,35168,35169,35170,35171,35172,35173,35174,35175,35176,35177,35178,35179,35180,35181,35182,35183,35184,35185,35186,35187,35188,35189,35190,35191,35192,35193,35194,35195,35196,35197,35198,35199,35200,35201,35202,35203,35204,35205,35206,35207,35208,35209,35210,35211,35212,35213,35214,35215,35216,35217,35218,35219,35220,35221,35222,35223,35224,35225,35226,35227,35228,35229,35230,35231,35232,35233,35234,35235,35236,35237,35238,35239,35240,35241,35242,35243,35244,35245,35246,35247,35248,35249,35250,35251,35252,35253,35254,35255,35256,35257,35258,35259,35260,35261,35262,35263,35264,35265,35266,35267,35268,35269,35270,35271,35272,35273,35274,35275,35276,35277,35278,35279,35280,35281,35282,35283,35284,35285,35286,35287,35288,35289,35290,35291,35292,35293,35294,35295,35296,35297,35298,35299,35300,35301,35302,35303,35304,35305,35306,35307,35308,35309,35310,35311,35312,35313,35314,35315,35316,35317,35318,35319,35320,35321,35322,35323,35324,35325,35326,35327,35328,35329,35330,35331,35332,35333,35334,35335,35336,35337,35338,35339,35340,35341,35342,35343,35344,35345,35346,35347,35348,35349,35350,35351,35352,35353,35354,35355,35356,35357,35358,35359,35360,35361,35362,35363,35364,35365,35366,35367,35368,35369,35370,35371,35372,35373,35374,35375,35376,35377,35378,35379,35380,35381,35382,35383,35384,35385,35386,35387,35388,35389,35390,35391,35392,35393,35394,35395,35396,35397,35398,35399,35400,35401,35402,35403,35404,35405,35406,35407,35408,35409,35410,35411,35412,35413,35414,35415,35416,35417,35418,35419,35420,35421,35422,35423,35424,35425,35426,35427,35428,35429,35430,35431,35432,35433,35434,35435,35436,35437,35438,35439,35440,35441,35442,35443,35444,35445,35446,35447,35448,35449,35450,35451,35452,35453,35454,35455,35456,35457,35458,35459,35460,35461,35462,35463,35464,35465,35466,35467,35468,35469,35470,35471,35472,35473,35474,35475,35476,35477,35478,35479,35480,35481,35482,35483,35484,35485,35486,35487,35488,35489,35490,35491,35492,35493,35494,35495,35496,35497,35498,35499,35500,35501,35502,35503,35504,35505,35506,35507,35508,35509,35510,35511,35512,35513,35514,35515,35516,35517,35518,35519,35520,35521,35522,35523,35524,35525,35526,35527,35528,35529,35530,35531,35532,35533,35534,35535,35536,35537,35538,35539,35540,35541,35542,35543,35544,35545,35546,35547,35548,35549,35550,35551,35552,35553,35554,35555,35556,35557,35558,35559,35560,35561,35562,35563,35564,35565,35566,35567,35568,35569,35570,35571,35572,35573,35574,35575,35576,35577,35578,35579,35580,35581,35582,35583,35584,35585,35586,35587,35588,35589,35590,35591,35592,35593,35594,35595,35596,35597,35598,35599,35600,35601,35602,35603,35604,35605,35606,35607,35608,35609,35610,35611,35612,35613,35614,35615,35616,35617,35618,35619,35620,35621,35622,35623,35624,35625,35626,35627,35628,35629,35630,35631,35632,35633,35634,35635,35636,35637,35638,35639,35640,35641,35642,35643,35644,35645,35646,35647,35648,35649,35650,35651,35652,35653,35654,35655,35656,35657,35658,35659,35660,35661,35662,35663,35664,35665,35666,35667,35668,35669,35670,35671,35672,35673,35674,35675,35676,35677,35678,35679,35680,35681,35682,35683,35684,35685,35686,35687,35688,35689,35690,35691,35692,35693,35694,35695,35696,35697,35698,35699,35700,35701,35702,35703,35704,35705,35706,35707,35708,35709,35710,35711,35712,35713,35714,35715,35716,35717,35718,35719,35720,35721,35722,35723,35724,35725,35726,35727,35728,35729,35730,35731,35732,35733,35734,35735,35736,35737,35738,35739,35740,35741,35742,35743,35744,35745,35746,35747,35748,35749,35750,35751,35752,35753,35754,35755,35756,35757,35758,35759,35760,35761,35762,35763,35764,35765,35766,35767,35768,35769,35770,35771,35772,35773,35774,35775,35776,35777,35778,35779,35780,35781,35782,35783,35784,35785,35786,35787,35788,35789,35790,35791,35792,35793,35794,35795,35796,35797,35798,35799,35800,35801,35802,35803,35804,35805,35806,35807,35808,35809,35810,35811,35812,35813,35814,35815,35816,35817,35818,35819,35820,35821,35822,35823,35824,35825,35826,35827,35828,35829,35830,35831,35832,35833,35834,35835,35836,35837,35838,35839,35840,35841,35842,35843,35844,35845,35846,35847,35848,35849,35850,35851,35852,35853,35854,35855,35856,35857,35858,35859,35860,35861,35862,35863,35864,35865,35866,35867,35868,35869,35870,35871,35872,35873,35874,35875,35876,35877,35878,35879,35880,35881,35882,35883,35884,35885,35886,35887,35888,35889,35890,35891,35892,35893,35894,35895,35896,35897,35898,35899,35900,35901,35902,35903,35904,35905,35906,35907,35908,35909,35910,35911,35912,35913,35914,35915,35916,35917,35918,35919,35920,35921,35922,35923,35924,35925,35926,35927,35928,35929,35930,35931,35932,35933,35934,35935,35936,35937,35938,35939,35940,35941,35942,35943,35944,35945,35946,35947,35948,35949,35950,35951,35952,35953,35954,35955,35956,35957,35958,35959,35960,35961,35962,35963,35964,35965,35966,35967,35968,35969,35970,35971,35972,35973,35974,35975,35976,35977,35978,35979,35980,35981,35982,35983,35984,35985,35986,35987,35988,35989,35990,35991,35992,35993,35994,35995,35996,35997,35998,35999,36000,36001,36002,36003,36004,36005,36006,36007,36008,36009,36010,36011,36012,36013,36014,36015,36016,36017,36018,36019,36020,36021,36022,36023,36024,36025,36026,36027,36028,36029,36030,36031,36032,36033,36034,36035,36036,36037,36038,36039,36040,36041,36042,36043,36044,36045,36046,36047,36048,36049,36050,36051,36052,36053,36054,36055,36056,36057,36058,36059,36060,36061,36062,36063,36064,36065,36066,36067,36068,36069,36070,36071,36072,36073,36074,36075,36076,36077,36078,36079,36080,36081,36082,36083,36084,36085,36086,36087,36088,36089,36090,36091,36092,36093,36094,36095,36096,36097,36098,36099,36100,36101,36102,36103,36104,36105,36106,36107,36108,36109,36110,36111,36112,36113,36114,36115,36116,36117,36118,36119,36120,36121,36122,36123,36124,36125,36126,36127,36128,36129,36130,36131,36132,36133,36134,36135,36136,36137,36138,36139,36140,36141,36142,36143,36144,36145,36146,36147,36148,36149,36150,36151,36152,36153,36154,36155,36156,36157,36158,36159,36160,36161,36162,36163,36164,36165,36166,36167,36168,36169,36170,36171,36172,36173,36174,36175,36176,36177,36178,36179,36180,36181,36182,36183,36184,36185,36186,36187,36188,36189,36190,36191,36192,36193,36194,36195,36196,36197,36198,36199,36200,36201,36202,36203,36204,36205,36206,36207,36208,36209,36210,36211,36212,36213,36214,36215,36216,36217,36218,36219,36220,36221,36222,36223,36224,36225,36226,36227,36228,36229,36230,36231,36232,36233,36234,36235,36236,36237,36238,36239,36240,36241,36242,36243,36244,36245,36246,36247,36248,36249,36250,36251,36252,36253,36254,36255,36256,36257,36258,36259,36260,36261,36262,36263,36264,36265,36266,36267,36268,36269,36270,36271,36272,36273,36274,36275,36276,36277,36278,36279,36280,36281,36282,36283,36284,36285,36286,36287,36288,36289,36290,36291,36292,36293,36294,36295,36296,36297,36298,36299,36300,36301,36302,36303,36304,36305,36306,36307,36308,36309,36310,36311,36312,36313,36314,36315,36316,36317,36318,36319,36320,36321,36322,36323,36324,36325,36326,36327,36328,36329,36330,36331,36332,36333,36334,36335,36336,36337,36338,36339,36340,36341,36342,36343,36344,36345,36346,36347,36348,36349,36350,36351,36352,36353,36354,36355,36356,36357,36358,36359,36360,36361,36362,36363,36364,36365,36366,36367,36368,36369,36370,36371,36372,36373,36374,36375,36376,36377,36378,36379,36380,36381,36382,36383,36384,36385,36386,36387,36388,36389,36390,36391,36392,36393,36394,36395,36396,36397,36398,36399,36400,36401,36402,36403,36404,36405,36406,36407,36408,36409,36410,36411,36412,36413,36414,36415,36416,36417,36418,36419,36420,36421,36422,36423,36424,36425,36426,36427,36428,36429,36430,36431,36432,36433,36434,36435,36436,36437,36438,36439,36440,36441,36442,36443,36444,36445,36446,36447,36448,36449,36450,36451,36452,36453,36454,36455,36456,36457,36458,36459,36460,36461,36462,36463,36464,36465,36466,36467,36468,36469,36470,36471,36472,36473,36474,36475,36476,36477,36478,36479,36480,36481,36482,36483,36484,36485,36486,36487,36488,36489,36490,36491,36492,36493,36494,36495,36496,36497,36498,36499,36500,36501,36502,36503,36504,36505,36506,36507,36508,36509,36510,36511,36512,36513,36514,36515,36516,36517,36518,36519,36520,36521,36522,36523,36524,36525,36526,36527,36528,36529,36530,36531,36532,36533,36534,36535,36536,36537,36538,36539,36540,36541,36542,36543,36544,36545,36546,36547,36548,36549,36550,36551,36552,36553,36554,36555,36556,36557,36558,36559,36560,36561,36562,36563,36564,36565,36566,36567,36568,36569,36570,36571,36572,36573,36574,36575,36576,36577,36578,36579,36580,36581,36582,36583,36584,36585,36586,36587,36588,36589,36590,36591,36592,36593,36594,36595,36596,36597,36598,36599,36600,36601,36602,36603,36604,36605,36606,36607,36608,36609,36610,36611,36612,36613,36614,36615,36616,36617,36618,36619,36620,36621,36622,36623,36624,36625,36626,36627,36628,36629,36630,36631,36632,36633,36634,36635,36636,36637,36638,36639,36640,36641,36642,36643,36644,36645,36646,36647,36648,36649,36650,36651,36652,36653,36654,36655,36656,36657,36658,36659,36660,36661,36662,36663,36664,36665,36666,36667,36668,36669,36670,36671,36672,36673,36674,36675,36676,36677,36678,36679,36680,36681,36682,36683,36684,36685,36686,36687,36688,36689,36690,36691,36692,36693,36694,36695,36696,36697,36698,36699,36700,36701,36702,36703,36704,36705,36706,36707,36708,36709,36710,36711,36712,36713,36714,36715,36716,36717,36718,36719,36720,36721,36722,36723,36724,36725,36726,36727,36728,36729,36730,36731,36732,36733,36734,36735,36736,36737,36738,36739,36740,36741,36742,36743,36744,36745,36746,36747,36748,36749,36750,36751,36752,36753,36754,36755,36756,36757,36758,36759,36760,36761,36762,36763,36764,36765,36766,36767,36768,36769,36770,36771,36772,36773,36774,36775,36776,36777,36778,36779,36780,36781,36782,36783,36784,36785,36786,36787,36788,36789,36790,36791,36792,36793,36794,36795,36796,36797,36798,36799,36800,36801,36802,36803,36804,36805,36806,36807,36808,36809,36810,36811,36812,36813,36814,36815,36816,36817,36818,36819,36820,36821,36822,36823,36824,36825,36826,36827,36828,36829,36830,36831,36832,36833,36834,36835,36836,36837,36838,36839,36840,36841,36842,36843,36844,36845,36846,36847,36848,36849,36850,36851,36852,36853,36854,36855,36856,36857,36858,36859,36860,36861,36862,36863,36864,36865,36866,36867,36868,36869,36870,36871,36872,36873,36874,36875,36876,36877,36878,36879,36880,36881,36882,36883,36884,36885,36886,36887,36888,36889,36890,36891,36892,36893,36894,36895,36896,36897,36898,36899,36900,36901,36902,36903,36904,36905,36906,36907,36908,36909,36910,36911,36912,36913,36914,36915,36916,36917,36918,36919,36920,36921,36922,36923,36924,36925,36926,36927,36928,36929,36930,36931,36932,36933,36934,36935,36936,36937,36938,36939,36940,36941,36942,36943,36944,36945,36946,36947,36948,36949,36950,36951,36952,36953,36954,36955,36956,36957,36958,36959,36960,36961,36962,36963,36964,36965,36966,36967,36968,36969,36970,36971,36972,36973,36974,36975,36976,36977,36978,36979,36980,36981,36982,36983,36984,36985,36986,36987,36988,36989,36990,36991,36992,36993,36994,36995,36996,36997,36998,36999,37000,37001,37002,37003,37004,37005,37006,37007,37008,37009,37010,37011,37012,37013,37014,37015,37016,37017,37018,37019,37020,37021,37022,37023,37024,37025,37026,37027,37028,37029,37030,37031,37032,37033,37034,37035,37036,37037,37038,37039,37040,37041,37042,37043,37044,37045,37046,37047,37048,37049,37050,37051,37052,37053,37054,37055,37056,37057,37058,37059,37060,37061,37062,37063,37064,37065,37066,37067,37068,37069,37070,37071,37072,37073,37074,37075,37076,37077,37078,37079,37080,37081,37082,37083,37084,37085,37086,37087,37088,37089,37090,37091,37092,37093,37094,37095,37096,37097,37098,37099,37100,37101,37102,37103,37104,37105,37106,37107,37108,37109,37110,37111,37112,37113,37114,37115,37116,37117,37118,37119,37120,37121,37122,37123,37124,37125,37126,37127,37128,37129,37130,37131,37132,37133,37134,37135,37136,37137,37138,37139,37140,37141,37142,37143,37144,37145,37146,37147,37148,37149,37150,37151,37152,37153,37154,37155,37156,37157,37158,37159,37160,37161,37162,37163,37164,37165,37166,37167,37168,37169,37170,37171,37172,37173,37174,37175,37176,37177,37178,37179,37180,37181,37182,37183,37184,37185,37186,37187,37188,37189,37190,37191,37192,37193,37194,37195,37196,37197,37198,37199,37200,37201,37202,37203,37204,37205,37206,37207,37208,37209,37210,37211,37212,37213,37214,37215,37216,37217,37218,37219,37220,37221,37222,37223,37224,37225,37226,37227,37228,37229,37230,37231,37232,37233,37234,37235,37236,37237,37238,37239,37240,37241,37242,37243,37244,37245,37246,37247,37248,37249,37250,37251,37252,37253,37254,37255,37256,37257,37258,37259,37260,37261,37262,37263,37264,37265,37266,37267,37268,37269,37270,37271,37272,37273,37274,37275,37276,37277,37278,37279,37280,37281,37282,37283,37284,37285,37286,37287,37288,37289,37290,37291,37292,37293,37294,37295,37296,37297,37298,37299,37300,37301,37302,37303,37304,37305,37306,37307,37308,37309,37310,37311,37312,37313,37314,37315,37316,37317,37318,37319,37320,37321,37322,37323,37324,37325,37326,37327,37328,37329,37330,37331,37332,37333,37334,37335,37336,37337,37338,37339,37340,37341,37342,37343,37344,37345,37346,37347,37348,37349,37350,37351,37352,37353,37354,37355,37356,37357,37358,37359,37360,37361,37362,37363,37364,37365,37366,37367,37368,37369,37370,37371,37372,37373,37374,37375,37376,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37387,37388,37389,37390,37391,37392,37393,37394,37395,37396,37397,37398,37399,37400,37401,37402,37403,37404,37405,37406,37407,37408,37409,37410,37411,37412,37413,37414,37415,37416,37417,37418,37419,37420,37421,37422,37423,37424,37425,37426,37427,37428,37429,37430,37431,37432,37433,37434,37435,37436,37437,37438,37439,37440,37441,37442,37443,37444,37445,37446,37447,37448,37449,37450,37451,37452,37453,37454,37455,37456,37457,37458,37459,37460,37461,37462,37463,37464,37465,37466,37467,37468,37469,37470,37471,37472,37473,37474,37475,37476,37477,37478,37479,37480,37481,37482,37483,37484,37485,37486,37487,37488,37489,37490,37491,37492,37493,37494,37495,37496,37497,37498,37499,37500,37501,37502,37503,37504,37505,37506,37507,37508,37509,37510,37511,37512,37513,37514,37515,37516,37517,37518,37519,37520,37521,37522,37523,37524,37525,37526,37527,37528,37529,37530,37531,37532,37533,37534,37535,37536,37537,37538,37539,37540,37541,37542,37543,37544,37545,37546,37547,37548,37549,37550,37551,37552,37553,37554,37555,37556,37557,37558,37559,37560,37561,37562,37563,37564,37565,37566,37567,37568,37569,37570,37571,37572,37573,37574,37575,37576,37577,37578,37579,37580,37581,37582,37583,37584,37585,37586,37587,37588,37589,37590,37591,37592,37593,37594,37595,37596,37597,37598,37599,37600,37601,37602,37603,37604,37605,37606,37607,37608,37609,37610,37611,37612,37613,37614,37615,37616,37617,37618,37619,37620,37621,37622,37623,37624,37625,37626,37627,37628,37629,37630,37631,37632,37633,37634,37635,37636,37637,37638,37639,37640,37641,37642,37643,37644,37645,37646,37647,37648,37649,37650,37651,37652,37653,37654,37655,37656,37657,37658,37659,37660,37661,37662,37663,37664,37665,37666,37667,37668,37669,37670,37671,37672,37673,37674,37675,37676,37677,37678,37679,37680,37681,37682,37683,37684,37685,37686,37687,37688,37689,37690,37691,37692,37693,37694,37695,37696,37697,37698,37699,37700,37701,37702,37703,37704,37705,37706,37707,37708,37709,37710,37711,37712,37713,37714,37715,37716,37717,37718,37719,37720,37721,37722,37723,37724,37725,37726,37727,37728,37729,37730,37731,37732,37733,37734,37735,37736,37737,37738,37739,37740,37741,37742,37743,37744,37745,37746,37747,37748,37749,37750,37751,37752,37753,37754,37755,37756,37757,37758,37759,37760,37761,37762,37763,37764,37765,37766,37767,37768,37769,37770,37771,37772,37773,37774,37775,37776,37777,37778,37779,37780,37781,37782,37783,37784,37785,37786,37787,37788,37789,37790,37791,37792,37793,37794,37795,37796,37797,37798,37799,37800,37801,37802,37803,37804,37805,37806,37807,37808,37809,37810,37811,37812,37813,37814,37815,37816,37817,37818,37819,37820,37821,37822,37823,37824,37825,37826,37827,37828,37829,37830,37831,37832,37833,37834,37835,37836,37837,37838,37839,37840,37841,37842,37843,37844,37845,37846,37847,37848,37849,37850,37851,37852,37853,37854,37855,37856,37857,37858,37859,37860,37861,37862,37863,37864,37865,37866,37867,37868,37869,37870,37871,37872,37873,37874,37875,37876,37877,37878,37879,37880,37881,37882,37883,37884,37885,37886,37887,37888,37889,37890,37891,37892,37893,37894,37895,37896,37897,37898,37899,37900,37901,37902,37903,37904,37905,37906,37907,37908,37909,37910,37911,37912,37913,37914,37915,37916,37917,37918,37919,37920,37921,37922,37923,37924,37925,37926,37927,37928,37929,37930,37931,37932,37933,37934,37935,37936,37937,37938,37939,37940,37941,37942,37943,37944,37945,37946,37947,37948,37949,37950,37951,37952,37953,37954,37955,37956,37957,37958,37959,37960,37961,37962,37963,37964,37965,37966,37967,37968,37969,37970,37971,37972,37973,37974,37975,37976,37977,37978,37979,37980,37981,37982,37983,37984,37985,37986,37987,37988,37989,37990,37991,37992,37993,37994,37995,37996,37997,37998,37999,38000,38001,38002,38003,38004,38005,38006,38007,38008,38009,38010,38011,38012,38013,38014,38015,38016,38017,38018,38019,38020,38021,38022,38023,38024,38025,38026,38027,38028,38029,38030,38031,38032,38033,38034,38035,38036,38037,38038,38039,38040,38041,38042,38043,38044,38045,38046,38047,38048,38049,38050,38051,38052,38053,38054,38055,38056,38057,38058,38059,38060,38061,38062,38063,38064,38065,38066,38067,38068,38069,38070,38071,38072,38073,38074,38075,38076,38077,38078,38079,38080,38081,38082,38083,38084,38085,38086,38087,38088,38089,38090,38091,38092,38093,38094,38095,38096,38097,38098,38099,38100,38101,38102,38103,38104,38105,38106,38107,38108,38109,38110,38111,38112,38113,38114,38115,38116,38117,38118,38119,38120,38121,38122,38123,38124,38125,38126,38127,38128,38129,38130,38131,38132,38133,38134,38135,38136,38137,38138,38139,38140,38141,38142,38143,38144,38145,38146,38147,38148,38149,38150,38151,38152,38153,38154,38155,38156,38157,38158,38159,38160,38161,38162,38163,38164,38165,38166,38167,38168,38169,38170,38171,38172,38173,38174,38175,38176,38177,38178,38179,38180,38181,38182,38183,38184,38185,38186,38187,38188,38189,38190,38191,38192,38193,38194,38195,38196,38197,38198,38199,38200,38201,38202,38203,38204,38205,38206,38207,38208,38209,38210,38211,38212,38213,38214,38215,38216,38217,38218,38219,38220,38221,38222,38223,38224,38225,38226,38227,38228,38229,38230,38231,38232,38233,38234,38235,38236,38237,38238,38239,38240,38241,38242,38243,38244,38245,38246,38247,38248,38249,38250,38251,38252,38253,38254,38255,38256,38257,38258,38259,38260,38261,38262,38263,38264,38265,38266,38267,38268,38269,38270,38271,38272,38273,38274,38275,38276,38277,38278,38279,38280,38281,38282,38283,38284,38285,38286,38287,38288,38289,38290,38291,38292,38293,38294,38295,38296,38297,38298,38299,38300,38301,38302,38303,38304,38305,38306,38307,38308,38309,38310,38311,38312,38313,38314,38315,38316,38317,38318,38319,38320,38321,38322,38323,38324,38325,38326,38327,38328,38329,38330,38331,38332,38333,38334,38335,38336,38337,38338,38339,38340,38341,38342,38343,38344,38345,38346,38347,38348,38349,38350,38351,38352,38353,38354,38355,38356,38357,38358,38359,38360,38361,38362,38363,38364,38365,38366,38367,38368,38369,38370,38371,38372,38373,38374,38375,38376,38377,38378,38379,38380,38381,38382,38383,38384,38385,38386,38387,38388,38389,38390,38391,38392,38393,38394,38395,38396,38397,38398,38399,38400,38401,38402,38403,38404,38405,38406,38407,38408,38409,38410,38411,38412,38413,38414,38415,38416,38417,38418,38419,38420,38421,38422,38423,38424,38425,38426,38427,38428,38429,38430,38431,38432,38433,38434,38435,38436,38437,38438,38439,38440,38441,38442,38443,38444,38445,38446,38447,38448,38449,38450,38451,38452,38453,38454,38455,38456,38457,38458,38459,38460,38461,38462,38463,38464,38465,38466,38467,38468,38469,38470,38471,38472,38473,38474,38475,38476,38477,38478,38479,38480,38481,38482,38483,38484,38485,38486,38487,38488,38489,38490,38491,38492,38493,38494,38495,38496,38497,38498,38499,38500,38501,38502,38503,38504,38505,38506,38507,38508,38509,38510,38511,38512,38513,38514,38515,38516,38517,38518,38519,38520,38521,38522,38523,38524,38525,38526,38527,38528,38529,38530,38531,38532,38533,38534,38535,38536,38537,38538,38539,38540,38541,38542,38543,38544,38545,38546,38547,38548,38549,38550,38551,38552,38553,38554,38555,38556,38557,38558,38559,38560,38561,38562,38563,38564,38565,38566,38567,38568,38569,38570,38571,38572,38573,38574,38575,38576,38577,38578,38579,38580,38581,38582,38583,38584,38585,38586,38587,38588,38589,38590,38591,38592,38593,38594,38595,38596,38597,38598,38599,38600,38601,38602,38603,38604,38605,38606,38607,38608,38609,38610,38611,38612,38613,38614,38615,38616,38617,38618,38619,38620,38621,38622,38623,38624,38625,38626,38627,38628,38629,38630,38631,38632,38633,38634,38635,38636,38637,38638,38639,38640,38641,38642,38643,38644,38645,38646,38647,38648,38649,38650,38651,38652,38653,38654,38655,38656,38657,38658,38659,38660,38661,38662,38663,38664,38665,38666,38667,38668,38669,38670,38671,38672,38673,38674,38675,38676,38677,38678,38679,38680,38681,38682,38683,38684,38685,38686,38687,38688,38689,38690,38691,38692,38693,38694,38695,38696,38697,38698,38699,38700,38701,38702,38703,38704,38705,38706,38707,38708,38709,38710,38711,38712,38713,38714,38715,38716,38717,38718,38719,38720,38721,38722,38723,38724,38725,38726,38727,38728,38729,38730,38731,38732,38733,38734,38735,38736,38737,38738,38739,38740,38741,38742,38743,38744,38745,38746,38747,38748,38749,38750,38751,38752,38753,38754,38755,38756,38757,38758,38759,38760,38761,38762,38763,38764,38765,38766,38767,38768,38769,38770,38771,38772,38773,38774,38775,38776,38777,38778,38779,38780,38781,38782,38783,38784,38785,38786,38787,38788,38789,38790,38791,38792,38793,38794,38795,38796,38797,38798,38799,38800,38801,38802,38803,38804,38805,38806,38807,38808,38809,38810,38811,38812,38813,38814,38815,38816,38817,38818,38819,38820,38821,38822,38823,38824,38825,38826,38827,38828,38829,38830,38831,38832,38833,38834,38835,38836,38837,38838,38839,38840,38841,38842,38843,38844,38845,38846,38847,38848,38849,38850,38851,38852,38853,38854,38855,38856,38857,38858,38859,38860,38861,38862,38863,38864,38865,38866,38867,38868,38869,38870,38871,38872,38873,38874,38875,38876,38877,38878,38879,38880,38881,38882,38883,38884,38885,38886,38887,38888,38889,38890,38891,38892,38893,38894,38895,38896,38897,38898,38899,38900,38901,38902,38903,38904,38905,38906,38907,38908,38909,38910,38911,38912,38913,38914,38915,38916,38917,38918,38919,38920,38921,38922,38923,38924,38925,38926,38927,38928,38929,38930,38931,38932,38933,38934,38935,38936,38937,38938,38939,38940,38941,38942,38943,38944,38945,38946,38947,38948,38949,38950,38951,38952,38953,38954,38955,38956,38957,38958,38959,38960,38961,38962,38963,38964,38965,38966,38967,38968,38969,38970,38971,38972,38973,38974,38975,38976,38977,38978,38979,38980,38981,38982,38983,38984,38985,38986,38987,38988,38989,38990,38991,38992,38993,38994,38995,38996,38997,38998,38999,39000,39001,39002,39003,39004,39005,39006,39007,39008,39009,39010,39011,39012,39013,39014,39015,39016,39017,39018,39019,39020,39021,39022,39023,39024,39025,39026,39027,39028,39029,39030,39031,39032,39033,39034,39035,39036,39037,39038,39039,39040,39041,39042,39043,39044,39045,39046,39047,39048,39049,39050,39051,39052,39053,39054,39055,39056,39057,39058,39059,39060,39061,39062,39063,39064,39065,39066,39067,39068,39069,39070,39071,39072,39073,39074,39075,39076,39077,39078,39079,39080,39081,39082,39083,39084,39085,39086,39087,39088,39089,39090,39091,39092,39093,39094,39095,39096,39097,39098,39099,39100,39101,39102,39103,39104,39105,39106,39107,39108,39109,39110,39111,39112,39113,39114,39115,39116,39117,39118,39119,39120,39121,39122,39123,39124,39125,39126,39127,39128,39129,39130,39131,39132,39133,39134,39135,39136,39137,39138,39139,39140,39141,39142,39143,39144,39145,39146,39147,39148,39149,39150,39151,39152,39153,39154,39155,39156,39157,39158,39159,39160,39161,39162,39163,39164,39165,39166,39167,39168,39169,39170,39171,39172,39173,39174,39175,39176,39177,39178,39179,39180,39181,39182,39183,39184,39185,39186,39187,39188,39189,39190,39191,39192,39193,39194,39195,39196,39197,39198,39199,39200,39201,39202,39203,39204,39205,39206,39207,39208,39209,39210,39211,39212,39213,39214,39215,39216,39217,39218,39219,39220,39221,39222,39223,39224,39225,39226,39227,39228,39229,39230,39231,39232,39233,39234,39235,39236,39237,39238,39239,39240,39241,39242,39243,39244,39245,39246,39247,39248,39249,39250,39251,39252,39253,39254,39255,39256,39257,39258,39259,39260,39261,39262,39263,39264,39265,39266,39267,39268,39269,39270,39271,39272,39273,39274,39275,39276,39277,39278,39279,39280,39281,39282,39283,39284,39285,39286,39287,39288,39289,39290,39291,39292,39293,39294,39295,39296,39297,39298,39299,39300,39301,39302,39303,39304,39305,39306,39307,39308,39309,39310,39311,39312,39313,39314,39315,39316,39317,39318,39319,39320,39321,39322,39323,39324,39325,39326,39327,39328,39329,39330,39331,39332,39333,39334,39335,39336,39337,39338,39339,39340,39341,39342,39343,39344,39345,39346,39347,39348,39349,39350,39351,39352,39353,39354,39355,39356,39357,39358,39359,39360,39361,39362,39363,39364,39365,39366,39367,39368,39369,39370,39371,39372,39373,39374,39375,39376,39377,39378,39379,39380,39381,39382,39383,39384,39385,39386,39387,39388,39389,39390,39391,39392,39393,39394,39395,39396,39397,39398,39399,39400,39401,39402,39403,39404,39405,39406,39407,39408,39409,39410,39411,39412,39413,39414,39415,39416,39417,39418,39419,39420,39421,39422,39423,39424,39425,39426,39427,39428,39429,39430,39431,39432,39433,39434,39435,39436,39437,39438,39439,39440,39441,39442,39443,39444,39445,39446,39447,39448,39449,39450,39451,39452,39453,39454,39455,39456,39457,39458,39459,39460,39461,39462,39463,39464,39465,39466,39467,39468,39469,39470,39471,39472,39473,39474,39475,39476,39477,39478,39479,39480,39481,39482,39483,39484,39485,39486,39487,39488,39489,39490,39491,39492,39493,39494,39495,39496,39497,39498,39499,39500,39501,39502,39503,39504,39505,39506,39507,39508,39509,39510,39511,39512,39513,39514,39515,39516,39517,39518,39519,39520,39521,39522,39523,39524,39525,39526,39527,39528,39529,39530,39531,39532,39533,39534,39535,39536,39537,39538,39539,39540,39541,39542,39543,39544,39545,39546,39547,39548,39549,39550,39551,39552,39553,39554,39555,39556,39557,39558,39559,39560,39561,39562,39563,39564,39565,39566,39567,39568,39569,39570,39571,39572,39573,39574,39575,39576,39577,39578,39579,39580,39581,39582,39583,39584,39585,39586,39587,39588,39589,39590,39591,39592,39593,39594,39595,39596,39597,39598,39599,39600,39601,39602,39603,39604,39605,39606,39607,39608,39609,39610,39611,39612,39613,39614,39615,39616,39617,39618,39619,39620,39621,39622,39623,39624,39625,39626,39627,39628,39629,39630,39631,39632,39633,39634,39635,39636,39637,39638,39639,39640,39641,39642,39643,39644,39645,39646,39647,39648,39649,39650,39651,39652,39653,39654,39655,39656,39657,39658,39659,39660,39661,39662,39663,39664,39665,39666,39667,39668,39669,39670,39671,39672,39673,39674,39675,39676,39677,39678,39679,39680,39681,39682,39683,39684,39685,39686,39687,39688,39689,39690,39691,39692,39693,39694,39695,39696,39697,39698,39699,39700,39701,39702,39703,39704,39705,39706,39707,39708,39709,39710,39711,39712,39713,39714,39715,39716,39717,39718,39719,39720,39721,39722,39723,39724,39725,39726,39727,39728,39729,39730,39731,39732,39733,39734,39735,39736,39737,39738,39739,39740,39741,39742,39743,39744,39745,39746,39747,39748,39749,39750,39751,39752,39753,39754,39755,39756,39757,39758,39759,39760,39761,39762,39763,39764,39765,39766,39767,39768,39769,39770,39771,39772,39773,39774,39775,39776,39777,39778,39779,39780,39781,39782,39783,39784,39785,39786,39787,39788,39789,39790,39791,39792,39793,39794,39795,39796,39797,39798,39799,39800,39801,39802,39803,39804,39805,39806,39807,39808,39809,39810,39811,39812,39813,39814,39815,39816,39817,39818,39819,39820,39821,39822,39823,39824,39825,39826,39827,39828,39829,39830,39831,39832,39833,39834,39835,39836,39837,39838,39839,39840,39841,39842,39843,39844,39845,39846,39847,39848,39849,39850,39851,39852,39853,39854,39855,39856,39857,39858,39859,39860,39861,39862,39863,39864,39865,39866,39867,39868,39869,39870,39871,39872,39873,39874,39875,39876,39877,39878,39879,39880,39881,39882,39883,39884,39885,39886,39887,39888,39889,39890,39891,39892,39893,39894,39895,39896,39897,39898,39899,39900,39901,39902,39903,39904,39905,39906,39907,39908,39909,39910,39911,39912,39913,39914,39915,39916,39917,39918,39919,39920,39921,39922,39923,39924,39925,39926,39927,39928,39929,39930,39931,39932,39933,39934,39935,39936,39937,39938,39939,39940,39941,39942,39943,39944,39945,39946,39947,39948,39949,39950,39951,39952,39953,39954,39955,39956,39957,39958,39959,39960,39961,39962,39963,39964,39965,39966,39967,39968,39969,39970,39971,39972,39973,39974,39975,39976,39977,39978,39979,39980,39981,39982,39983,39984,39985,39986,39987,39988,39989,39990,39991,39992,39993,39994,39995,39996,39997,39998,39999,40000,40001,40002,40003,40004,40005,40006,40007,40008,40009,40010,40011,40012,40013,40014,40015,40016,40017,40018,40019,40020,40021,40022,40023,40024,40025,40026,40027,40028,40029,40030,40031,40032,40033,40034,40035,40036,40037,40038,40039,40040,40041,40042,40043,40044,40045,40046,40047,40048,40049,40050,40051,40052,40053,40054,40055,40056,40057,40058,40059,40060,40061,40062,40063,40064,40065,40066,40067,40068,40069,40070,40071,40072,40073,40074,40075,40076,40077,40078,40079,40080,40081,40082,40083,40084,40085,40086,40087,40088,40089,40090,40091,40092,40093,40094,40095,40096,40097,40098,40099,40100,40101,40102,40103,40104,40105,40106,40107,40108,40109,40110,40111,40112,40113,40114,40115,40116,40117,40118,40119,40120,40121,40122,40123,40124,40125,40126,40127,40128,40129,40130,40131,40132,40133,40134,40135,40136,40137,40138,40139,40140,40141,40142,40143,40144,40145,40146,40147,40148,40149,40150,40151,40152,40153,40154,40155,40156,40157,40158,40159,40160,40161,40162,40163,40164,40165,40166,40167,40168,40169,40170,40171,40172,40173,40174,40175,40176,40177,40178,40179,40180,40181,40182,40183,40184,40185,40186,40187,40188,40189,40190,40191,40192,40193,40194,40195,40196,40197,40198,40199,40200,40201,40202,40203,40204,40205,40206,40207,40208,40209,40210,40211,40212,40213,40214,40215,40216,40217,40218,40219,40220,40221,40222,40223,40224,40225,40226,40227,40228,40229,40230,40231,40232,40233,40234,40235,40236,40237,40238,40239,40240,40241,40242,40243,40244,40245,40246,40247,40248,40249,40250,40251,40252,40253,40254,40255,40256,40257,40258,40259,40260,40261,40262,40263,40264,40265,40266,40267,40268,40269,40270,40271,40272,40273,40274,40275,40276,40277,40278,40279,40280,40281,40282,40283,40284,40285,40286,40287,40288,40289,40290,40291,40292,40293,40294,40295,40296,40297,40298,40299,40300,40301,40302,40303,40304,40305,40306,40307,40308,40309,40310,40311,40312,40313,40314,40315,40316,40317,40318,40319,40320,40321,40322,40323,40324,40325,40326,40327,40328,40329,40330,40331,40332,40333,40334,40335,40336,40337,40338,40339,40340,40341,40342,40343,40344,40345,40346,40347,40348,40349,40350,40351,40352,40353,40354,40355,40356,40357,40358,40359,40360,40361,40362,40363,40364,40365,40366,40367,40368,40369,40370,40371,40372,40373,40374,40375,40376,40377,40378,40379,40380,40381,40382,40383,40384,40385,40386,40387,40388,40389,40390,40391,40392,40393,40394,40395,40396,40397,40398,40399,40400,40401,40402,40403,40404,40405,40406,40407,40408,40409,40410,40411,40412,40413,40414,40415,40416,40417,40418,40419,40420,40421,40422,40423,40424,40425,40426,40427,40428,40429,40430,40431,40432,40433,40434,40435,40436,40437,40438,40439,40440,40441,40442,40443,40444,40445,40446,40447,40448,40449,40450,40451,40452,40453,40454,40455,40456,40457,40458,40459,40460,40461,40462,40463,40464,40465,40466,40467,40468,40469,40470,40471,40472,40473,40474,40475,40476,40477,40478,40479,40480,40481,40482,40483,40484,40485,40486,40487,40488,40489,40490,40491,40492,40493,40494,40495,40496,40497,40498,40499,40500,40501,40502,40503,40504,40505,40506,40507,40508,40509,40510,40511,40512,40513,40514,40515,40516,40517,40518,40519,40520,40521,40522,40523,40524,40525,40526,40527,40528,40529,40530,40531,40532,40533,40534,40535,40536,40537,40538,40539,40540,40541,40542,40543,40544,40545,40546,40547,40548,40549,40550,40551,40552,40553,40554,40555,40556,40557,40558,40559,40560,40561,40562,40563,40564,40565,40566,40567,40568,40569,40570,40571,40572,40573,40574,40575,40576,40577,40578,40579,40580,40581,40582,40583,40584,40585,40586,40587,40588,40589,40590,40591,40592,40593,40594,40595,40596,40597,40598,40599,40600,40601,40602,40603,40604,40605,40606,40607,40608,40609,40610,40611,40612,40613,40614,40615,40616,40617,40618,40619,40620,40621,40622,40623,40624,40625,40626,40627,40628,40629,40630,40631,40632,40633,40634,40635,40636,40637,40638,40639,40640,40641,40642,40643,40644,40645,40646,40647,40648,40649,40650,40651,40652,40653,40654,40655,40656,40657,40658,40659,40660,40661,40662,40663,40664,40665,40666,40667,40668,40669,40670,40671,40672,40673,40674,40675,40676,40677,40678,40679,40680,40681,40682,40683,40684,40685,40686,40687,40688,40689,40690,40691,40692,40693,40694,40695,40696,40697,40698,40699,40700,40701,40702,40703,40704,40705,40706,40707,40708,40709,40710,40711,40712,40713,40714,40715,40716,40717,40718,40719,40720,40721,40722,40723,40724,40725,40726,40727,40728,40729,40730,40731,40732,40733,40734,40735,40736,40737,40738,40739,40740,40741,40742,40743,40744,40745,40746,40747,40748,40749,40750,40751,40752,40753,40754,40755,40756,40757,40758,40759,40760,40761,40762,40763,40764,40765,40766,40767,40768,40769,40770,40771,40772,40773,40774,40775,40776,40777,40778,40779,40780,40781,40782,40783,40784,40785,40786,40787,40788,40789,40790,40791,40792,40793,40794,40795,40796,40797,40798,40799,40800,40801,40802,40803,40804,40805,40806,40807,40808,40809,40810,40811,40812,40813,40814,40815,40816,40817,40818,40819,40820,40821,40822,40823,40824,40825,40826,40827,40828,40829,40830,40831,40832,40833,40834,40835,40836,40837,40838,40839,40840,40841,40842,40843,40844,40845,40846,40847,40848,40849,40850,40851,40852,40853,40854,40855,40856,40857,40858,40859,40860,40861,40862,40863,40864,40865,40866,40867,40868,40869,40870,40871,40872,40873,40874,40875,40876,40877,40878,40879,40880,40881,40882,40883,40884,40885,40886,40887,40888,40889,40890,40891,40892,40893,40894,40895,40896,40897,40898,40899,40900,40901,40902,40903,40904,40905,40906,40907,40908,40960,40961,40962,40963,40964,40965,40966,40967,40968,40969,40970,40971,40972,40973,40974,40975,40976,40977,40978,40979,40980,40981,40982,40983,40984,40985,40986,40987,40988,40989,40990,40991,40992,40993,40994,40995,40996,40997,40998,40999,41000,41001,41002,41003,41004,41005,41006,41007,41008,41009,41010,41011,41012,41013,41014,41015,41016,41017,41018,41019,41020,41021,41022,41023,41024,41025,41026,41027,41028,41029,41030,41031,41032,41033,41034,41035,41036,41037,41038,41039,41040,41041,41042,41043,41044,41045,41046,41047,41048,41049,41050,41051,41052,41053,41054,41055,41056,41057,41058,41059,41060,41061,41062,41063,41064,41065,41066,41067,41068,41069,41070,41071,41072,41073,41074,41075,41076,41077,41078,41079,41080,41081,41082,41083,41084,41085,41086,41087,41088,41089,41090,41091,41092,41093,41094,41095,41096,41097,41098,41099,41100,41101,41102,41103,41104,41105,41106,41107,41108,41109,41110,41111,41112,41113,41114,41115,41116,41117,41118,41119,41120,41121,41122,41123,41124,41125,41126,41127,41128,41129,41130,41131,41132,41133,41134,41135,41136,41137,41138,41139,41140,41141,41142,41143,41144,41145,41146,41147,41148,41149,41150,41151,41152,41153,41154,41155,41156,41157,41158,41159,41160,41161,41162,41163,41164,41165,41166,41167,41168,41169,41170,41171,41172,41173,41174,41175,41176,41177,41178,41179,41180,41181,41182,41183,41184,41185,41186,41187,41188,41189,41190,41191,41192,41193,41194,41195,41196,41197,41198,41199,41200,41201,41202,41203,41204,41205,41206,41207,41208,41209,41210,41211,41212,41213,41214,41215,41216,41217,41218,41219,41220,41221,41222,41223,41224,41225,41226,41227,41228,41229,41230,41231,41232,41233,41234,41235,41236,41237,41238,41239,41240,41241,41242,41243,41244,41245,41246,41247,41248,41249,41250,41251,41252,41253,41254,41255,41256,41257,41258,41259,41260,41261,41262,41263,41264,41265,41266,41267,41268,41269,41270,41271,41272,41273,41274,41275,41276,41277,41278,41279,41280,41281,41282,41283,41284,41285,41286,41287,41288,41289,41290,41291,41292,41293,41294,41295,41296,41297,41298,41299,41300,41301,41302,41303,41304,41305,41306,41307,41308,41309,41310,41311,41312,41313,41314,41315,41316,41317,41318,41319,41320,41321,41322,41323,41324,41325,41326,41327,41328,41329,41330,41331,41332,41333,41334,41335,41336,41337,41338,41339,41340,41341,41342,41343,41344,41345,41346,41347,41348,41349,41350,41351,41352,41353,41354,41355,41356,41357,41358,41359,41360,41361,41362,41363,41364,41365,41366,41367,41368,41369,41370,41371,41372,41373,41374,41375,41376,41377,41378,41379,41380,41381,41382,41383,41384,41385,41386,41387,41388,41389,41390,41391,41392,41393,41394,41395,41396,41397,41398,41399,41400,41401,41402,41403,41404,41405,41406,41407,41408,41409,41410,41411,41412,41413,41414,41415,41416,41417,41418,41419,41420,41421,41422,41423,41424,41425,41426,41427,41428,41429,41430,41431,41432,41433,41434,41435,41436,41437,41438,41439,41440,41441,41442,41443,41444,41445,41446,41447,41448,41449,41450,41451,41452,41453,41454,41455,41456,41457,41458,41459,41460,41461,41462,41463,41464,41465,41466,41467,41468,41469,41470,41471,41472,41473,41474,41475,41476,41477,41478,41479,41480,41481,41482,41483,41484,41485,41486,41487,41488,41489,41490,41491,41492,41493,41494,41495,41496,41497,41498,41499,41500,41501,41502,41503,41504,41505,41506,41507,41508,41509,41510,41511,41512,41513,41514,41515,41516,41517,41518,41519,41520,41521,41522,41523,41524,41525,41526,41527,41528,41529,41530,41531,41532,41533,41534,41535,41536,41537,41538,41539,41540,41541,41542,41543,41544,41545,41546,41547,41548,41549,41550,41551,41552,41553,41554,41555,41556,41557,41558,41559,41560,41561,41562,41563,41564,41565,41566,41567,41568,41569,41570,41571,41572,41573,41574,41575,41576,41577,41578,41579,41580,41581,41582,41583,41584,41585,41586,41587,41588,41589,41590,41591,41592,41593,41594,41595,41596,41597,41598,41599,41600,41601,41602,41603,41604,41605,41606,41607,41608,41609,41610,41611,41612,41613,41614,41615,41616,41617,41618,41619,41620,41621,41622,41623,41624,41625,41626,41627,41628,41629,41630,41631,41632,41633,41634,41635,41636,41637,41638,41639,41640,41641,41642,41643,41644,41645,41646,41647,41648,41649,41650,41651,41652,41653,41654,41655,41656,41657,41658,41659,41660,41661,41662,41663,41664,41665,41666,41667,41668,41669,41670,41671,41672,41673,41674,41675,41676,41677,41678,41679,41680,41681,41682,41683,41684,41685,41686,41687,41688,41689,41690,41691,41692,41693,41694,41695,41696,41697,41698,41699,41700,41701,41702,41703,41704,41705,41706,41707,41708,41709,41710,41711,41712,41713,41714,41715,41716,41717,41718,41719,41720,41721,41722,41723,41724,41725,41726,41727,41728,41729,41730,41731,41732,41733,41734,41735,41736,41737,41738,41739,41740,41741,41742,41743,41744,41745,41746,41747,41748,41749,41750,41751,41752,41753,41754,41755,41756,41757,41758,41759,41760,41761,41762,41763,41764,41765,41766,41767,41768,41769,41770,41771,41772,41773,41774,41775,41776,41777,41778,41779,41780,41781,41782,41783,41784,41785,41786,41787,41788,41789,41790,41791,41792,41793,41794,41795,41796,41797,41798,41799,41800,41801,41802,41803,41804,41805,41806,41807,41808,41809,41810,41811,41812,41813,41814,41815,41816,41817,41818,41819,41820,41821,41822,41823,41824,41825,41826,41827,41828,41829,41830,41831,41832,41833,41834,41835,41836,41837,41838,41839,41840,41841,41842,41843,41844,41845,41846,41847,41848,41849,41850,41851,41852,41853,41854,41855,41856,41857,41858,41859,41860,41861,41862,41863,41864,41865,41866,41867,41868,41869,41870,41871,41872,41873,41874,41875,41876,41877,41878,41879,41880,41881,41882,41883,41884,41885,41886,41887,41888,41889,41890,41891,41892,41893,41894,41895,41896,41897,41898,41899,41900,41901,41902,41903,41904,41905,41906,41907,41908,41909,41910,41911,41912,41913,41914,41915,41916,41917,41918,41919,41920,41921,41922,41923,41924,41925,41926,41927,41928,41929,41930,41931,41932,41933,41934,41935,41936,41937,41938,41939,41940,41941,41942,41943,41944,41945,41946,41947,41948,41949,41950,41951,41952,41953,41954,41955,41956,41957,41958,41959,41960,41961,41962,41963,41964,41965,41966,41967,41968,41969,41970,41971,41972,41973,41974,41975,41976,41977,41978,41979,41980,41981,41982,41983,41984,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,41997,41998,41999,42000,42001,42002,42003,42004,42005,42006,42007,42008,42009,42010,42011,42012,42013,42014,42015,42016,42017,42018,42019,42020,42021,42022,42023,42024,42025,42026,42027,42028,42029,42030,42031,42032,42033,42034,42035,42036,42037,42038,42039,42040,42041,42042,42043,42044,42045,42046,42047,42048,42049,42050,42051,42052,42053,42054,42055,42056,42057,42058,42059,42060,42061,42062,42063,42064,42065,42066,42067,42068,42069,42070,42071,42072,42073,42074,42075,42076,42077,42078,42079,42080,42081,42082,42083,42084,42085,42086,42087,42088,42089,42090,42091,42092,42093,42094,42095,42096,42097,42098,42099,42100,42101,42102,42103,42104,42105,42106,42107,42108,42109,42110,42111,42112,42113,42114,42115,42116,42117,42118,42119,42120,42121,42122,42123,42124,42192,42193,42194,42195,42196,42197,42198,42199,42200,42201,42202,42203,42204,42205,42206,42207,42208,42209,42210,42211,42212,42213,42214,42215,42216,42217,42218,42219,42220,42221,42222,42223,42224,42225,42226,42227,42228,42229,42230,42231,42232,42233,42234,42235,42236,42237,42240,42241,42242,42243,42244,42245,42246,42247,42248,42249,42250,42251,42252,42253,42254,42255,42256,42257,42258,42259,42260,42261,42262,42263,42264,42265,42266,42267,42268,42269,42270,42271,42272,42273,42274,42275,42276,42277,42278,42279,42280,42281,42282,42283,42284,42285,42286,42287,42288,42289,42290,42291,42292,42293,42294,42295,42296,42297,42298,42299,42300,42301,42302,42303,42304,42305,42306,42307,42308,42309,42310,42311,42312,42313,42314,42315,42316,42317,42318,42319,42320,42321,42322,42323,42324,42325,42326,42327,42328,42329,42330,42331,42332,42333,42334,42335,42336,42337,42338,42339,42340,42341,42342,42343,42344,42345,42346,42347,42348,42349,42350,42351,42352,42353,42354,42355,42356,42357,42358,42359,42360,42361,42362,42363,42364,42365,42366,42367,42368,42369,42370,42371,42372,42373,42374,42375,42376,42377,42378,42379,42380,42381,42382,42383,42384,42385,42386,42387,42388,42389,42390,42391,42392,42393,42394,42395,42396,42397,42398,42399,42400,42401,42402,42403,42404,42405,42406,42407,42408,42409,42410,42411,42412,42413,42414,42415,42416,42417,42418,42419,42420,42421,42422,42423,42424,42425,42426,42427,42428,42429,42430,42431,42432,42433,42434,42435,42436,42437,42438,42439,42440,42441,42442,42443,42444,42445,42446,42447,42448,42449,42450,42451,42452,42453,42454,42455,42456,42457,42458,42459,42460,42461,42462,42463,42464,42465,42466,42467,42468,42469,42470,42471,42472,42473,42474,42475,42476,42477,42478,42479,42480,42481,42482,42483,42484,42485,42486,42487,42488,42489,42490,42491,42492,42493,42494,42495,42496,42497,42498,42499,42500,42501,42502,42503,42504,42505,42506,42507,42508,42512,42513,42514,42515,42516,42517,42518,42519,42520,42521,42522,42523,42524,42525,42526,42527,42538,42539,42560,42561,42562,42563,42564,42565,42566,42567,42568,42569,42570,42571,42572,42573,42574,42575,42576,42577,42578,42579,42580,42581,42582,42583,42584,42585,42586,42587,42588,42589,42590,42591,42592,42593,42594,42595,42596,42597,42598,42599,42600,42601,42602,42603,42604,42605,42606,42623,42624,42625,42626,42627,42628,42629,42630,42631,42632,42633,42634,42635,42636,42637,42638,42639,42640,42641,42642,42643,42644,42645,42646,42647,42656,42657,42658,42659,42660,42661,42662,42663,42664,42665,42666,42667,42668,42669,42670,42671,42672,42673,42674,42675,42676,42677,42678,42679,42680,42681,42682,42683,42684,42685,42686,42687,42688,42689,42690,42691,42692,42693,42694,42695,42696,42697,42698,42699,42700,42701,42702,42703,42704,42705,42706,42707,42708,42709,42710,42711,42712,42713,42714,42715,42716,42717,42718,42719,42720,42721,42722,42723,42724,42725,42726,42727,42728,42729,42730,42731,42732,42733,42734,42735,42775,42776,42777,42778,42779,42780,42781,42782,42783,42786,42787,42788,42789,42790,42791,42792,42793,42794,42795,42796,42797,42798,42799,42800,42801,42802,42803,42804,42805,42806,42807,42808,42809,42810,42811,42812,42813,42814,42815,42816,42817,42818,42819,42820,42821,42822,42823,42824,42825,42826,42827,42828,42829,42830,42831,42832,42833,42834,42835,42836,42837,42838,42839,42840,42841,42842,42843,42844,42845,42846,42847,42848,42849,42850,42851,42852,42853,42854,42855,42856,42857,42858,42859,42860,42861,42862,42863,42864,42865,42866,42867,42868,42869,42870,42871,42872,42873,42874,42875,42876,42877,42878,42879,42880,42881,42882,42883,42884,42885,42886,42887,42888,42891,42892,42893,42894,42896,42897,42898,42899,42912,42913,42914,42915,42916,42917,42918,42919,42920,42921,42922,43000,43001,43002,43003,43004,43005,43006,43007,43008,43009,43011,43012,43013,43015,43016,43017,43018,43020,43021,43022,43023,43024,43025,43026,43027,43028,43029,43030,43031,43032,43033,43034,43035,43036,43037,43038,43039,43040,43041,43042,43072,43073,43074,43075,43076,43077,43078,43079,43080,43081,43082,43083,43084,43085,43086,43087,43088,43089,43090,43091,43092,43093,43094,43095,43096,43097,43098,43099,43100,43101,43102,43103,43104,43105,43106,43107,43108,43109,43110,43111,43112,43113,43114,43115,43116,43117,43118,43119,43120,43121,43122,43123,43138,43139,43140,43141,43142,43143,43144,43145,43146,43147,43148,43149,43150,43151,43152,43153,43154,43155,43156,43157,43158,43159,43160,43161,43162,43163,43164,43165,43166,43167,43168,43169,43170,43171,43172,43173,43174,43175,43176,43177,43178,43179,43180,43181,43182,43183,43184,43185,43186,43187,43250,43251,43252,43253,43254,43255,43259,43274,43275,43276,43277,43278,43279,43280,43281,43282,43283,43284,43285,43286,43287,43288,43289,43290,43291,43292,43293,43294,43295,43296,43297,43298,43299,43300,43301,43312,43313,43314,43315,43316,43317,43318,43319,43320,43321,43322,43323,43324,43325,43326,43327,43328,43329,43330,43331,43332,43333,43334,43360,43361,43362,43363,43364,43365,43366,43367,43368,43369,43370,43371,43372,43373,43374,43375,43376,43377,43378,43379,43380,43381,43382,43383,43384,43385,43386,43387,43388,43396,43397,43398,43399,43400,43401,43402,43403,43404,43405,43406,43407,43408,43409,43410,43411,43412,43413,43414,43415,43416,43417,43418,43419,43420,43421,43422,43423,43424,43425,43426,43427,43428,43429,43430,43431,43432,43433,43434,43435,43436,43437,43438,43439,43440,43441,43442,43471,43520,43521,43522,43523,43524,43525,43526,43527,43528,43529,43530,43531,43532,43533,43534,43535,43536,43537,43538,43539,43540,43541,43542,43543,43544,43545,43546,43547,43548,43549,43550,43551,43552,43553,43554,43555,43556,43557,43558,43559,43560,43584,43585,43586,43588,43589,43590,43591,43592,43593,43594,43595,43616,43617,43618,43619,43620,43621,43622,43623,43624,43625,43626,43627,43628,43629,43630,43631,43632,43633,43634,43635,43636,43637,43638,43642,43648,43649,43650,43651,43652,43653,43654,43655,43656,43657,43658,43659,43660,43661,43662,43663,43664,43665,43666,43667,43668,43669,43670,43671,43672,43673,43674,43675,43676,43677,43678,43679,43680,43681,43682,43683,43684,43685,43686,43687,43688,43689,43690,43691,43692,43693,43694,43695,43697,43701,43702,43705,43706,43707,43708,43709,43712,43714,43739,43740,43741,43744,43745,43746,43747,43748,43749,43750,43751,43752,43753,43754,43762,43763,43764,43777,43778,43779,43780,43781,43782,43785,43786,43787,43788,43789,43790,43793,43794,43795,43796,43797,43798,43808,43809,43810,43811,43812,43813,43814,43816,43817,43818,43819,43820,43821,43822,43968,43969,43970,43971,43972,43973,43974,43975,43976,43977,43978,43979,43980,43981,43982,43983,43984,43985,43986,43987,43988,43989,43990,43991,43992,43993,43994,43995,43996,43997,43998,43999,44000,44001,44002,44032,44033,44034,44035,44036,44037,44038,44039,44040,44041,44042,44043,44044,44045,44046,44047,44048,44049,44050,44051,44052,44053,44054,44055,44056,44057,44058,44059,44060,44061,44062,44063,44064,44065,44066,44067,44068,44069,44070,44071,44072,44073,44074,44075,44076,44077,44078,44079,44080,44081,44082,44083,44084,44085,44086,44087,44088,44089,44090,44091,44092,44093,44094,44095,44096,44097,44098,44099,44100,44101,44102,44103,44104,44105,44106,44107,44108,44109,44110,44111,44112,44113,44114,44115,44116,44117,44118,44119,44120,44121,44122,44123,44124,44125,44126,44127,44128,44129,44130,44131,44132,44133,44134,44135,44136,44137,44138,44139,44140,44141,44142,44143,44144,44145,44146,44147,44148,44149,44150,44151,44152,44153,44154,44155,44156,44157,44158,44159,44160,44161,44162,44163,44164,44165,44166,44167,44168,44169,44170,44171,44172,44173,44174,44175,44176,44177,44178,44179,44180,44181,44182,44183,44184,44185,44186,44187,44188,44189,44190,44191,44192,44193,44194,44195,44196,44197,44198,44199,44200,44201,44202,44203,44204,44205,44206,44207,44208,44209,44210,44211,44212,44213,44214,44215,44216,44217,44218,44219,44220,44221,44222,44223,44224,44225,44226,44227,44228,44229,44230,44231,44232,44233,44234,44235,44236,44237,44238,44239,44240,44241,44242,44243,44244,44245,44246,44247,44248,44249,44250,44251,44252,44253,44254,44255,44256,44257,44258,44259,44260,44261,44262,44263,44264,44265,44266,44267,44268,44269,44270,44271,44272,44273,44274,44275,44276,44277,44278,44279,44280,44281,44282,44283,44284,44285,44286,44287,44288,44289,44290,44291,44292,44293,44294,44295,44296,44297,44298,44299,44300,44301,44302,44303,44304,44305,44306,44307,44308,44309,44310,44311,44312,44313,44314,44315,44316,44317,44318,44319,44320,44321,44322,44323,44324,44325,44326,44327,44328,44329,44330,44331,44332,44333,44334,44335,44336,44337,44338,44339,44340,44341,44342,44343,44344,44345,44346,44347,44348,44349,44350,44351,44352,44353,44354,44355,44356,44357,44358,44359,44360,44361,44362,44363,44364,44365,44366,44367,44368,44369,44370,44371,44372,44373,44374,44375,44376,44377,44378,44379,44380,44381,44382,44383,44384,44385,44386,44387,44388,44389,44390,44391,44392,44393,44394,44395,44396,44397,44398,44399,44400,44401,44402,44403,44404,44405,44406,44407,44408,44409,44410,44411,44412,44413,44414,44415,44416,44417,44418,44419,44420,44421,44422,44423,44424,44425,44426,44427,44428,44429,44430,44431,44432,44433,44434,44435,44436,44437,44438,44439,44440,44441,44442,44443,44444,44445,44446,44447,44448,44449,44450,44451,44452,44453,44454,44455,44456,44457,44458,44459,44460,44461,44462,44463,44464,44465,44466,44467,44468,44469,44470,44471,44472,44473,44474,44475,44476,44477,44478,44479,44480,44481,44482,44483,44484,44485,44486,44487,44488,44489,44490,44491,44492,44493,44494,44495,44496,44497,44498,44499,44500,44501,44502,44503,44504,44505,44506,44507,44508,44509,44510,44511,44512,44513,44514,44515,44516,44517,44518,44519,44520,44521,44522,44523,44524,44525,44526,44527,44528,44529,44530,44531,44532,44533,44534,44535,44536,44537,44538,44539,44540,44541,44542,44543,44544,44545,44546,44547,44548,44549,44550,44551,44552,44553,44554,44555,44556,44557,44558,44559,44560,44561,44562,44563,44564,44565,44566,44567,44568,44569,44570,44571,44572,44573,44574,44575,44576,44577,44578,44579,44580,44581,44582,44583,44584,44585,44586,44587,44588,44589,44590,44591,44592,44593,44594,44595,44596,44597,44598,44599,44600,44601,44602,44603,44604,44605,44606,44607,44608,44609,44610,44611,44612,44613,44614,44615,44616,44617,44618,44619,44620,44621,44622,44623,44624,44625,44626,44627,44628,44629,44630,44631,44632,44633,44634,44635,44636,44637,44638,44639,44640,44641,44642,44643,44644,44645,44646,44647,44648,44649,44650,44651,44652,44653,44654,44655,44656,44657,44658,44659,44660,44661,44662,44663,44664,44665,44666,44667,44668,44669,44670,44671,44672,44673,44674,44675,44676,44677,44678,44679,44680,44681,44682,44683,44684,44685,44686,44687,44688,44689,44690,44691,44692,44693,44694,44695,44696,44697,44698,44699,44700,44701,44702,44703,44704,44705,44706,44707,44708,44709,44710,44711,44712,44713,44714,44715,44716,44717,44718,44719,44720,44721,44722,44723,44724,44725,44726,44727,44728,44729,44730,44731,44732,44733,44734,44735,44736,44737,44738,44739,44740,44741,44742,44743,44744,44745,44746,44747,44748,44749,44750,44751,44752,44753,44754,44755,44756,44757,44758,44759,44760,44761,44762,44763,44764,44765,44766,44767,44768,44769,44770,44771,44772,44773,44774,44775,44776,44777,44778,44779,44780,44781,44782,44783,44784,44785,44786,44787,44788,44789,44790,44791,44792,44793,44794,44795,44796,44797,44798,44799,44800,44801,44802,44803,44804,44805,44806,44807,44808,44809,44810,44811,44812,44813,44814,44815,44816,44817,44818,44819,44820,44821,44822,44823,44824,44825,44826,44827,44828,44829,44830,44831,44832,44833,44834,44835,44836,44837,44838,44839,44840,44841,44842,44843,44844,44845,44846,44847,44848,44849,44850,44851,44852,44853,44854,44855,44856,44857,44858,44859,44860,44861,44862,44863,44864,44865,44866,44867,44868,44869,44870,44871,44872,44873,44874,44875,44876,44877,44878,44879,44880,44881,44882,44883,44884,44885,44886,44887,44888,44889,44890,44891,44892,44893,44894,44895,44896,44897,44898,44899,44900,44901,44902,44903,44904,44905,44906,44907,44908,44909,44910,44911,44912,44913,44914,44915,44916,44917,44918,44919,44920,44921,44922,44923,44924,44925,44926,44927,44928,44929,44930,44931,44932,44933,44934,44935,44936,44937,44938,44939,44940,44941,44942,44943,44944,44945,44946,44947,44948,44949,44950,44951,44952,44953,44954,44955,44956,44957,44958,44959,44960,44961,44962,44963,44964,44965,44966,44967,44968,44969,44970,44971,44972,44973,44974,44975,44976,44977,44978,44979,44980,44981,44982,44983,44984,44985,44986,44987,44988,44989,44990,44991,44992,44993,44994,44995,44996,44997,44998,44999,45000,45001,45002,45003,45004,45005,45006,45007,45008,45009,45010,45011,45012,45013,45014,45015,45016,45017,45018,45019,45020,45021,45022,45023,45024,45025,45026,45027,45028,45029,45030,45031,45032,45033,45034,45035,45036,45037,45038,45039,45040,45041,45042,45043,45044,45045,45046,45047,45048,45049,45050,45051,45052,45053,45054,45055,45056,45057,45058,45059,45060,45061,45062,45063,45064,45065,45066,45067,45068,45069,45070,45071,45072,45073,45074,45075,45076,45077,45078,45079,45080,45081,45082,45083,45084,45085,45086,45087,45088,45089,45090,45091,45092,45093,45094,45095,45096,45097,45098,45099,45100,45101,45102,45103,45104,45105,45106,45107,45108,45109,45110,45111,45112,45113,45114,45115,45116,45117,45118,45119,45120,45121,45122,45123,45124,45125,45126,45127,45128,45129,45130,45131,45132,45133,45134,45135,45136,45137,45138,45139,45140,45141,45142,45143,45144,45145,45146,45147,45148,45149,45150,45151,45152,45153,45154,45155,45156,45157,45158,45159,45160,45161,45162,45163,45164,45165,45166,45167,45168,45169,45170,45171,45172,45173,45174,45175,45176,45177,45178,45179,45180,45181,45182,45183,45184,45185,45186,45187,45188,45189,45190,45191,45192,45193,45194,45195,45196,45197,45198,45199,45200,45201,45202,45203,45204,45205,45206,45207,45208,45209,45210,45211,45212,45213,45214,45215,45216,45217,45218,45219,45220,45221,45222,45223,45224,45225,45226,45227,45228,45229,45230,45231,45232,45233,45234,45235,45236,45237,45238,45239,45240,45241,45242,45243,45244,45245,45246,45247,45248,45249,45250,45251,45252,45253,45254,45255,45256,45257,45258,45259,45260,45261,45262,45263,45264,45265,45266,45267,45268,45269,45270,45271,45272,45273,45274,45275,45276,45277,45278,45279,45280,45281,45282,45283,45284,45285,45286,45287,45288,45289,45290,45291,45292,45293,45294,45295,45296,45297,45298,45299,45300,45301,45302,45303,45304,45305,45306,45307,45308,45309,45310,45311,45312,45313,45314,45315,45316,45317,45318,45319,45320,45321,45322,45323,45324,45325,45326,45327,45328,45329,45330,45331,45332,45333,45334,45335,45336,45337,45338,45339,45340,45341,45342,45343,45344,45345,45346,45347,45348,45349,45350,45351,45352,45353,45354,45355,45356,45357,45358,45359,45360,45361,45362,45363,45364,45365,45366,45367,45368,45369,45370,45371,45372,45373,45374,45375,45376,45377,45378,45379,45380,45381,45382,45383,45384,45385,45386,45387,45388,45389,45390,45391,45392,45393,45394,45395,45396,45397,45398,45399,45400,45401,45402,45403,45404,45405,45406,45407,45408,45409,45410,45411,45412,45413,45414,45415,45416,45417,45418,45419,45420,45421,45422,45423,45424,45425,45426,45427,45428,45429,45430,45431,45432,45433,45434,45435,45436,45437,45438,45439,45440,45441,45442,45443,45444,45445,45446,45447,45448,45449,45450,45451,45452,45453,45454,45455,45456,45457,45458,45459,45460,45461,45462,45463,45464,45465,45466,45467,45468,45469,45470,45471,45472,45473,45474,45475,45476,45477,45478,45479,45480,45481,45482,45483,45484,45485,45486,45487,45488,45489,45490,45491,45492,45493,45494,45495,45496,45497,45498,45499,45500,45501,45502,45503,45504,45505,45506,45507,45508,45509,45510,45511,45512,45513,45514,45515,45516,45517,45518,45519,45520,45521,45522,45523,45524,45525,45526,45527,45528,45529,45530,45531,45532,45533,45534,45535,45536,45537,45538,45539,45540,45541,45542,45543,45544,45545,45546,45547,45548,45549,45550,45551,45552,45553,45554,45555,45556,45557,45558,45559,45560,45561,45562,45563,45564,45565,45566,45567,45568,45569,45570,45571,45572,45573,45574,45575,45576,45577,45578,45579,45580,45581,45582,45583,45584,45585,45586,45587,45588,45589,45590,45591,45592,45593,45594,45595,45596,45597,45598,45599,45600,45601,45602,45603,45604,45605,45606,45607,45608,45609,45610,45611,45612,45613,45614,45615,45616,45617,45618,45619,45620,45621,45622,45623,45624,45625,45626,45627,45628,45629,45630,45631,45632,45633,45634,45635,45636,45637,45638,45639,45640,45641,45642,45643,45644,45645,45646,45647,45648,45649,45650,45651,45652,45653,45654,45655,45656,45657,45658,45659,45660,45661,45662,45663,45664,45665,45666,45667,45668,45669,45670,45671,45672,45673,45674,45675,45676,45677,45678,45679,45680,45681,45682,45683,45684,45685,45686,45687,45688,45689,45690,45691,45692,45693,45694,45695,45696,45697,45698,45699,45700,45701,45702,45703,45704,45705,45706,45707,45708,45709,45710,45711,45712,45713,45714,45715,45716,45717,45718,45719,45720,45721,45722,45723,45724,45725,45726,45727,45728,45729,45730,45731,45732,45733,45734,45735,45736,45737,45738,45739,45740,45741,45742,45743,45744,45745,45746,45747,45748,45749,45750,45751,45752,45753,45754,45755,45756,45757,45758,45759,45760,45761,45762,45763,45764,45765,45766,45767,45768,45769,45770,45771,45772,45773,45774,45775,45776,45777,45778,45779,45780,45781,45782,45783,45784,45785,45786,45787,45788,45789,45790,45791,45792,45793,45794,45795,45796,45797,45798,45799,45800,45801,45802,45803,45804,45805,45806,45807,45808,45809,45810,45811,45812,45813,45814,45815,45816,45817,45818,45819,45820,45821,45822,45823,45824,45825,45826,45827,45828,45829,45830,45831,45832,45833,45834,45835,45836,45837,45838,45839,45840,45841,45842,45843,45844,45845,45846,45847,45848,45849,45850,45851,45852,45853,45854,45855,45856,45857,45858,45859,45860,45861,45862,45863,45864,45865,45866,45867,45868,45869,45870,45871,45872,45873,45874,45875,45876,45877,45878,45879,45880,45881,45882,45883,45884,45885,45886,45887,45888,45889,45890,45891,45892,45893,45894,45895,45896,45897,45898,45899,45900,45901,45902,45903,45904,45905,45906,45907,45908,45909,45910,45911,45912,45913,45914,45915,45916,45917,45918,45919,45920,45921,45922,45923,45924,45925,45926,45927,45928,45929,45930,45931,45932,45933,45934,45935,45936,45937,45938,45939,45940,45941,45942,45943,45944,45945,45946,45947,45948,45949,45950,45951,45952,45953,45954,45955,45956,45957,45958,45959,45960,45961,45962,45963,45964,45965,45966,45967,45968,45969,45970,45971,45972,45973,45974,45975,45976,45977,45978,45979,45980,45981,45982,45983,45984,45985,45986,45987,45988,45989,45990,45991,45992,45993,45994,45995,45996,45997,45998,45999,46000,46001,46002,46003,46004,46005,46006,46007,46008,46009,46010,46011,46012,46013,46014,46015,46016,46017,46018,46019,46020,46021,46022,46023,46024,46025,46026,46027,46028,46029,46030,46031,46032,46033,46034,46035,46036,46037,46038,46039,46040,46041,46042,46043,46044,46045,46046,46047,46048,46049,46050,46051,46052,46053,46054,46055,46056,46057,46058,46059,46060,46061,46062,46063,46064,46065,46066,46067,46068,46069,46070,46071,46072,46073,46074,46075,46076,46077,46078,46079,46080,46081,46082,46083,46084,46085,46086,46087,46088,46089,46090,46091,46092,46093,46094,46095,46096,46097,46098,46099,46100,46101,46102,46103,46104,46105,46106,46107,46108,46109,46110,46111,46112,46113,46114,46115,46116,46117,46118,46119,46120,46121,46122,46123,46124,46125,46126,46127,46128,46129,46130,46131,46132,46133,46134,46135,46136,46137,46138,46139,46140,46141,46142,46143,46144,46145,46146,46147,46148,46149,46150,46151,46152,46153,46154,46155,46156,46157,46158,46159,46160,46161,46162,46163,46164,46165,46166,46167,46168,46169,46170,46171,46172,46173,46174,46175,46176,46177,46178,46179,46180,46181,46182,46183,46184,46185,46186,46187,46188,46189,46190,46191,46192,46193,46194,46195,46196,46197,46198,46199,46200,46201,46202,46203,46204,46205,46206,46207,46208,46209,46210,46211,46212,46213,46214,46215,46216,46217,46218,46219,46220,46221,46222,46223,46224,46225,46226,46227,46228,46229,46230,46231,46232,46233,46234,46235,46236,46237,46238,46239,46240,46241,46242,46243,46244,46245,46246,46247,46248,46249,46250,46251,46252,46253,46254,46255,46256,46257,46258,46259,46260,46261,46262,46263,46264,46265,46266,46267,46268,46269,46270,46271,46272,46273,46274,46275,46276,46277,46278,46279,46280,46281,46282,46283,46284,46285,46286,46287,46288,46289,46290,46291,46292,46293,46294,46295,46296,46297,46298,46299,46300,46301,46302,46303,46304,46305,46306,46307,46308,46309,46310,46311,46312,46313,46314,46315,46316,46317,46318,46319,46320,46321,46322,46323,46324,46325,46326,46327,46328,46329,46330,46331,46332,46333,46334,46335,46336,46337,46338,46339,46340,46341,46342,46343,46344,46345,46346,46347,46348,46349,46350,46351,46352,46353,46354,46355,46356,46357,46358,46359,46360,46361,46362,46363,46364,46365,46366,46367,46368,46369,46370,46371,46372,46373,46374,46375,46376,46377,46378,46379,46380,46381,46382,46383,46384,46385,46386,46387,46388,46389,46390,46391,46392,46393,46394,46395,46396,46397,46398,46399,46400,46401,46402,46403,46404,46405,46406,46407,46408,46409,46410,46411,46412,46413,46414,46415,46416,46417,46418,46419,46420,46421,46422,46423,46424,46425,46426,46427,46428,46429,46430,46431,46432,46433,46434,46435,46436,46437,46438,46439,46440,46441,46442,46443,46444,46445,46446,46447,46448,46449,46450,46451,46452,46453,46454,46455,46456,46457,46458,46459,46460,46461,46462,46463,46464,46465,46466,46467,46468,46469,46470,46471,46472,46473,46474,46475,46476,46477,46478,46479,46480,46481,46482,46483,46484,46485,46486,46487,46488,46489,46490,46491,46492,46493,46494,46495,46496,46497,46498,46499,46500,46501,46502,46503,46504,46505,46506,46507,46508,46509,46510,46511,46512,46513,46514,46515,46516,46517,46518,46519,46520,46521,46522,46523,46524,46525,46526,46527,46528,46529,46530,46531,46532,46533,46534,46535,46536,46537,46538,46539,46540,46541,46542,46543,46544,46545,46546,46547,46548,46549,46550,46551,46552,46553,46554,46555,46556,46557,46558,46559,46560,46561,46562,46563,46564,46565,46566,46567,46568,46569,46570,46571,46572,46573,46574,46575,46576,46577,46578,46579,46580,46581,46582,46583,46584,46585,46586,46587,46588,46589,46590,46591,46592,46593,46594,46595,46596,46597,46598,46599,46600,46601,46602,46603,46604,46605,46606,46607,46608,46609,46610,46611,46612,46613,46614,46615,46616,46617,46618,46619,46620,46621,46622,46623,46624,46625,46626,46627,46628,46629,46630,46631,46632,46633,46634,46635,46636,46637,46638,46639,46640,46641,46642,46643,46644,46645,46646,46647,46648,46649,46650,46651,46652,46653,46654,46655,46656,46657,46658,46659,46660,46661,46662,46663,46664,46665,46666,46667,46668,46669,46670,46671,46672,46673,46674,46675,46676,46677,46678,46679,46680,46681,46682,46683,46684,46685,46686,46687,46688,46689,46690,46691,46692,46693,46694,46695,46696,46697,46698,46699,46700,46701,46702,46703,46704,46705,46706,46707,46708,46709,46710,46711,46712,46713,46714,46715,46716,46717,46718,46719,46720,46721,46722,46723,46724,46725,46726,46727,46728,46729,46730,46731,46732,46733,46734,46735,46736,46737,46738,46739,46740,46741,46742,46743,46744,46745,46746,46747,46748,46749,46750,46751,46752,46753,46754,46755,46756,46757,46758,46759,46760,46761,46762,46763,46764,46765,46766,46767,46768,46769,46770,46771,46772,46773,46774,46775,46776,46777,46778,46779,46780,46781,46782,46783,46784,46785,46786,46787,46788,46789,46790,46791,46792,46793,46794,46795,46796,46797,46798,46799,46800,46801,46802,46803,46804,46805,46806,46807,46808,46809,46810,46811,46812,46813,46814,46815,46816,46817,46818,46819,46820,46821,46822,46823,46824,46825,46826,46827,46828,46829,46830,46831,46832,46833,46834,46835,46836,46837,46838,46839,46840,46841,46842,46843,46844,46845,46846,46847,46848,46849,46850,46851,46852,46853,46854,46855,46856,46857,46858,46859,46860,46861,46862,46863,46864,46865,46866,46867,46868,46869,46870,46871,46872,46873,46874,46875,46876,46877,46878,46879,46880,46881,46882,46883,46884,46885,46886,46887,46888,46889,46890,46891,46892,46893,46894,46895,46896,46897,46898,46899,46900,46901,46902,46903,46904,46905,46906,46907,46908,46909,46910,46911,46912,46913,46914,46915,46916,46917,46918,46919,46920,46921,46922,46923,46924,46925,46926,46927,46928,46929,46930,46931,46932,46933,46934,46935,46936,46937,46938,46939,46940,46941,46942,46943,46944,46945,46946,46947,46948,46949,46950,46951,46952,46953,46954,46955,46956,46957,46958,46959,46960,46961,46962,46963,46964,46965,46966,46967,46968,46969,46970,46971,46972,46973,46974,46975,46976,46977,46978,46979,46980,46981,46982,46983,46984,46985,46986,46987,46988,46989,46990,46991,46992,46993,46994,46995,46996,46997,46998,46999,47000,47001,47002,47003,47004,47005,47006,47007,47008,47009,47010,47011,47012,47013,47014,47015,47016,47017,47018,47019,47020,47021,47022,47023,47024,47025,47026,47027,47028,47029,47030,47031,47032,47033,47034,47035,47036,47037,47038,47039,47040,47041,47042,47043,47044,47045,47046,47047,47048,47049,47050,47051,47052,47053,47054,47055,47056,47057,47058,47059,47060,47061,47062,47063,47064,47065,47066,47067,47068,47069,47070,47071,47072,47073,47074,47075,47076,47077,47078,47079,47080,47081,47082,47083,47084,47085,47086,47087,47088,47089,47090,47091,47092,47093,47094,47095,47096,47097,47098,47099,47100,47101,47102,47103,47104,47105,47106,47107,47108,47109,47110,47111,47112,47113,47114,47115,47116,47117,47118,47119,47120,47121,47122,47123,47124,47125,47126,47127,47128,47129,47130,47131,47132,47133,47134,47135,47136,47137,47138,47139,47140,47141,47142,47143,47144,47145,47146,47147,47148,47149,47150,47151,47152,47153,47154,47155,47156,47157,47158,47159,47160,47161,47162,47163,47164,47165,47166,47167,47168,47169,47170,47171,47172,47173,47174,47175,47176,47177,47178,47179,47180,47181,47182,47183,47184,47185,47186,47187,47188,47189,47190,47191,47192,47193,47194,47195,47196,47197,47198,47199,47200,47201,47202,47203,47204,47205,47206,47207,47208,47209,47210,47211,47212,47213,47214,47215,47216,47217,47218,47219,47220,47221,47222,47223,47224,47225,47226,47227,47228,47229,47230,47231,47232,47233,47234,47235,47236,47237,47238,47239,47240,47241,47242,47243,47244,47245,47246,47247,47248,47249,47250,47251,47252,47253,47254,47255,47256,47257,47258,47259,47260,47261,47262,47263,47264,47265,47266,47267,47268,47269,47270,47271,47272,47273,47274,47275,47276,47277,47278,47279,47280,47281,47282,47283,47284,47285,47286,47287,47288,47289,47290,47291,47292,47293,47294,47295,47296,47297,47298,47299,47300,47301,47302,47303,47304,47305,47306,47307,47308,47309,47310,47311,47312,47313,47314,47315,47316,47317,47318,47319,47320,47321,47322,47323,47324,47325,47326,47327,47328,47329,47330,47331,47332,47333,47334,47335,47336,47337,47338,47339,47340,47341,47342,47343,47344,47345,47346,47347,47348,47349,47350,47351,47352,47353,47354,47355,47356,47357,47358,47359,47360,47361,47362,47363,47364,47365,47366,47367,47368,47369,47370,47371,47372,47373,47374,47375,47376,47377,47378,47379,47380,47381,47382,47383,47384,47385,47386,47387,47388,47389,47390,47391,47392,47393,47394,47395,47396,47397,47398,47399,47400,47401,47402,47403,47404,47405,47406,47407,47408,47409,47410,47411,47412,47413,47414,47415,47416,47417,47418,47419,47420,47421,47422,47423,47424,47425,47426,47427,47428,47429,47430,47431,47432,47433,47434,47435,47436,47437,47438,47439,47440,47441,47442,47443,47444,47445,47446,47447,47448,47449,47450,47451,47452,47453,47454,47455,47456,47457,47458,47459,47460,47461,47462,47463,47464,47465,47466,47467,47468,47469,47470,47471,47472,47473,47474,47475,47476,47477,47478,47479,47480,47481,47482,47483,47484,47485,47486,47487,47488,47489,47490,47491,47492,47493,47494,47495,47496,47497,47498,47499,47500,47501,47502,47503,47504,47505,47506,47507,47508,47509,47510,47511,47512,47513,47514,47515,47516,47517,47518,47519,47520,47521,47522,47523,47524,47525,47526,47527,47528,47529,47530,47531,47532,47533,47534,47535,47536,47537,47538,47539,47540,47541,47542,47543,47544,47545,47546,47547,47548,47549,47550,47551,47552,47553,47554,47555,47556,47557,47558,47559,47560,47561,47562,47563,47564,47565,47566,47567,47568,47569,47570,47571,47572,47573,47574,47575,47576,47577,47578,47579,47580,47581,47582,47583,47584,47585,47586,47587,47588,47589,47590,47591,47592,47593,47594,47595,47596,47597,47598,47599,47600,47601,47602,47603,47604,47605,47606,47607,47608,47609,47610,47611,47612,47613,47614,47615,47616,47617,47618,47619,47620,47621,47622,47623,47624,47625,47626,47627,47628,47629,47630,47631,47632,47633,47634,47635,47636,47637,47638,47639,47640,47641,47642,47643,47644,47645,47646,47647,47648,47649,47650,47651,47652,47653,47654,47655,47656,47657,47658,47659,47660,47661,47662,47663,47664,47665,47666,47667,47668,47669,47670,47671,47672,47673,47674,47675,47676,47677,47678,47679,47680,47681,47682,47683,47684,47685,47686,47687,47688,47689,47690,47691,47692,47693,47694,47695,47696,47697,47698,47699,47700,47701,47702,47703,47704,47705,47706,47707,47708,47709,47710,47711,47712,47713,47714,47715,47716,47717,47718,47719,47720,47721,47722,47723,47724,47725,47726,47727,47728,47729,47730,47731,47732,47733,47734,47735,47736,47737,47738,47739,47740,47741,47742,47743,47744,47745,47746,47747,47748,47749,47750,47751,47752,47753,47754,47755,47756,47757,47758,47759,47760,47761,47762,47763,47764,47765,47766,47767,47768,47769,47770,47771,47772,47773,47774,47775,47776,47777,47778,47779,47780,47781,47782,47783,47784,47785,47786,47787,47788,47789,47790,47791,47792,47793,47794,47795,47796,47797,47798,47799,47800,47801,47802,47803,47804,47805,47806,47807,47808,47809,47810,47811,47812,47813,47814,47815,47816,47817,47818,47819,47820,47821,47822,47823,47824,47825,47826,47827,47828,47829,47830,47831,47832,47833,47834,47835,47836,47837,47838,47839,47840,47841,47842,47843,47844,47845,47846,47847,47848,47849,47850,47851,47852,47853,47854,47855,47856,47857,47858,47859,47860,47861,47862,47863,47864,47865,47866,47867,47868,47869,47870,47871,47872,47873,47874,47875,47876,47877,47878,47879,47880,47881,47882,47883,47884,47885,47886,47887,47888,47889,47890,47891,47892,47893,47894,47895,47896,47897,47898,47899,47900,47901,47902,47903,47904,47905,47906,47907,47908,47909,47910,47911,47912,47913,47914,47915,47916,47917,47918,47919,47920,47921,47922,47923,47924,47925,47926,47927,47928,47929,47930,47931,47932,47933,47934,47935,47936,47937,47938,47939,47940,47941,47942,47943,47944,47945,47946,47947,47948,47949,47950,47951,47952,47953,47954,47955,47956,47957,47958,47959,47960,47961,47962,47963,47964,47965,47966,47967,47968,47969,47970,47971,47972,47973,47974,47975,47976,47977,47978,47979,47980,47981,47982,47983,47984,47985,47986,47987,47988,47989,47990,47991,47992,47993,47994,47995,47996,47997,47998,47999,48000,48001,48002,48003,48004,48005,48006,48007,48008,48009,48010,48011,48012,48013,48014,48015,48016,48017,48018,48019,48020,48021,48022,48023,48024,48025,48026,48027,48028,48029,48030,48031,48032,48033,48034,48035,48036,48037,48038,48039,48040,48041,48042,48043,48044,48045,48046,48047,48048,48049,48050,48051,48052,48053,48054,48055,48056,48057,48058,48059,48060,48061,48062,48063,48064,48065,48066,48067,48068,48069,48070,48071,48072,48073,48074,48075,48076,48077,48078,48079,48080,48081,48082,48083,48084,48085,48086,48087,48088,48089,48090,48091,48092,48093,48094,48095,48096,48097,48098,48099,48100,48101,48102,48103,48104,48105,48106,48107,48108,48109,48110,48111,48112,48113,48114,48115,48116,48117,48118,48119,48120,48121,48122,48123,48124,48125,48126,48127,48128,48129,48130,48131,48132,48133,48134,48135,48136,48137,48138,48139,48140,48141,48142,48143,48144,48145,48146,48147,48148,48149,48150,48151,48152,48153,48154,48155,48156,48157,48158,48159,48160,48161,48162,48163,48164,48165,48166,48167,48168,48169,48170,48171,48172,48173,48174,48175,48176,48177,48178,48179,48180,48181,48182,48183,48184,48185,48186,48187,48188,48189,48190,48191,48192,48193,48194,48195,48196,48197,48198,48199,48200,48201,48202,48203,48204,48205,48206,48207,48208,48209,48210,48211,48212,48213,48214,48215,48216,48217,48218,48219,48220,48221,48222,48223,48224,48225,48226,48227,48228,48229,48230,48231,48232,48233,48234,48235,48236,48237,48238,48239,48240,48241,48242,48243,48244,48245,48246,48247,48248,48249,48250,48251,48252,48253,48254,48255,48256,48257,48258,48259,48260,48261,48262,48263,48264,48265,48266,48267,48268,48269,48270,48271,48272,48273,48274,48275,48276,48277,48278,48279,48280,48281,48282,48283,48284,48285,48286,48287,48288,48289,48290,48291,48292,48293,48294,48295,48296,48297,48298,48299,48300,48301,48302,48303,48304,48305,48306,48307,48308,48309,48310,48311,48312,48313,48314,48315,48316,48317,48318,48319,48320,48321,48322,48323,48324,48325,48326,48327,48328,48329,48330,48331,48332,48333,48334,48335,48336,48337,48338,48339,48340,48341,48342,48343,48344,48345,48346,48347,48348,48349,48350,48351,48352,48353,48354,48355,48356,48357,48358,48359,48360,48361,48362,48363,48364,48365,48366,48367,48368,48369,48370,48371,48372,48373,48374,48375,48376,48377,48378,48379,48380,48381,48382,48383,48384,48385,48386,48387,48388,48389,48390,48391,48392,48393,48394,48395,48396,48397,48398,48399,48400,48401,48402,48403,48404,48405,48406,48407,48408,48409,48410,48411,48412,48413,48414,48415,48416,48417,48418,48419,48420,48421,48422,48423,48424,48425,48426,48427,48428,48429,48430,48431,48432,48433,48434,48435,48436,48437,48438,48439,48440,48441,48442,48443,48444,48445,48446,48447,48448,48449,48450,48451,48452,48453,48454,48455,48456,48457,48458,48459,48460,48461,48462,48463,48464,48465,48466,48467,48468,48469,48470,48471,48472,48473,48474,48475,48476,48477,48478,48479,48480,48481,48482,48483,48484,48485,48486,48487,48488,48489,48490,48491,48492,48493,48494,48495,48496,48497,48498,48499,48500,48501,48502,48503,48504,48505,48506,48507,48508,48509,48510,48511,48512,48513,48514,48515,48516,48517,48518,48519,48520,48521,48522,48523,48524,48525,48526,48527,48528,48529,48530,48531,48532,48533,48534,48535,48536,48537,48538,48539,48540,48541,48542,48543,48544,48545,48546,48547,48548,48549,48550,48551,48552,48553,48554,48555,48556,48557,48558,48559,48560,48561,48562,48563,48564,48565,48566,48567,48568,48569,48570,48571,48572,48573,48574,48575,48576,48577,48578,48579,48580,48581,48582,48583,48584,48585,48586,48587,48588,48589,48590,48591,48592,48593,48594,48595,48596,48597,48598,48599,48600,48601,48602,48603,48604,48605,48606,48607,48608,48609,48610,48611,48612,48613,48614,48615,48616,48617,48618,48619,48620,48621,48622,48623,48624,48625,48626,48627,48628,48629,48630,48631,48632,48633,48634,48635,48636,48637,48638,48639,48640,48641,48642,48643,48644,48645,48646,48647,48648,48649,48650,48651,48652,48653,48654,48655,48656,48657,48658,48659,48660,48661,48662,48663,48664,48665,48666,48667,48668,48669,48670,48671,48672,48673,48674,48675,48676,48677,48678,48679,48680,48681,48682,48683,48684,48685,48686,48687,48688,48689,48690,48691,48692,48693,48694,48695,48696,48697,48698,48699,48700,48701,48702,48703,48704,48705,48706,48707,48708,48709,48710,48711,48712,48713,48714,48715,48716,48717,48718,48719,48720,48721,48722,48723,48724,48725,48726,48727,48728,48729,48730,48731,48732,48733,48734,48735,48736,48737,48738,48739,48740,48741,48742,48743,48744,48745,48746,48747,48748,48749,48750,48751,48752,48753,48754,48755,48756,48757,48758,48759,48760,48761,48762,48763,48764,48765,48766,48767,48768,48769,48770,48771,48772,48773,48774,48775,48776,48777,48778,48779,48780,48781,48782,48783,48784,48785,48786,48787,48788,48789,48790,48791,48792,48793,48794,48795,48796,48797,48798,48799,48800,48801,48802,48803,48804,48805,48806,48807,48808,48809,48810,48811,48812,48813,48814,48815,48816,48817,48818,48819,48820,48821,48822,48823,48824,48825,48826,48827,48828,48829,48830,48831,48832,48833,48834,48835,48836,48837,48838,48839,48840,48841,48842,48843,48844,48845,48846,48847,48848,48849,48850,48851,48852,48853,48854,48855,48856,48857,48858,48859,48860,48861,48862,48863,48864,48865,48866,48867,48868,48869,48870,48871,48872,48873,48874,48875,48876,48877,48878,48879,48880,48881,48882,48883,48884,48885,48886,48887,48888,48889,48890,48891,48892,48893,48894,48895,48896,48897,48898,48899,48900,48901,48902,48903,48904,48905,48906,48907,48908,48909,48910,48911,48912,48913,48914,48915,48916,48917,48918,48919,48920,48921,48922,48923,48924,48925,48926,48927,48928,48929,48930,48931,48932,48933,48934,48935,48936,48937,48938,48939,48940,48941,48942,48943,48944,48945,48946,48947,48948,48949,48950,48951,48952,48953,48954,48955,48956,48957,48958,48959,48960,48961,48962,48963,48964,48965,48966,48967,48968,48969,48970,48971,48972,48973,48974,48975,48976,48977,48978,48979,48980,48981,48982,48983,48984,48985,48986,48987,48988,48989,48990,48991,48992,48993,48994,48995,48996,48997,48998,48999,49000,49001,49002,49003,49004,49005,49006,49007,49008,49009,49010,49011,49012,49013,49014,49015,49016,49017,49018,49019,49020,49021,49022,49023,49024,49025,49026,49027,49028,49029,49030,49031,49032,49033,49034,49035,49036,49037,49038,49039,49040,49041,49042,49043,49044,49045,49046,49047,49048,49049,49050,49051,49052,49053,49054,49055,49056,49057,49058,49059,49060,49061,49062,49063,49064,49065,49066,49067,49068,49069,49070,49071,49072,49073,49074,49075,49076,49077,49078,49079,49080,49081,49082,49083,49084,49085,49086,49087,49088,49089,49090,49091,49092,49093,49094,49095,49096,49097,49098,49099,49100,49101,49102,49103,49104,49105,49106,49107,49108,49109,49110,49111,49112,49113,49114,49115,49116,49117,49118,49119,49120,49121,49122,49123,49124,49125,49126,49127,49128,49129,49130,49131,49132,49133,49134,49135,49136,49137,49138,49139,49140,49141,49142,49143,49144,49145,49146,49147,49148,49149,49150,49151,49152,49153,49154,49155,49156,49157,49158,49159,49160,49161,49162,49163,49164,49165,49166,49167,49168,49169,49170,49171,49172,49173,49174,49175,49176,49177,49178,49179,49180,49181,49182,49183,49184,49185,49186,49187,49188,49189,49190,49191,49192,49193,49194,49195,49196,49197,49198,49199,49200,49201,49202,49203,49204,49205,49206,49207,49208,49209,49210,49211,49212,49213,49214,49215,49216,49217,49218,49219,49220,49221,49222,49223,49224,49225,49226,49227,49228,49229,49230,49231,49232,49233,49234,49235,49236,49237,49238,49239,49240,49241,49242,49243,49244,49245,49246,49247,49248,49249,49250,49251,49252,49253,49254,49255,49256,49257,49258,49259,49260,49261,49262,49263,49264,49265,49266,49267,49268,49269,49270,49271,49272,49273,49274,49275,49276,49277,49278,49279,49280,49281,49282,49283,49284,49285,49286,49287,49288,49289,49290,49291,49292,49293,49294,49295,49296,49297,49298,49299,49300,49301,49302,49303,49304,49305,49306,49307,49308,49309,49310,49311,49312,49313,49314,49315,49316,49317,49318,49319,49320,49321,49322,49323,49324,49325,49326,49327,49328,49329,49330,49331,49332,49333,49334,49335,49336,49337,49338,49339,49340,49341,49342,49343,49344,49345,49346,49347,49348,49349,49350,49351,49352,49353,49354,49355,49356,49357,49358,49359,49360,49361,49362,49363,49364,49365,49366,49367,49368,49369,49370,49371,49372,49373,49374,49375,49376,49377,49378,49379,49380,49381,49382,49383,49384,49385,49386,49387,49388,49389,49390,49391,49392,49393,49394,49395,49396,49397,49398,49399,49400,49401,49402,49403,49404,49405,49406,49407,49408,49409,49410,49411,49412,49413,49414,49415,49416,49417,49418,49419,49420,49421,49422,49423,49424,49425,49426,49427,49428,49429,49430,49431,49432,49433,49434,49435,49436,49437,49438,49439,49440,49441,49442,49443,49444,49445,49446,49447,49448,49449,49450,49451,49452,49453,49454,49455,49456,49457,49458,49459,49460,49461,49462,49463,49464,49465,49466,49467,49468,49469,49470,49471,49472,49473,49474,49475,49476,49477,49478,49479,49480,49481,49482,49483,49484,49485,49486,49487,49488,49489,49490,49491,49492,49493,49494,49495,49496,49497,49498,49499,49500,49501,49502,49503,49504,49505,49506,49507,49508,49509,49510,49511,49512,49513,49514,49515,49516,49517,49518,49519,49520,49521,49522,49523,49524,49525,49526,49527,49528,49529,49530,49531,49532,49533,49534,49535,49536,49537,49538,49539,49540,49541,49542,49543,49544,49545,49546,49547,49548,49549,49550,49551,49552,49553,49554,49555,49556,49557,49558,49559,49560,49561,49562,49563,49564,49565,49566,49567,49568,49569,49570,49571,49572,49573,49574,49575,49576,49577,49578,49579,49580,49581,49582,49583,49584,49585,49586,49587,49588,49589,49590,49591,49592,49593,49594,49595,49596,49597,49598,49599,49600,49601,49602,49603,49604,49605,49606,49607,49608,49609,49610,49611,49612,49613,49614,49615,49616,49617,49618,49619,49620,49621,49622,49623,49624,49625,49626,49627,49628,49629,49630,49631,49632,49633,49634,49635,49636,49637,49638,49639,49640,49641,49642,49643,49644,49645,49646,49647,49648,49649,49650,49651,49652,49653,49654,49655,49656,49657,49658,49659,49660,49661,49662,49663,49664,49665,49666,49667,49668,49669,49670,49671,49672,49673,49674,49675,49676,49677,49678,49679,49680,49681,49682,49683,49684,49685,49686,49687,49688,49689,49690,49691,49692,49693,49694,49695,49696,49697,49698,49699,49700,49701,49702,49703,49704,49705,49706,49707,49708,49709,49710,49711,49712,49713,49714,49715,49716,49717,49718,49719,49720,49721,49722,49723,49724,49725,49726,49727,49728,49729,49730,49731,49732,49733,49734,49735,49736,49737,49738,49739,49740,49741,49742,49743,49744,49745,49746,49747,49748,49749,49750,49751,49752,49753,49754,49755,49756,49757,49758,49759,49760,49761,49762,49763,49764,49765,49766,49767,49768,49769,49770,49771,49772,49773,49774,49775,49776,49777,49778,49779,49780,49781,49782,49783,49784,49785,49786,49787,49788,49789,49790,49791,49792,49793,49794,49795,49796,49797,49798,49799,49800,49801,49802,49803,49804,49805,49806,49807,49808,49809,49810,49811,49812,49813,49814,49815,49816,49817,49818,49819,49820,49821,49822,49823,49824,49825,49826,49827,49828,49829,49830,49831,49832,49833,49834,49835,49836,49837,49838,49839,49840,49841,49842,49843,49844,49845,49846,49847,49848,49849,49850,49851,49852,49853,49854,49855,49856,49857,49858,49859,49860,49861,49862,49863,49864,49865,49866,49867,49868,49869,49870,49871,49872,49873,49874,49875,49876,49877,49878,49879,49880,49881,49882,49883,49884,49885,49886,49887,49888,49889,49890,49891,49892,49893,49894,49895,49896,49897,49898,49899,49900,49901,49902,49903,49904,49905,49906,49907,49908,49909,49910,49911,49912,49913,49914,49915,49916,49917,49918,49919,49920,49921,49922,49923,49924,49925,49926,49927,49928,49929,49930,49931,49932,49933,49934,49935,49936,49937,49938,49939,49940,49941,49942,49943,49944,49945,49946,49947,49948,49949,49950,49951,49952,49953,49954,49955,49956,49957,49958,49959,49960,49961,49962,49963,49964,49965,49966,49967,49968,49969,49970,49971,49972,49973,49974,49975,49976,49977,49978,49979,49980,49981,49982,49983,49984,49985,49986,49987,49988,49989,49990,49991,49992,49993,49994,49995,49996,49997,49998,49999,50000,50001,50002,50003,50004,50005,50006,50007,50008,50009,50010,50011,50012,50013,50014,50015,50016,50017,50018,50019,50020,50021,50022,50023,50024,50025,50026,50027,50028,50029,50030,50031,50032,50033,50034,50035,50036,50037,50038,50039,50040,50041,50042,50043,50044,50045,50046,50047,50048,50049,50050,50051,50052,50053,50054,50055,50056,50057,50058,50059,50060,50061,50062,50063,50064,50065,50066,50067,50068,50069,50070,50071,50072,50073,50074,50075,50076,50077,50078,50079,50080,50081,50082,50083,50084,50085,50086,50087,50088,50089,50090,50091,50092,50093,50094,50095,50096,50097,50098,50099,50100,50101,50102,50103,50104,50105,50106,50107,50108,50109,50110,50111,50112,50113,50114,50115,50116,50117,50118,50119,50120,50121,50122,50123,50124,50125,50126,50127,50128,50129,50130,50131,50132,50133,50134,50135,50136,50137,50138,50139,50140,50141,50142,50143,50144,50145,50146,50147,50148,50149,50150,50151,50152,50153,50154,50155,50156,50157,50158,50159,50160,50161,50162,50163,50164,50165,50166,50167,50168,50169,50170,50171,50172,50173,50174,50175,50176,50177,50178,50179,50180,50181,50182,50183,50184,50185,50186,50187,50188,50189,50190,50191,50192,50193,50194,50195,50196,50197,50198,50199,50200,50201,50202,50203,50204,50205,50206,50207,50208,50209,50210,50211,50212,50213,50214,50215,50216,50217,50218,50219,50220,50221,50222,50223,50224,50225,50226,50227,50228,50229,50230,50231,50232,50233,50234,50235,50236,50237,50238,50239,50240,50241,50242,50243,50244,50245,50246,50247,50248,50249,50250,50251,50252,50253,50254,50255,50256,50257,50258,50259,50260,50261,50262,50263,50264,50265,50266,50267,50268,50269,50270,50271,50272,50273,50274,50275,50276,50277,50278,50279,50280,50281,50282,50283,50284,50285,50286,50287,50288,50289,50290,50291,50292,50293,50294,50295,50296,50297,50298,50299,50300,50301,50302,50303,50304,50305,50306,50307,50308,50309,50310,50311,50312,50313,50314,50315,50316,50317,50318,50319,50320,50321,50322,50323,50324,50325,50326,50327,50328,50329,50330,50331,50332,50333,50334,50335,50336,50337,50338,50339,50340,50341,50342,50343,50344,50345,50346,50347,50348,50349,50350,50351,50352,50353,50354,50355,50356,50357,50358,50359,50360,50361,50362,50363,50364,50365,50366,50367,50368,50369,50370,50371,50372,50373,50374,50375,50376,50377,50378,50379,50380,50381,50382,50383,50384,50385,50386,50387,50388,50389,50390,50391,50392,50393,50394,50395,50396,50397,50398,50399,50400,50401,50402,50403,50404,50405,50406,50407,50408,50409,50410,50411,50412,50413,50414,50415,50416,50417,50418,50419,50420,50421,50422,50423,50424,50425,50426,50427,50428,50429,50430,50431,50432,50433,50434,50435,50436,50437,50438,50439,50440,50441,50442,50443,50444,50445,50446,50447,50448,50449,50450,50451,50452,50453,50454,50455,50456,50457,50458,50459,50460,50461,50462,50463,50464,50465,50466,50467,50468,50469,50470,50471,50472,50473,50474,50475,50476,50477,50478,50479,50480,50481,50482,50483,50484,50485,50486,50487,50488,50489,50490,50491,50492,50493,50494,50495,50496,50497,50498,50499,50500,50501,50502,50503,50504,50505,50506,50507,50508,50509,50510,50511,50512,50513,50514,50515,50516,50517,50518,50519,50520,50521,50522,50523,50524,50525,50526,50527,50528,50529,50530,50531,50532,50533,50534,50535,50536,50537,50538,50539,50540,50541,50542,50543,50544,50545,50546,50547,50548,50549,50550,50551,50552,50553,50554,50555,50556,50557,50558,50559,50560,50561,50562,50563,50564,50565,50566,50567,50568,50569,50570,50571,50572,50573,50574,50575,50576,50577,50578,50579,50580,50581,50582,50583,50584,50585,50586,50587,50588,50589,50590,50591,50592,50593,50594,50595,50596,50597,50598,50599,50600,50601,50602,50603,50604,50605,50606,50607,50608,50609,50610,50611,50612,50613,50614,50615,50616,50617,50618,50619,50620,50621,50622,50623,50624,50625,50626,50627,50628,50629,50630,50631,50632,50633,50634,50635,50636,50637,50638,50639,50640,50641,50642,50643,50644,50645,50646,50647,50648,50649,50650,50651,50652,50653,50654,50655,50656,50657,50658,50659,50660,50661,50662,50663,50664,50665,50666,50667,50668,50669,50670,50671,50672,50673,50674,50675,50676,50677,50678,50679,50680,50681,50682,50683,50684,50685,50686,50687,50688,50689,50690,50691,50692,50693,50694,50695,50696,50697,50698,50699,50700,50701,50702,50703,50704,50705,50706,50707,50708,50709,50710,50711,50712,50713,50714,50715,50716,50717,50718,50719,50720,50721,50722,50723,50724,50725,50726,50727,50728,50729,50730,50731,50732,50733,50734,50735,50736,50737,50738,50739,50740,50741,50742,50743,50744,50745,50746,50747,50748,50749,50750,50751,50752,50753,50754,50755,50756,50757,50758,50759,50760,50761,50762,50763,50764,50765,50766,50767,50768,50769,50770,50771,50772,50773,50774,50775,50776,50777,50778,50779,50780,50781,50782,50783,50784,50785,50786,50787,50788,50789,50790,50791,50792,50793,50794,50795,50796,50797,50798,50799,50800,50801,50802,50803,50804,50805,50806,50807,50808,50809,50810,50811,50812,50813,50814,50815,50816,50817,50818,50819,50820,50821,50822,50823,50824,50825,50826,50827,50828,50829,50830,50831,50832,50833,50834,50835,50836,50837,50838,50839,50840,50841,50842,50843,50844,50845,50846,50847,50848,50849,50850,50851,50852,50853,50854,50855,50856,50857,50858,50859,50860,50861,50862,50863,50864,50865,50866,50867,50868,50869,50870,50871,50872,50873,50874,50875,50876,50877,50878,50879,50880,50881,50882,50883,50884,50885,50886,50887,50888,50889,50890,50891,50892,50893,50894,50895,50896,50897,50898,50899,50900,50901,50902,50903,50904,50905,50906,50907,50908,50909,50910,50911,50912,50913,50914,50915,50916,50917,50918,50919,50920,50921,50922,50923,50924,50925,50926,50927,50928,50929,50930,50931,50932,50933,50934,50935,50936,50937,50938,50939,50940,50941,50942,50943,50944,50945,50946,50947,50948,50949,50950,50951,50952,50953,50954,50955,50956,50957,50958,50959,50960,50961,50962,50963,50964,50965,50966,50967,50968,50969,50970,50971,50972,50973,50974,50975,50976,50977,50978,50979,50980,50981,50982,50983,50984,50985,50986,50987,50988,50989,50990,50991,50992,50993,50994,50995,50996,50997,50998,50999,51000,51001,51002,51003,51004,51005,51006,51007,51008,51009,51010,51011,51012,51013,51014,51015,51016,51017,51018,51019,51020,51021,51022,51023,51024,51025,51026,51027,51028,51029,51030,51031,51032,51033,51034,51035,51036,51037,51038,51039,51040,51041,51042,51043,51044,51045,51046,51047,51048,51049,51050,51051,51052,51053,51054,51055,51056,51057,51058,51059,51060,51061,51062,51063,51064,51065,51066,51067,51068,51069,51070,51071,51072,51073,51074,51075,51076,51077,51078,51079,51080,51081,51082,51083,51084,51085,51086,51087,51088,51089,51090,51091,51092,51093,51094,51095,51096,51097,51098,51099,51100,51101,51102,51103,51104,51105,51106,51107,51108,51109,51110,51111,51112,51113,51114,51115,51116,51117,51118,51119,51120,51121,51122,51123,51124,51125,51126,51127,51128,51129,51130,51131,51132,51133,51134,51135,51136,51137,51138,51139,51140,51141,51142,51143,51144,51145,51146,51147,51148,51149,51150,51151,51152,51153,51154,51155,51156,51157,51158,51159,51160,51161,51162,51163,51164,51165,51166,51167,51168,51169,51170,51171,51172,51173,51174,51175,51176,51177,51178,51179,51180,51181,51182,51183,51184,51185,51186,51187,51188,51189,51190,51191,51192,51193,51194,51195,51196,51197,51198,51199,51200,51201,51202,51203,51204,51205,51206,51207,51208,51209,51210,51211,51212,51213,51214,51215,51216,51217,51218,51219,51220,51221,51222,51223,51224,51225,51226,51227,51228,51229,51230,51231,51232,51233,51234,51235,51236,51237,51238,51239,51240,51241,51242,51243,51244,51245,51246,51247,51248,51249,51250,51251,51252,51253,51254,51255,51256,51257,51258,51259,51260,51261,51262,51263,51264,51265,51266,51267,51268,51269,51270,51271,51272,51273,51274,51275,51276,51277,51278,51279,51280,51281,51282,51283,51284,51285,51286,51287,51288,51289,51290,51291,51292,51293,51294,51295,51296,51297,51298,51299,51300,51301,51302,51303,51304,51305,51306,51307,51308,51309,51310,51311,51312,51313,51314,51315,51316,51317,51318,51319,51320,51321,51322,51323,51324,51325,51326,51327,51328,51329,51330,51331,51332,51333,51334,51335,51336,51337,51338,51339,51340,51341,51342,51343,51344,51345,51346,51347,51348,51349,51350,51351,51352,51353,51354,51355,51356,51357,51358,51359,51360,51361,51362,51363,51364,51365,51366,51367,51368,51369,51370,51371,51372,51373,51374,51375,51376,51377,51378,51379,51380,51381,51382,51383,51384,51385,51386,51387,51388,51389,51390,51391,51392,51393,51394,51395,51396,51397,51398,51399,51400,51401,51402,51403,51404,51405,51406,51407,51408,51409,51410,51411,51412,51413,51414,51415,51416,51417,51418,51419,51420,51421,51422,51423,51424,51425,51426,51427,51428,51429,51430,51431,51432,51433,51434,51435,51436,51437,51438,51439,51440,51441,51442,51443,51444,51445,51446,51447,51448,51449,51450,51451,51452,51453,51454,51455,51456,51457,51458,51459,51460,51461,51462,51463,51464,51465,51466,51467,51468,51469,51470,51471,51472,51473,51474,51475,51476,51477,51478,51479,51480,51481,51482,51483,51484,51485,51486,51487,51488,51489,51490,51491,51492,51493,51494,51495,51496,51497,51498,51499,51500,51501,51502,51503,51504,51505,51506,51507,51508,51509,51510,51511,51512,51513,51514,51515,51516,51517,51518,51519,51520,51521,51522,51523,51524,51525,51526,51527,51528,51529,51530,51531,51532,51533,51534,51535,51536,51537,51538,51539,51540,51541,51542,51543,51544,51545,51546,51547,51548,51549,51550,51551,51552,51553,51554,51555,51556,51557,51558,51559,51560,51561,51562,51563,51564,51565,51566,51567,51568,51569,51570,51571,51572,51573,51574,51575,51576,51577,51578,51579,51580,51581,51582,51583,51584,51585,51586,51587,51588,51589,51590,51591,51592,51593,51594,51595,51596,51597,51598,51599,51600,51601,51602,51603,51604,51605,51606,51607,51608,51609,51610,51611,51612,51613,51614,51615,51616,51617,51618,51619,51620,51621,51622,51623,51624,51625,51626,51627,51628,51629,51630,51631,51632,51633,51634,51635,51636,51637,51638,51639,51640,51641,51642,51643,51644,51645,51646,51647,51648,51649,51650,51651,51652,51653,51654,51655,51656,51657,51658,51659,51660,51661,51662,51663,51664,51665,51666,51667,51668,51669,51670,51671,51672,51673,51674,51675,51676,51677,51678,51679,51680,51681,51682,51683,51684,51685,51686,51687,51688,51689,51690,51691,51692,51693,51694,51695,51696,51697,51698,51699,51700,51701,51702,51703,51704,51705,51706,51707,51708,51709,51710,51711,51712,51713,51714,51715,51716,51717,51718,51719,51720,51721,51722,51723,51724,51725,51726,51727,51728,51729,51730,51731,51732,51733,51734,51735,51736,51737,51738,51739,51740,51741,51742,51743,51744,51745,51746,51747,51748,51749,51750,51751,51752,51753,51754,51755,51756,51757,51758,51759,51760,51761,51762,51763,51764,51765,51766,51767,51768,51769,51770,51771,51772,51773,51774,51775,51776,51777,51778,51779,51780,51781,51782,51783,51784,51785,51786,51787,51788,51789,51790,51791,51792,51793,51794,51795,51796,51797,51798,51799,51800,51801,51802,51803,51804,51805,51806,51807,51808,51809,51810,51811,51812,51813,51814,51815,51816,51817,51818,51819,51820,51821,51822,51823,51824,51825,51826,51827,51828,51829,51830,51831,51832,51833,51834,51835,51836,51837,51838,51839,51840,51841,51842,51843,51844,51845,51846,51847,51848,51849,51850,51851,51852,51853,51854,51855,51856,51857,51858,51859,51860,51861,51862,51863,51864,51865,51866,51867,51868,51869,51870,51871,51872,51873,51874,51875,51876,51877,51878,51879,51880,51881,51882,51883,51884,51885,51886,51887,51888,51889,51890,51891,51892,51893,51894,51895,51896,51897,51898,51899,51900,51901,51902,51903,51904,51905,51906,51907,51908,51909,51910,51911,51912,51913,51914,51915,51916,51917,51918,51919,51920,51921,51922,51923,51924,51925,51926,51927,51928,51929,51930,51931,51932,51933,51934,51935,51936,51937,51938,51939,51940,51941,51942,51943,51944,51945,51946,51947,51948,51949,51950,51951,51952,51953,51954,51955,51956,51957,51958,51959,51960,51961,51962,51963,51964,51965,51966,51967,51968,51969,51970,51971,51972,51973,51974,51975,51976,51977,51978,51979,51980,51981,51982,51983,51984,51985,51986,51987,51988,51989,51990,51991,51992,51993,51994,51995,51996,51997,51998,51999,52000,52001,52002,52003,52004,52005,52006,52007,52008,52009,52010,52011,52012,52013,52014,52015,52016,52017,52018,52019,52020,52021,52022,52023,52024,52025,52026,52027,52028,52029,52030,52031,52032,52033,52034,52035,52036,52037,52038,52039,52040,52041,52042,52043,52044,52045,52046,52047,52048,52049,52050,52051,52052,52053,52054,52055,52056,52057,52058,52059,52060,52061,52062,52063,52064,52065,52066,52067,52068,52069,52070,52071,52072,52073,52074,52075,52076,52077,52078,52079,52080,52081,52082,52083,52084,52085,52086,52087,52088,52089,52090,52091,52092,52093,52094,52095,52096,52097,52098,52099,52100,52101,52102,52103,52104,52105,52106,52107,52108,52109,52110,52111,52112,52113,52114,52115,52116,52117,52118,52119,52120,52121,52122,52123,52124,52125,52126,52127,52128,52129,52130,52131,52132,52133,52134,52135,52136,52137,52138,52139,52140,52141,52142,52143,52144,52145,52146,52147,52148,52149,52150,52151,52152,52153,52154,52155,52156,52157,52158,52159,52160,52161,52162,52163,52164,52165,52166,52167,52168,52169,52170,52171,52172,52173,52174,52175,52176,52177,52178,52179,52180,52181,52182,52183,52184,52185,52186,52187,52188,52189,52190,52191,52192,52193,52194,52195,52196,52197,52198,52199,52200,52201,52202,52203,52204,52205,52206,52207,52208,52209,52210,52211,52212,52213,52214,52215,52216,52217,52218,52219,52220,52221,52222,52223,52224,52225,52226,52227,52228,52229,52230,52231,52232,52233,52234,52235,52236,52237,52238,52239,52240,52241,52242,52243,52244,52245,52246,52247,52248,52249,52250,52251,52252,52253,52254,52255,52256,52257,52258,52259,52260,52261,52262,52263,52264,52265,52266,52267,52268,52269,52270,52271,52272,52273,52274,52275,52276,52277,52278,52279,52280,52281,52282,52283,52284,52285,52286,52287,52288,52289,52290,52291,52292,52293,52294,52295,52296,52297,52298,52299,52300,52301,52302,52303,52304,52305,52306,52307,52308,52309,52310,52311,52312,52313,52314,52315,52316,52317,52318,52319,52320,52321,52322,52323,52324,52325,52326,52327,52328,52329,52330,52331,52332,52333,52334,52335,52336,52337,52338,52339,52340,52341,52342,52343,52344,52345,52346,52347,52348,52349,52350,52351,52352,52353,52354,52355,52356,52357,52358,52359,52360,52361,52362,52363,52364,52365,52366,52367,52368,52369,52370,52371,52372,52373,52374,52375,52376,52377,52378,52379,52380,52381,52382,52383,52384,52385,52386,52387,52388,52389,52390,52391,52392,52393,52394,52395,52396,52397,52398,52399,52400,52401,52402,52403,52404,52405,52406,52407,52408,52409,52410,52411,52412,52413,52414,52415,52416,52417,52418,52419,52420,52421,52422,52423,52424,52425,52426,52427,52428,52429,52430,52431,52432,52433,52434,52435,52436,52437,52438,52439,52440,52441,52442,52443,52444,52445,52446,52447,52448,52449,52450,52451,52452,52453,52454,52455,52456,52457,52458,52459,52460,52461,52462,52463,52464,52465,52466,52467,52468,52469,52470,52471,52472,52473,52474,52475,52476,52477,52478,52479,52480,52481,52482,52483,52484,52485,52486,52487,52488,52489,52490,52491,52492,52493,52494,52495,52496,52497,52498,52499,52500,52501,52502,52503,52504,52505,52506,52507,52508,52509,52510,52511,52512,52513,52514,52515,52516,52517,52518,52519,52520,52521,52522,52523,52524,52525,52526,52527,52528,52529,52530,52531,52532,52533,52534,52535,52536,52537,52538,52539,52540,52541,52542,52543,52544,52545,52546,52547,52548,52549,52550,52551,52552,52553,52554,52555,52556,52557,52558,52559,52560,52561,52562,52563,52564,52565,52566,52567,52568,52569,52570,52571,52572,52573,52574,52575,52576,52577,52578,52579,52580,52581,52582,52583,52584,52585,52586,52587,52588,52589,52590,52591,52592,52593,52594,52595,52596,52597,52598,52599,52600,52601,52602,52603,52604,52605,52606,52607,52608,52609,52610,52611,52612,52613,52614,52615,52616,52617,52618,52619,52620,52621,52622,52623,52624,52625,52626,52627,52628,52629,52630,52631,52632,52633,52634,52635,52636,52637,52638,52639,52640,52641,52642,52643,52644,52645,52646,52647,52648,52649,52650,52651,52652,52653,52654,52655,52656,52657,52658,52659,52660,52661,52662,52663,52664,52665,52666,52667,52668,52669,52670,52671,52672,52673,52674,52675,52676,52677,52678,52679,52680,52681,52682,52683,52684,52685,52686,52687,52688,52689,52690,52691,52692,52693,52694,52695,52696,52697,52698,52699,52700,52701,52702,52703,52704,52705,52706,52707,52708,52709,52710,52711,52712,52713,52714,52715,52716,52717,52718,52719,52720,52721,52722,52723,52724,52725,52726,52727,52728,52729,52730,52731,52732,52733,52734,52735,52736,52737,52738,52739,52740,52741,52742,52743,52744,52745,52746,52747,52748,52749,52750,52751,52752,52753,52754,52755,52756,52757,52758,52759,52760,52761,52762,52763,52764,52765,52766,52767,52768,52769,52770,52771,52772,52773,52774,52775,52776,52777,52778,52779,52780,52781,52782,52783,52784,52785,52786,52787,52788,52789,52790,52791,52792,52793,52794,52795,52796,52797,52798,52799,52800,52801,52802,52803,52804,52805,52806,52807,52808,52809,52810,52811,52812,52813,52814,52815,52816,52817,52818,52819,52820,52821,52822,52823,52824,52825,52826,52827,52828,52829,52830,52831,52832,52833,52834,52835,52836,52837,52838,52839,52840,52841,52842,52843,52844,52845,52846,52847,52848,52849,52850,52851,52852,52853,52854,52855,52856,52857,52858,52859,52860,52861,52862,52863,52864,52865,52866,52867,52868,52869,52870,52871,52872,52873,52874,52875,52876,52877,52878,52879,52880,52881,52882,52883,52884,52885,52886,52887,52888,52889,52890,52891,52892,52893,52894,52895,52896,52897,52898,52899,52900,52901,52902,52903,52904,52905,52906,52907,52908,52909,52910,52911,52912,52913,52914,52915,52916,52917,52918,52919,52920,52921,52922,52923,52924,52925,52926,52927,52928,52929,52930,52931,52932,52933,52934,52935,52936,52937,52938,52939,52940,52941,52942,52943,52944,52945,52946,52947,52948,52949,52950,52951,52952,52953,52954,52955,52956,52957,52958,52959,52960,52961,52962,52963,52964,52965,52966,52967,52968,52969,52970,52971,52972,52973,52974,52975,52976,52977,52978,52979,52980,52981,52982,52983,52984,52985,52986,52987,52988,52989,52990,52991,52992,52993,52994,52995,52996,52997,52998,52999,53000,53001,53002,53003,53004,53005,53006,53007,53008,53009,53010,53011,53012,53013,53014,53015,53016,53017,53018,53019,53020,53021,53022,53023,53024,53025,53026,53027,53028,53029,53030,53031,53032,53033,53034,53035,53036,53037,53038,53039,53040,53041,53042,53043,53044,53045,53046,53047,53048,53049,53050,53051,53052,53053,53054,53055,53056,53057,53058,53059,53060,53061,53062,53063,53064,53065,53066,53067,53068,53069,53070,53071,53072,53073,53074,53075,53076,53077,53078,53079,53080,53081,53082,53083,53084,53085,53086,53087,53088,53089,53090,53091,53092,53093,53094,53095,53096,53097,53098,53099,53100,53101,53102,53103,53104,53105,53106,53107,53108,53109,53110,53111,53112,53113,53114,53115,53116,53117,53118,53119,53120,53121,53122,53123,53124,53125,53126,53127,53128,53129,53130,53131,53132,53133,53134,53135,53136,53137,53138,53139,53140,53141,53142,53143,53144,53145,53146,53147,53148,53149,53150,53151,53152,53153,53154,53155,53156,53157,53158,53159,53160,53161,53162,53163,53164,53165,53166,53167,53168,53169,53170,53171,53172,53173,53174,53175,53176,53177,53178,53179,53180,53181,53182,53183,53184,53185,53186,53187,53188,53189,53190,53191,53192,53193,53194,53195,53196,53197,53198,53199,53200,53201,53202,53203,53204,53205,53206,53207,53208,53209,53210,53211,53212,53213,53214,53215,53216,53217,53218,53219,53220,53221,53222,53223,53224,53225,53226,53227,53228,53229,53230,53231,53232,53233,53234,53235,53236,53237,53238,53239,53240,53241,53242,53243,53244,53245,53246,53247,53248,53249,53250,53251,53252,53253,53254,53255,53256,53257,53258,53259,53260,53261,53262,53263,53264,53265,53266,53267,53268,53269,53270,53271,53272,53273,53274,53275,53276,53277,53278,53279,53280,53281,53282,53283,53284,53285,53286,53287,53288,53289,53290,53291,53292,53293,53294,53295,53296,53297,53298,53299,53300,53301,53302,53303,53304,53305,53306,53307,53308,53309,53310,53311,53312,53313,53314,53315,53316,53317,53318,53319,53320,53321,53322,53323,53324,53325,53326,53327,53328,53329,53330,53331,53332,53333,53334,53335,53336,53337,53338,53339,53340,53341,53342,53343,53344,53345,53346,53347,53348,53349,53350,53351,53352,53353,53354,53355,53356,53357,53358,53359,53360,53361,53362,53363,53364,53365,53366,53367,53368,53369,53370,53371,53372,53373,53374,53375,53376,53377,53378,53379,53380,53381,53382,53383,53384,53385,53386,53387,53388,53389,53390,53391,53392,53393,53394,53395,53396,53397,53398,53399,53400,53401,53402,53403,53404,53405,53406,53407,53408,53409,53410,53411,53412,53413,53414,53415,53416,53417,53418,53419,53420,53421,53422,53423,53424,53425,53426,53427,53428,53429,53430,53431,53432,53433,53434,53435,53436,53437,53438,53439,53440,53441,53442,53443,53444,53445,53446,53447,53448,53449,53450,53451,53452,53453,53454,53455,53456,53457,53458,53459,53460,53461,53462,53463,53464,53465,53466,53467,53468,53469,53470,53471,53472,53473,53474,53475,53476,53477,53478,53479,53480,53481,53482,53483,53484,53485,53486,53487,53488,53489,53490,53491,53492,53493,53494,53495,53496,53497,53498,53499,53500,53501,53502,53503,53504,53505,53506,53507,53508,53509,53510,53511,53512,53513,53514,53515,53516,53517,53518,53519,53520,53521,53522,53523,53524,53525,53526,53527,53528,53529,53530,53531,53532,53533,53534,53535,53536,53537,53538,53539,53540,53541,53542,53543,53544,53545,53546,53547,53548,53549,53550,53551,53552,53553,53554,53555,53556,53557,53558,53559,53560,53561,53562,53563,53564,53565,53566,53567,53568,53569,53570,53571,53572,53573,53574,53575,53576,53577,53578,53579,53580,53581,53582,53583,53584,53585,53586,53587,53588,53589,53590,53591,53592,53593,53594,53595,53596,53597,53598,53599,53600,53601,53602,53603,53604,53605,53606,53607,53608,53609,53610,53611,53612,53613,53614,53615,53616,53617,53618,53619,53620,53621,53622,53623,53624,53625,53626,53627,53628,53629,53630,53631,53632,53633,53634,53635,53636,53637,53638,53639,53640,53641,53642,53643,53644,53645,53646,53647,53648,53649,53650,53651,53652,53653,53654,53655,53656,53657,53658,53659,53660,53661,53662,53663,53664,53665,53666,53667,53668,53669,53670,53671,53672,53673,53674,53675,53676,53677,53678,53679,53680,53681,53682,53683,53684,53685,53686,53687,53688,53689,53690,53691,53692,53693,53694,53695,53696,53697,53698,53699,53700,53701,53702,53703,53704,53705,53706,53707,53708,53709,53710,53711,53712,53713,53714,53715,53716,53717,53718,53719,53720,53721,53722,53723,53724,53725,53726,53727,53728,53729,53730,53731,53732,53733,53734,53735,53736,53737,53738,53739,53740,53741,53742,53743,53744,53745,53746,53747,53748,53749,53750,53751,53752,53753,53754,53755,53756,53757,53758,53759,53760,53761,53762,53763,53764,53765,53766,53767,53768,53769,53770,53771,53772,53773,53774,53775,53776,53777,53778,53779,53780,53781,53782,53783,53784,53785,53786,53787,53788,53789,53790,53791,53792,53793,53794,53795,53796,53797,53798,53799,53800,53801,53802,53803,53804,53805,53806,53807,53808,53809,53810,53811,53812,53813,53814,53815,53816,53817,53818,53819,53820,53821,53822,53823,53824,53825,53826,53827,53828,53829,53830,53831,53832,53833,53834,53835,53836,53837,53838,53839,53840,53841,53842,53843,53844,53845,53846,53847,53848,53849,53850,53851,53852,53853,53854,53855,53856,53857,53858,53859,53860,53861,53862,53863,53864,53865,53866,53867,53868,53869,53870,53871,53872,53873,53874,53875,53876,53877,53878,53879,53880,53881,53882,53883,53884,53885,53886,53887,53888,53889,53890,53891,53892,53893,53894,53895,53896,53897,53898,53899,53900,53901,53902,53903,53904,53905,53906,53907,53908,53909,53910,53911,53912,53913,53914,53915,53916,53917,53918,53919,53920,53921,53922,53923,53924,53925,53926,53927,53928,53929,53930,53931,53932,53933,53934,53935,53936,53937,53938,53939,53940,53941,53942,53943,53944,53945,53946,53947,53948,53949,53950,53951,53952,53953,53954,53955,53956,53957,53958,53959,53960,53961,53962,53963,53964,53965,53966,53967,53968,53969,53970,53971,53972,53973,53974,53975,53976,53977,53978,53979,53980,53981,53982,53983,53984,53985,53986,53987,53988,53989,53990,53991,53992,53993,53994,53995,53996,53997,53998,53999,54000,54001,54002,54003,54004,54005,54006,54007,54008,54009,54010,54011,54012,54013,54014,54015,54016,54017,54018,54019,54020,54021,54022,54023,54024,54025,54026,54027,54028,54029,54030,54031,54032,54033,54034,54035,54036,54037,54038,54039,54040,54041,54042,54043,54044,54045,54046,54047,54048,54049,54050,54051,54052,54053,54054,54055,54056,54057,54058,54059,54060,54061,54062,54063,54064,54065,54066,54067,54068,54069,54070,54071,54072,54073,54074,54075,54076,54077,54078,54079,54080,54081,54082,54083,54084,54085,54086,54087,54088,54089,54090,54091,54092,54093,54094,54095,54096,54097,54098,54099,54100,54101,54102,54103,54104,54105,54106,54107,54108,54109,54110,54111,54112,54113,54114,54115,54116,54117,54118,54119,54120,54121,54122,54123,54124,54125,54126,54127,54128,54129,54130,54131,54132,54133,54134,54135,54136,54137,54138,54139,54140,54141,54142,54143,54144,54145,54146,54147,54148,54149,54150,54151,54152,54153,54154,54155,54156,54157,54158,54159,54160,54161,54162,54163,54164,54165,54166,54167,54168,54169,54170,54171,54172,54173,54174,54175,54176,54177,54178,54179,54180,54181,54182,54183,54184,54185,54186,54187,54188,54189,54190,54191,54192,54193,54194,54195,54196,54197,54198,54199,54200,54201,54202,54203,54204,54205,54206,54207,54208,54209,54210,54211,54212,54213,54214,54215,54216,54217,54218,54219,54220,54221,54222,54223,54224,54225,54226,54227,54228,54229,54230,54231,54232,54233,54234,54235,54236,54237,54238,54239,54240,54241,54242,54243,54244,54245,54246,54247,54248,54249,54250,54251,54252,54253,54254,54255,54256,54257,54258,54259,54260,54261,54262,54263,54264,54265,54266,54267,54268,54269,54270,54271,54272,54273,54274,54275,54276,54277,54278,54279,54280,54281,54282,54283,54284,54285,54286,54287,54288,54289,54290,54291,54292,54293,54294,54295,54296,54297,54298,54299,54300,54301,54302,54303,54304,54305,54306,54307,54308,54309,54310,54311,54312,54313,54314,54315,54316,54317,54318,54319,54320,54321,54322,54323,54324,54325,54326,54327,54328,54329,54330,54331,54332,54333,54334,54335,54336,54337,54338,54339,54340,54341,54342,54343,54344,54345,54346,54347,54348,54349,54350,54351,54352,54353,54354,54355,54356,54357,54358,54359,54360,54361,54362,54363,54364,54365,54366,54367,54368,54369,54370,54371,54372,54373,54374,54375,54376,54377,54378,54379,54380,54381,54382,54383,54384,54385,54386,54387,54388,54389,54390,54391,54392,54393,54394,54395,54396,54397,54398,54399,54400,54401,54402,54403,54404,54405,54406,54407,54408,54409,54410,54411,54412,54413,54414,54415,54416,54417,54418,54419,54420,54421,54422,54423,54424,54425,54426,54427,54428,54429,54430,54431,54432,54433,54434,54435,54436,54437,54438,54439,54440,54441,54442,54443,54444,54445,54446,54447,54448,54449,54450,54451,54452,54453,54454,54455,54456,54457,54458,54459,54460,54461,54462,54463,54464,54465,54466,54467,54468,54469,54470,54471,54472,54473,54474,54475,54476,54477,54478,54479,54480,54481,54482,54483,54484,54485,54486,54487,54488,54489,54490,54491,54492,54493,54494,54495,54496,54497,54498,54499,54500,54501,54502,54503,54504,54505,54506,54507,54508,54509,54510,54511,54512,54513,54514,54515,54516,54517,54518,54519,54520,54521,54522,54523,54524,54525,54526,54527,54528,54529,54530,54531,54532,54533,54534,54535,54536,54537,54538,54539,54540,54541,54542,54543,54544,54545,54546,54547,54548,54549,54550,54551,54552,54553,54554,54555,54556,54557,54558,54559,54560,54561,54562,54563,54564,54565,54566,54567,54568,54569,54570,54571,54572,54573,54574,54575,54576,54577,54578,54579,54580,54581,54582,54583,54584,54585,54586,54587,54588,54589,54590,54591,54592,54593,54594,54595,54596,54597,54598,54599,54600,54601,54602,54603,54604,54605,54606,54607,54608,54609,54610,54611,54612,54613,54614,54615,54616,54617,54618,54619,54620,54621,54622,54623,54624,54625,54626,54627,54628,54629,54630,54631,54632,54633,54634,54635,54636,54637,54638,54639,54640,54641,54642,54643,54644,54645,54646,54647,54648,54649,54650,54651,54652,54653,54654,54655,54656,54657,54658,54659,54660,54661,54662,54663,54664,54665,54666,54667,54668,54669,54670,54671,54672,54673,54674,54675,54676,54677,54678,54679,54680,54681,54682,54683,54684,54685,54686,54687,54688,54689,54690,54691,54692,54693,54694,54695,54696,54697,54698,54699,54700,54701,54702,54703,54704,54705,54706,54707,54708,54709,54710,54711,54712,54713,54714,54715,54716,54717,54718,54719,54720,54721,54722,54723,54724,54725,54726,54727,54728,54729,54730,54731,54732,54733,54734,54735,54736,54737,54738,54739,54740,54741,54742,54743,54744,54745,54746,54747,54748,54749,54750,54751,54752,54753,54754,54755,54756,54757,54758,54759,54760,54761,54762,54763,54764,54765,54766,54767,54768,54769,54770,54771,54772,54773,54774,54775,54776,54777,54778,54779,54780,54781,54782,54783,54784,54785,54786,54787,54788,54789,54790,54791,54792,54793,54794,54795,54796,54797,54798,54799,54800,54801,54802,54803,54804,54805,54806,54807,54808,54809,54810,54811,54812,54813,54814,54815,54816,54817,54818,54819,54820,54821,54822,54823,54824,54825,54826,54827,54828,54829,54830,54831,54832,54833,54834,54835,54836,54837,54838,54839,54840,54841,54842,54843,54844,54845,54846,54847,54848,54849,54850,54851,54852,54853,54854,54855,54856,54857,54858,54859,54860,54861,54862,54863,54864,54865,54866,54867,54868,54869,54870,54871,54872,54873,54874,54875,54876,54877,54878,54879,54880,54881,54882,54883,54884,54885,54886,54887,54888,54889,54890,54891,54892,54893,54894,54895,54896,54897,54898,54899,54900,54901,54902,54903,54904,54905,54906,54907,54908,54909,54910,54911,54912,54913,54914,54915,54916,54917,54918,54919,54920,54921,54922,54923,54924,54925,54926,54927,54928,54929,54930,54931,54932,54933,54934,54935,54936,54937,54938,54939,54940,54941,54942,54943,54944,54945,54946,54947,54948,54949,54950,54951,54952,54953,54954,54955,54956,54957,54958,54959,54960,54961,54962,54963,54964,54965,54966,54967,54968,54969,54970,54971,54972,54973,54974,54975,54976,54977,54978,54979,54980,54981,54982,54983,54984,54985,54986,54987,54988,54989,54990,54991,54992,54993,54994,54995,54996,54997,54998,54999,55000,55001,55002,55003,55004,55005,55006,55007,55008,55009,55010,55011,55012,55013,55014,55015,55016,55017,55018,55019,55020,55021,55022,55023,55024,55025,55026,55027,55028,55029,55030,55031,55032,55033,55034,55035,55036,55037,55038,55039,55040,55041,55042,55043,55044,55045,55046,55047,55048,55049,55050,55051,55052,55053,55054,55055,55056,55057,55058,55059,55060,55061,55062,55063,55064,55065,55066,55067,55068,55069,55070,55071,55072,55073,55074,55075,55076,55077,55078,55079,55080,55081,55082,55083,55084,55085,55086,55087,55088,55089,55090,55091,55092,55093,55094,55095,55096,55097,55098,55099,55100,55101,55102,55103,55104,55105,55106,55107,55108,55109,55110,55111,55112,55113,55114,55115,55116,55117,55118,55119,55120,55121,55122,55123,55124,55125,55126,55127,55128,55129,55130,55131,55132,55133,55134,55135,55136,55137,55138,55139,55140,55141,55142,55143,55144,55145,55146,55147,55148,55149,55150,55151,55152,55153,55154,55155,55156,55157,55158,55159,55160,55161,55162,55163,55164,55165,55166,55167,55168,55169,55170,55171,55172,55173,55174,55175,55176,55177,55178,55179,55180,55181,55182,55183,55184,55185,55186,55187,55188,55189,55190,55191,55192,55193,55194,55195,55196,55197,55198,55199,55200,55201,55202,55203,55216,55217,55218,55219,55220,55221,55222,55223,55224,55225,55226,55227,55228,55229,55230,55231,55232,55233,55234,55235,55236,55237,55238,55243,55244,55245,55246,55247,55248,55249,55250,55251,55252,55253,55254,55255,55256,55257,55258,55259,55260,55261,55262,55263,55264,55265,55266,55267,55268,55269,55270,55271,55272,55273,55274,55275,55276,55277,55278,55279,55280,55281,55282,55283,55284,55285,55286,55287,55288,55289,55290,55291,63744,63745,63746,63747,63748,63749,63750,63751,63752,63753,63754,63755,63756,63757,63758,63759,63760,63761,63762,63763,63764,63765,63766,63767,63768,63769,63770,63771,63772,63773,63774,63775,63776,63777,63778,63779,63780,63781,63782,63783,63784,63785,63786,63787,63788,63789,63790,63791,63792,63793,63794,63795,63796,63797,63798,63799,63800,63801,63802,63803,63804,63805,63806,63807,63808,63809,63810,63811,63812,63813,63814,63815,63816,63817,63818,63819,63820,63821,63822,63823,63824,63825,63826,63827,63828,63829,63830,63831,63832,63833,63834,63835,63836,63837,63838,63839,63840,63841,63842,63843,63844,63845,63846,63847,63848,63849,63850,63851,63852,63853,63854,63855,63856,63857,63858,63859,63860,63861,63862,63863,63864,63865,63866,63867,63868,63869,63870,63871,63872,63873,63874,63875,63876,63877,63878,63879,63880,63881,63882,63883,63884,63885,63886,63887,63888,63889,63890,63891,63892,63893,63894,63895,63896,63897,63898,63899,63900,63901,63902,63903,63904,63905,63906,63907,63908,63909,63910,63911,63912,63913,63914,63915,63916,63917,63918,63919,63920,63921,63922,63923,63924,63925,63926,63927,63928,63929,63930,63931,63932,63933,63934,63935,63936,63937,63938,63939,63940,63941,63942,63943,63944,63945,63946,63947,63948,63949,63950,63951,63952,63953,63954,63955,63956,63957,63958,63959,63960,63961,63962,63963,63964,63965,63966,63967,63968,63969,63970,63971,63972,63973,63974,63975,63976,63977,63978,63979,63980,63981,63982,63983,63984,63985,63986,63987,63988,63989,63990,63991,63992,63993,63994,63995,63996,63997,63998,63999,64000,64001,64002,64003,64004,64005,64006,64007,64008,64009,64010,64011,64012,64013,64014,64015,64016,64017,64018,64019,64020,64021,64022,64023,64024,64025,64026,64027,64028,64029,64030,64031,64032,64033,64034,64035,64036,64037,64038,64039,64040,64041,64042,64043,64044,64045,64046,64047,64048,64049,64050,64051,64052,64053,64054,64055,64056,64057,64058,64059,64060,64061,64062,64063,64064,64065,64066,64067,64068,64069,64070,64071,64072,64073,64074,64075,64076,64077,64078,64079,64080,64081,64082,64083,64084,64085,64086,64087,64088,64089,64090,64091,64092,64093,64094,64095,64096,64097,64098,64099,64100,64101,64102,64103,64104,64105,64106,64107,64108,64109,64112,64113,64114,64115,64116,64117,64118,64119,64120,64121,64122,64123,64124,64125,64126,64127,64128,64129,64130,64131,64132,64133,64134,64135,64136,64137,64138,64139,64140,64141,64142,64143,64144,64145,64146,64147,64148,64149,64150,64151,64152,64153,64154,64155,64156,64157,64158,64159,64160,64161,64162,64163,64164,64165,64166,64167,64168,64169,64170,64171,64172,64173,64174,64175,64176,64177,64178,64179,64180,64181,64182,64183,64184,64185,64186,64187,64188,64189,64190,64191,64192,64193,64194,64195,64196,64197,64198,64199,64200,64201,64202,64203,64204,64205,64206,64207,64208,64209,64210,64211,64212,64213,64214,64215,64216,64217,64256,64257,64258,64259,64260,64261,64262,64275,64276,64277,64278,64279,64285,64287,64288,64289,64290,64291,64292,64293,64294,64295,64296,64298,64299,64300,64301,64302,64303,64304,64305,64306,64307,64308,64309,64310,64312,64313,64314,64315,64316,64318,64320,64321,64323,64324,64326,64327,64328,64329,64330,64331,64332,64333,64334,64335,64336,64337,64338,64339,64340,64341,64342,64343,64344,64345,64346,64347,64348,64349,64350,64351,64352,64353,64354,64355,64356,64357,64358,64359,64360,64361,64362,64363,64364,64365,64366,64367,64368,64369,64370,64371,64372,64373,64374,64375,64376,64377,64378,64379,64380,64381,64382,64383,64384,64385,64386,64387,64388,64389,64390,64391,64392,64393,64394,64395,64396,64397,64398,64399,64400,64401,64402,64403,64404,64405,64406,64407,64408,64409,64410,64411,64412,64413,64414,64415,64416,64417,64418,64419,64420,64421,64422,64423,64424,64425,64426,64427,64428,64429,64430,64431,64432,64433,64467,64468,64469,64470,64471,64472,64473,64474,64475,64476,64477,64478,64479,64480,64481,64482,64483,64484,64485,64486,64487,64488,64489,64490,64491,64492,64493,64494,64495,64496,64497,64498,64499,64500,64501,64502,64503,64504,64505,64506,64507,64508,64509,64510,64511,64512,64513,64514,64515,64516,64517,64518,64519,64520,64521,64522,64523,64524,64525,64526,64527,64528,64529,64530,64531,64532,64533,64534,64535,64536,64537,64538,64539,64540,64541,64542,64543,64544,64545,64546,64547,64548,64549,64550,64551,64552,64553,64554,64555,64556,64557,64558,64559,64560,64561,64562,64563,64564,64565,64566,64567,64568,64569,64570,64571,64572,64573,64574,64575,64576,64577,64578,64579,64580,64581,64582,64583,64584,64585,64586,64587,64588,64589,64590,64591,64592,64593,64594,64595,64596,64597,64598,64599,64600,64601,64602,64603,64604,64605,64606,64607,64608,64609,64610,64611,64612,64613,64614,64615,64616,64617,64618,64619,64620,64621,64622,64623,64624,64625,64626,64627,64628,64629,64630,64631,64632,64633,64634,64635,64636,64637,64638,64639,64640,64641,64642,64643,64644,64645,64646,64647,64648,64649,64650,64651,64652,64653,64654,64655,64656,64657,64658,64659,64660,64661,64662,64663,64664,64665,64666,64667,64668,64669,64670,64671,64672,64673,64674,64675,64676,64677,64678,64679,64680,64681,64682,64683,64684,64685,64686,64687,64688,64689,64690,64691,64692,64693,64694,64695,64696,64697,64698,64699,64700,64701,64702,64703,64704,64705,64706,64707,64708,64709,64710,64711,64712,64713,64714,64715,64716,64717,64718,64719,64720,64721,64722,64723,64724,64725,64726,64727,64728,64729,64730,64731,64732,64733,64734,64735,64736,64737,64738,64739,64740,64741,64742,64743,64744,64745,64746,64747,64748,64749,64750,64751,64752,64753,64754,64755,64756,64757,64758,64759,64760,64761,64762,64763,64764,64765,64766,64767,64768,64769,64770,64771,64772,64773,64774,64775,64776,64777,64778,64779,64780,64781,64782,64783,64784,64785,64786,64787,64788,64789,64790,64791,64792,64793,64794,64795,64796,64797,64798,64799,64800,64801,64802,64803,64804,64805,64806,64807,64808,64809,64810,64811,64812,64813,64814,64815,64816,64817,64818,64819,64820,64821,64822,64823,64824,64825,64826,64827,64828,64829,64848,64849,64850,64851,64852,64853,64854,64855,64856,64857,64858,64859,64860,64861,64862,64863,64864,64865,64866,64867,64868,64869,64870,64871,64872,64873,64874,64875,64876,64877,64878,64879,64880,64881,64882,64883,64884,64885,64886,64887,64888,64889,64890,64891,64892,64893,64894,64895,64896,64897,64898,64899,64900,64901,64902,64903,64904,64905,64906,64907,64908,64909,64910,64911,64914,64915,64916,64917,64918,64919,64920,64921,64922,64923,64924,64925,64926,64927,64928,64929,64930,64931,64932,64933,64934,64935,64936,64937,64938,64939,64940,64941,64942,64943,64944,64945,64946,64947,64948,64949,64950,64951,64952,64953,64954,64955,64956,64957,64958,64959,64960,64961,64962,64963,64964,64965,64966,64967,65008,65009,65010,65011,65012,65013,65014,65015,65016,65017,65018,65019,65136,65137,65138,65139,65140,65142,65143,65144,65145,65146,65147,65148,65149,65150,65151,65152,65153,65154,65155,65156,65157,65158,65159,65160,65161,65162,65163,65164,65165,65166,65167,65168,65169,65170,65171,65172,65173,65174,65175,65176,65177,65178,65179,65180,65181,65182,65183,65184,65185,65186,65187,65188,65189,65190,65191,65192,65193,65194,65195,65196,65197,65198,65199,65200,65201,65202,65203,65204,65205,65206,65207,65208,65209,65210,65211,65212,65213,65214,65215,65216,65217,65218,65219,65220,65221,65222,65223,65224,65225,65226,65227,65228,65229,65230,65231,65232,65233,65234,65235,65236,65237,65238,65239,65240,65241,65242,65243,65244,65245,65246,65247,65248,65249,65250,65251,65252,65253,65254,65255,65256,65257,65258,65259,65260,65261,65262,65263,65264,65265,65266,65267,65268,65269,65270,65271,65272,65273,65274,65275,65276,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,65382,65383,65384,65385,65386,65387,65388,65389,65390,65391,65392,65393,65394,65395,65396,65397,65398,65399,65400,65401,65402,65403,65404,65405,65406,65407,65408,65409,65410,65411,65412,65413,65414,65415,65416,65417,65418,65419,65420,65421,65422,65423,65424,65425,65426,65427,65428,65429,65430,65431,65432,65433,65434,65435,65436,65437,65438,65439,65440,65441,65442,65443,65444,65445,65446,65447,65448,65449,65450,65451,65452,65453,65454,65455,65456,65457,65458,65459,65460,65461,65462,65463,65464,65465,65466,65467,65468,65469,65470,65474,65475,65476,65477,65478,65479,65482,65483,65484,65485,65486,65487,65490,65491,65492,65493,65494,65495,65498,65499,65500'; +var arr = str.split(',').map(function(code) { + return parseInt(code, 10); +}); +module.exports = arr; +},{}],4:[function(require,module,exports){ +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +// when used in node, this will actually load the util module we depend on +// versus loading the builtin util module as happens otherwise +// this is a bug in node module loading as far as I am concerned +var util = require('util/'); + +var pSlice = Array.prototype.slice; +var hasOwn = Object.prototype.hasOwnProperty; + +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. + +var assert = module.exports = ok; + +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) + +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } + else { + // non v8 browsers so we can have a stacktrace + var err = new Error(); + if (err.stack) { + var out = err.stack; + + // try to strip useless frames + var fn_name = stackStartFunction.name; + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + // once we have located the function frame + // we need to strip out everything before it (and its line) + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } + + this.stack = out; + } + } +}; + +// assert.AssertionError instanceof Error +util.inherits(assert.AssertionError, Error); + +function replacer(key, value) { + if (util.isUndefined(value)) { + return '' + value; + } + if (util.isNumber(value) && !isFinite(value)) { + return value.toString(); + } + if (util.isFunction(value) || util.isRegExp(value)) { + return value.toString(); + } + return value; +} + +function truncate(s, n) { + if (util.isString(s)) { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} + +function getMessage(self) { + return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' + + self.operator + ' ' + + truncate(JSON.stringify(self.expected, replacer), 128); +} + +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. + +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. + +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); +} + +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; + +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. + +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); +} +assert.ok = ok; + +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); + +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); +}; + +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); + +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } +}; + +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); + +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; + +function _deepEqual(actual, expected) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + + } else if (util.isBuffer(actual) && util.isBuffer(expected)) { + if (actual.length != expected.length) return false; + + for (var i = 0; i < actual.length; i++) { + if (actual[i] !== expected[i]) return false; + } + + return true; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); + + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if (!util.isObject(actual) && !util.isObject(expected)) { + return actual == expected; + + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else { + return objEquiv(actual, expected); + } +} + +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function objEquiv(a, b) { + if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b)) + return false; + // an identical 'prototype' property. + if (a.prototype !== b.prototype) return false; + // if one is a primitive, the other must be same + if (util.isPrimitive(a) || util.isPrimitive(b)) { + return a === b; + } + var aIsArgs = isArguments(a), + bIsArgs = isArguments(b); + if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) + return false; + if (aIsArgs) { + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b); + } + var ka = objectKeys(a), + kb = objectKeys(b), + key, i; + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length != kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key])) return false; + } + return true; +} + +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); + +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } +}; + +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); + +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); + } +}; + +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); + +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } +}; + +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } + + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } else if (actual instanceof expected) { + return true; + } else if (expected.call({}, actual) === true) { + return true; + } + + return false; +} + +function _throws(shouldThrow, block, expected, message) { + var actual; + + if (util.isString(expected)) { + message = expected; + expected = null; + } + + try { + block(); + } catch (e) { + actual = e; + } + + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); + + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } + + if (!shouldThrow && expectedException(actual, expected)) { + fail(actual, expected, 'Got unwanted exception' + message); + } + + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} + +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); + +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws.apply(this, [true].concat(pSlice.call(arguments))); +}; + +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/message) { + _throws.apply(this, [false].concat(pSlice.call(arguments))); +}; + +assert.ifError = function(err) { if (err) {throw err;}}; + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; + +},{"util/":9}],5:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } + throw TypeError('Uncaught, unspecified "error" event.'); + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + handler.apply(this, args); + } + } else if (isObject(handler)) { + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + var m; + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.listenerCount = function(emitter, type) { + var ret; + if (!emitter._events || !emitter._events[type]) + ret = 0; + else if (isFunction(emitter._events[type])) + ret = 1; + else + ret = emitter._events[type].length; + return ret; +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + +},{}],6:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + +},{}],7:[function(require,module,exports){ +// shim for using process in browser + +var process = module.exports = {}; +var queue = []; +var draining = false; + +function drainQueue() { + if (draining) { + return; + } + draining = true; + var currentQueue; + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + var i = -1; + while (++i < len) { + currentQueue[i](); + } + len = queue.length; + } + draining = false; +} +process.nextTick = function (fun) { + queue.push(fun); + if (!draining) { + setTimeout(drainQueue, 0); + } +}; + +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +// TODO(shtylman) +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],8:[function(require,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +},{}],9:[function(require,module,exports){ +(function (process,global){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; + + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = require('./support/isBuffer'); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = require('inherits'); + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./support/isBuffer":8,"_process":7,"inherits":6}],10:[function(require,module,exports){ +(function (global){ +/*global window, global*/ +var util = require("util") +var assert = require("assert") +var now = require("date-now") + +var slice = Array.prototype.slice +var console +var times = {} + +if (typeof global !== "undefined" && global.console) { + console = global.console +} else if (typeof window !== "undefined" && window.console) { + console = window.console +} else { + console = {} +} + +var functions = [ + [log, "log"], + [info, "info"], + [warn, "warn"], + [error, "error"], + [time, "time"], + [timeEnd, "timeEnd"], + [trace, "trace"], + [dir, "dir"], + [consoleAssert, "assert"] +] + +for (var i = 0; i < functions.length; i++) { + var tuple = functions[i] + var f = tuple[0] + var name = tuple[1] + + if (!console[name]) { + console[name] = f + } +} + +module.exports = console + +function log() {} + +function info() { + console.log.apply(console, arguments) +} + +function warn() { + console.log.apply(console, arguments) +} + +function error() { + console.warn.apply(console, arguments) +} + +function time(label) { + times[label] = now() +} + +function timeEnd(label) { + var time = times[label] + if (!time) { + throw new Error("No such label: " + label) + } + + var duration = now() - time + console.log(label + ": " + duration + "ms") +} + +function trace() { + var err = new Error() + err.name = "Trace" + err.message = util.format.apply(null, arguments) + console.error(err.stack) +} + +function dir(object) { + console.log(util.inspect(object) + "\n") +} + +function consoleAssert(expression) { + if (!expression) { + var arr = slice.call(arguments, 1) + assert.ok(false, util.format.apply(null, arr)) + } +} + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"assert":4,"date-now":11,"util":9}],11:[function(require,module,exports){ +module.exports = now + +function now() { + return new Date().getTime() +} + +},{}],12:[function(require,module,exports){ +(function (global){ +/** + * @license + * lodash 3.7.0 (Custom Build) + * Build: `lodash modern -d -o ./index.js` + * Copyright 2012-2015 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +;(function() { + + /** Used as a safe reference for `undefined` in pre-ES5 environments. */ + var undefined; + + /** Used as the semantic version number. */ + var VERSION = '3.7.0'; + + /** Used to compose bitmasks for wrapper metadata. */ + var BIND_FLAG = 1, + BIND_KEY_FLAG = 2, + CURRY_BOUND_FLAG = 4, + CURRY_FLAG = 8, + CURRY_RIGHT_FLAG = 16, + PARTIAL_FLAG = 32, + PARTIAL_RIGHT_FLAG = 64, + ARY_FLAG = 128, + REARG_FLAG = 256; + + /** Used as default options for `_.trunc`. */ + var DEFAULT_TRUNC_LENGTH = 30, + DEFAULT_TRUNC_OMISSION = '...'; + + /** Used to detect when a function becomes hot. */ + var HOT_COUNT = 150, + HOT_SPAN = 16; + + /** Used to indicate the type of lazy iteratees. */ + var LAZY_DROP_WHILE_FLAG = 0, + LAZY_FILTER_FLAG = 1, + LAZY_MAP_FLAG = 2; + + /** Used as the `TypeError` message for "Functions" methods. */ + var FUNC_ERROR_TEXT = 'Expected a function'; + + /** Used as the internal argument placeholder. */ + var PLACEHOLDER = '__lodash_placeholder__'; + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + weakMapTag = '[object WeakMap]'; + + var arrayBufferTag = '[object ArrayBuffer]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + /** Used to match empty string literals in compiled template source. */ + var reEmptyStringLeading = /\b__p \+= '';/g, + reEmptyStringMiddle = /\b(__p \+=) '' \+/g, + reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; + + /** Used to match HTML entities and HTML characters. */ + var reEscapedHtml = /&(?:amp|lt|gt|quot|#39|#96);/g, + reUnescapedHtml = /[&<>"'`]/g, + reHasEscapedHtml = RegExp(reEscapedHtml.source), + reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + + /** Used to match template delimiters. */ + var reEscape = /<%-([\s\S]+?)%>/g, + reEvaluate = /<%([\s\S]+?)%>/g, + reInterpolate = /<%=([\s\S]+?)%>/g; + + /** Used to match property names within property paths. */ + var reIsDeepProp = /\.|\[(?:[^[\]]+|(["'])(?:(?!\1)[^\n\\]|\\.)*?)\1\]/, + reIsPlainProp = /^\w*$/, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g; + + /** + * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special). + * In addition to special characters the forward slash is escaped to allow for + * easier `eval` use and `Function` compilation. + */ + var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g, + reHasRegExpChars = RegExp(reRegExpChars.source); + + /** Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). */ + var reComboMark = /[\u0300-\u036f\ufe20-\ufe23]/g; + + /** Used to match backslashes in property paths. */ + var reEscapeChar = /\\(\\)?/g; + + /** Used to match [ES template delimiters](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-template-literal-lexical-components). */ + var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; + + /** Used to match `RegExp` flags from their coerced string values. */ + var reFlags = /\w*$/; + + /** Used to detect hexadecimal string values. */ + var reHasHexPrefix = /^0[xX]/; + + /** Used to detect host constructors (Safari > 5). */ + var reIsHostCtor = /^\[object .+?Constructor\]$/; + + /** Used to match latin-1 supplementary letters (excluding mathematical operators). */ + var reLatin1 = /[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g; + + /** Used to ensure capturing order of template delimiters. */ + var reNoMatch = /($^)/; + + /** Used to match unescaped characters in compiled string literals. */ + var reUnescapedString = /['\n\r\u2028\u2029\\]/g; + + /** Used to match words to create compound words. */ + var reWords = (function() { + var upper = '[A-Z\\xc0-\\xd6\\xd8-\\xde]', + lower = '[a-z\\xdf-\\xf6\\xf8-\\xff]+'; + + return RegExp(upper + '+(?=' + upper + lower + ')|' + upper + '?' + lower + '|' + upper + '+|[0-9]+', 'g'); + }()); + + /** Used to detect and test for whitespace. */ + var whitespace = ( + // Basic whitespace characters. + ' \t\x0b\f\xa0\ufeff' + + + // Line terminators. + '\n\r\u2028\u2029' + + + // Unicode category "Zs" space separators. + '\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000' + ); + + /** Used to assign default `context` object properties. */ + var contextProps = [ + 'Array', 'ArrayBuffer', 'Date', 'Error', 'Float32Array', 'Float64Array', + 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Math', 'Number', + 'Object', 'RegExp', 'Set', 'String', '_', 'clearTimeout', 'document', + 'isFinite', 'parseInt', 'setTimeout', 'TypeError', 'Uint8Array', + 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', + 'window' + ]; + + /** Used to make template sourceURLs easier to identify. */ + var templateCounter = -1; + + /** Used to identify `toStringTag` values of typed arrays. */ + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = + typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = + typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = + typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = + typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = + typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = + typedArrayTags[dateTag] = typedArrayTags[errorTag] = + typedArrayTags[funcTag] = typedArrayTags[mapTag] = + typedArrayTags[numberTag] = typedArrayTags[objectTag] = + typedArrayTags[regexpTag] = typedArrayTags[setTag] = + typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; + + /** Used to identify `toStringTag` values supported by `_.clone`. */ + var cloneableTags = {}; + cloneableTags[argsTag] = cloneableTags[arrayTag] = + cloneableTags[arrayBufferTag] = cloneableTags[boolTag] = + cloneableTags[dateTag] = cloneableTags[float32Tag] = + cloneableTags[float64Tag] = cloneableTags[int8Tag] = + cloneableTags[int16Tag] = cloneableTags[int32Tag] = + cloneableTags[numberTag] = cloneableTags[objectTag] = + cloneableTags[regexpTag] = cloneableTags[stringTag] = + cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = + cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag] = cloneableTags[funcTag] = + cloneableTags[mapTag] = cloneableTags[setTag] = + cloneableTags[weakMapTag] = false; + + /** Used as an internal `_.debounce` options object by `_.throttle`. */ + var debounceOptions = { + 'leading': false, + 'maxWait': 0, + 'trailing': false + }; + + /** Used to map latin-1 supplementary letters to basic latin letters. */ + var deburredLetters = { + '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', + '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', + '\xc7': 'C', '\xe7': 'c', + '\xd0': 'D', '\xf0': 'd', + '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', + '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', + '\xcC': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', + '\xeC': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', + '\xd1': 'N', '\xf1': 'n', + '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', + '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', + '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', + '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', + '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', + '\xc6': 'Ae', '\xe6': 'ae', + '\xde': 'Th', '\xfe': 'th', + '\xdf': 'ss' + }; + + /** Used to map characters to HTML entities. */ + var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + + /** Used to map HTML entities to characters. */ + var htmlUnescapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + ''': "'", + '`': '`' + }; + + /** Used to determine if values are of the language type `Object`. */ + var objectTypes = { + 'function': true, + 'object': true + }; + + /** Used to escape characters for inclusion in compiled string literals. */ + var stringEscapes = { + '\\': '\\', + "'": "'", + '\n': 'n', + '\r': 'r', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + /** Detect free variable `exports`. */ + var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule = objectTypes[typeof module] && module && !module.nodeType && module; + + /** Detect free variable `global` from Node.js. */ + var freeGlobal = freeExports && freeModule && typeof global == 'object' && global && global.Object && global; + + /** Detect free variable `self`. */ + var freeSelf = objectTypes[typeof self] && self && self.Object && self; + + /** Detect free variable `window`. */ + var freeWindow = objectTypes[typeof window] && window && window.Object && window; + + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports && freeExports; + + /** + * Used as a reference to the global object. + * + * The `this` value is used if it is the global object to avoid Greasemonkey's + * restricted `window` object, otherwise the `window` object is used. + */ + var root = freeGlobal || ((freeWindow !== (this && this.window)) && freeWindow) || freeSelf || this; + + /*--------------------------------------------------------------------------*/ + + /** + * The base implementation of `compareAscending` which compares values and + * sorts them in ascending order without guaranteeing a stable sort. + * + * @private + * @param {*} value The value to compare to `other`. + * @param {*} other The value to compare to `value`. + * @returns {number} Returns the sort order indicator for `value`. + */ + function baseCompareAscending(value, other) { + if (value !== other) { + var valIsReflexive = value === value, + othIsReflexive = other === other; + + if (value > other || !valIsReflexive || (value === undefined && othIsReflexive)) { + return 1; + } + if (value < other || !othIsReflexive || (other === undefined && valIsReflexive)) { + return -1; + } + } + return 0; + } + + /** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for callback shorthands and `this` binding. + * + * @private + * @param {Array} array The array to search. + * @param {Function} predicate The function invoked per iteration. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseFindIndex(array, predicate, fromRight) { + var length = array.length, + index = fromRight ? length : -1; + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.indexOf` without support for binary searches. + * + * @private + * @param {Array} array The array to search. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOf(array, value, fromIndex) { + if (value !== value) { + return indexOfNaN(array, fromIndex); + } + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.isFunction` without support for environments + * with incorrect `typeof` results. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + */ + function baseIsFunction(value) { + // Avoid a Chakra JIT bug in compatibility modes of IE 11. + // See https://github.com/jashkenas/underscore/issues/1621 for more details. + return typeof value == 'function' || false; + } + + /** + * Converts `value` to a string if it is not one. An empty string is returned + * for `null` or `undefined` values. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ + function baseToString(value) { + if (typeof value == 'string') { + return value; + } + return value == null ? '' : (value + ''); + } + + /** + * Used by `_.max` and `_.min` as the default callback for string values. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the code unit of the first character of the string. + */ + function charAtCallback(string) { + return string.charCodeAt(0); + } + + /** + * Used by `_.trim` and `_.trimLeft` to get the index of the first character + * of `string` that is not found in `chars`. + * + * @private + * @param {string} string The string to inspect. + * @param {string} chars The characters to find. + * @returns {number} Returns the index of the first character not found in `chars`. + */ + function charsLeftIndex(string, chars) { + var index = -1, + length = string.length; + + while (++index < length && chars.indexOf(string.charAt(index)) > -1) {} + return index; + } + + /** + * Used by `_.trim` and `_.trimRight` to get the index of the last character + * of `string` that is not found in `chars`. + * + * @private + * @param {string} string The string to inspect. + * @param {string} chars The characters to find. + * @returns {number} Returns the index of the last character not found in `chars`. + */ + function charsRightIndex(string, chars) { + var index = string.length; + + while (index-- && chars.indexOf(string.charAt(index)) > -1) {} + return index; + } + + /** + * Used by `_.sortBy` to compare transformed elements of a collection and stable + * sort them in ascending order. + * + * @private + * @param {Object} object The object to compare to `other`. + * @param {Object} other The object to compare to `object`. + * @returns {number} Returns the sort order indicator for `object`. + */ + function compareAscending(object, other) { + return baseCompareAscending(object.criteria, other.criteria) || (object.index - other.index); + } + + /** + * Used by `_.sortByOrder` to compare multiple properties of each element + * in a collection and stable sort them in the following order: + * + * If `orders` is unspecified, sort in ascending order for all properties. + * Otherwise, for each property, sort in ascending order if its corresponding value in + * orders is true, and descending order if false. + * + * @private + * @param {Object} object The object to compare to `other`. + * @param {Object} other The object to compare to `object`. + * @param {boolean[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ + function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; + + while (++index < length) { + var result = baseCompareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + return result * (orders[index] ? 1 : -1); + } + } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://code.google.com/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; + } + + /** + * Used by `_.deburr` to convert latin-1 supplementary letters to basic latin letters. + * + * @private + * @param {string} letter The matched letter to deburr. + * @returns {string} Returns the deburred letter. + */ + function deburrLetter(letter) { + return deburredLetters[letter]; + } + + /** + * Used by `_.escape` to convert characters to HTML entities. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + function escapeHtmlChar(chr) { + return htmlEscapes[chr]; + } + + /** + * Used by `_.template` to escape characters for inclusion in compiled + * string literals. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + function escapeStringChar(chr) { + return '\\' + stringEscapes[chr]; + } + + /** + * Gets the index at which the first occurrence of `NaN` is found in `array`. + * + * @private + * @param {Array} array The array to search. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched `NaN`, else `-1`. + */ + function indexOfNaN(array, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 0 : -1); + + while ((fromRight ? index-- : ++index < length)) { + var other = array[index]; + if (other !== other) { + return index; + } + } + return -1; + } + + /** + * Checks if `value` is object-like. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + */ + function isObjectLike(value) { + return !!value && typeof value == 'object'; + } + + /** + * Used by `trimmedLeftIndex` and `trimmedRightIndex` to determine if a + * character code is whitespace. + * + * @private + * @param {number} charCode The character code to inspect. + * @returns {boolean} Returns `true` if `charCode` is whitespace, else `false`. + */ + function isSpace(charCode) { + return ((charCode <= 160 && (charCode >= 9 && charCode <= 13) || charCode == 32 || charCode == 160) || charCode == 5760 || charCode == 6158 || + (charCode >= 8192 && (charCode <= 8202 || charCode == 8232 || charCode == 8233 || charCode == 8239 || charCode == 8287 || charCode == 12288 || charCode == 65279))); + } + + /** + * Replaces all `placeholder` elements in `array` with an internal placeholder + * and returns an array of their indexes. + * + * @private + * @param {Array} array The array to modify. + * @param {*} placeholder The placeholder to replace. + * @returns {Array} Returns the new array of placeholder indexes. + */ + function replaceHolders(array, placeholder) { + var index = -1, + length = array.length, + resIndex = -1, + result = []; + + while (++index < length) { + if (array[index] === placeholder) { + array[index] = PLACEHOLDER; + result[++resIndex] = index; + } + } + return result; + } + + /** + * An implementation of `_.uniq` optimized for sorted arrays without support + * for callback shorthands and `this` binding. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The function invoked per iteration. + * @returns {Array} Returns the new duplicate-value-free array. + */ + function sortedUniq(array, iteratee) { + var seen, + index = -1, + length = array.length, + resIndex = -1, + result = []; + + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value, index, array) : value; + + if (!index || seen !== computed) { + seen = computed; + result[++resIndex] = value; + } + } + return result; + } + + /** + * Used by `_.trim` and `_.trimLeft` to get the index of the first non-whitespace + * character of `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the index of the first non-whitespace character. + */ + function trimmedLeftIndex(string) { + var index = -1, + length = string.length; + + while (++index < length && isSpace(string.charCodeAt(index))) {} + return index; + } + + /** + * Used by `_.trim` and `_.trimRight` to get the index of the last non-whitespace + * character of `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the index of the last non-whitespace character. + */ + function trimmedRightIndex(string) { + var index = string.length; + + while (index-- && isSpace(string.charCodeAt(index))) {} + return index; + } + + /** + * Used by `_.unescape` to convert HTML entities to characters. + * + * @private + * @param {string} chr The matched character to unescape. + * @returns {string} Returns the unescaped character. + */ + function unescapeHtmlChar(chr) { + return htmlUnescapes[chr]; + } + + /*--------------------------------------------------------------------------*/ + + /** + * Create a new pristine `lodash` function using the given `context` object. + * + * @static + * @memberOf _ + * @category Utility + * @param {Object} [context=root] The context object. + * @returns {Function} Returns a new `lodash` function. + * @example + * + * _.mixin({ 'foo': _.constant('foo') }); + * + * var lodash = _.runInContext(); + * lodash.mixin({ 'bar': lodash.constant('bar') }); + * + * _.isFunction(_.foo); + * // => true + * _.isFunction(_.bar); + * // => false + * + * lodash.isFunction(lodash.foo); + * // => false + * lodash.isFunction(lodash.bar); + * // => true + * + * // using `context` to mock `Date#getTime` use in `_.now` + * var mock = _.runInContext({ + * 'Date': function() { + * return { 'getTime': getTimeMock }; + * } + * }); + * + * // or creating a suped-up `defer` in Node.js + * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; + */ + function runInContext(context) { + // Avoid issues with some ES3 environments that attempt to use values, named + // after built-in constructors like `Object`, for the creation of literals. + // ES5 clears this up by stating that literals must use built-in constructors. + // See https://es5.github.io/#x11.1.5 for more details. + context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root; + + /** Native constructor references. */ + var Array = context.Array, + Date = context.Date, + Error = context.Error, + Function = context.Function, + Math = context.Math, + Number = context.Number, + Object = context.Object, + RegExp = context.RegExp, + String = context.String, + TypeError = context.TypeError; + + /** Used for native method references. */ + var arrayProto = Array.prototype, + objectProto = Object.prototype, + stringProto = String.prototype; + + /** Used to detect DOM support. */ + var document = (document = context.window) && document.document; + + /** Used to resolve the decompiled source of functions. */ + var fnToString = Function.prototype.toString; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** Used to generate unique IDs. */ + var idCounter = 0; + + /** + * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * of values. + */ + var objToString = objectProto.toString; + + /** Used to restore the original `_` reference in `_.noConflict`. */ + var oldDash = context._; + + /** Used to detect if a method is native. */ + var reIsNative = RegExp('^' + + escapeRegExp(objToString) + .replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' + ); + + /** Native method references. */ + var ArrayBuffer = isNative(ArrayBuffer = context.ArrayBuffer) && ArrayBuffer, + bufferSlice = isNative(bufferSlice = ArrayBuffer && new ArrayBuffer(0).slice) && bufferSlice, + ceil = Math.ceil, + clearTimeout = context.clearTimeout, + floor = Math.floor, + getOwnPropertySymbols = isNative(getOwnPropertySymbols = Object.getOwnPropertySymbols) && getOwnPropertySymbols, + getPrototypeOf = isNative(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf, + push = arrayProto.push, + preventExtensions = isNative(Object.preventExtensions = Object.preventExtensions) && preventExtensions, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + Set = isNative(Set = context.Set) && Set, + setTimeout = context.setTimeout, + splice = arrayProto.splice, + Uint8Array = isNative(Uint8Array = context.Uint8Array) && Uint8Array, + WeakMap = isNative(WeakMap = context.WeakMap) && WeakMap; + + /** Used to clone array buffers. */ + var Float64Array = (function() { + // Safari 5 errors when using an array buffer to initialize a typed array + // where the array buffer's `byteLength` is not a multiple of the typed + // array's `BYTES_PER_ELEMENT`. + try { + var func = isNative(func = context.Float64Array) && func, + result = new func(new ArrayBuffer(10), 0, 1) && func; + } catch(e) {} + return result; + }()); + + /** Used as `baseAssign`. */ + var nativeAssign = (function() { + // Avoid `Object.assign` in Firefox 34-37 which have an early implementation + // with a now defunct try/catch behavior. See https://bugzilla.mozilla.org/show_bug.cgi?id=1103344 + // for more details. + // + // Use `Object.preventExtensions` on a plain object instead of simply using + // `Object('x')` because Chrome and IE fail to throw an error when attempting + // to assign values to readonly indexes of strings in strict mode. + var object = { '1': 0 }, + func = preventExtensions && isNative(func = Object.assign) && func; + + try { func(preventExtensions(object), 'xo'); } catch(e) {} + return !object[1] && func; + }()); + + /* Native method references for those with the same name as other `lodash` methods. */ + var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray, + nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate, + nativeIsFinite = context.isFinite, + nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys, + nativeMax = Math.max, + nativeMin = Math.min, + nativeNow = isNative(nativeNow = Date.now) && nativeNow, + nativeNumIsFinite = isNative(nativeNumIsFinite = Number.isFinite) && nativeNumIsFinite, + nativeParseInt = context.parseInt, + nativeRandom = Math.random; + + /** Used as references for `-Infinity` and `Infinity`. */ + var NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY, + POSITIVE_INFINITY = Number.POSITIVE_INFINITY; + + /** Used as references for the maximum length and index of an array. */ + var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1, + MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, + HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; + + /** Used as the size, in bytes, of each `Float64Array` element. */ + var FLOAT64_BYTES_PER_ELEMENT = Float64Array ? Float64Array.BYTES_PER_ELEMENT : 0; + + /** + * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer) + * of an array-like value. + */ + var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; + + /** Used to store function metadata. */ + var metaMap = WeakMap && new WeakMap; + + /** Used to lookup unminified function names. */ + var realNames = {}; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` object which wraps `value` to enable implicit chaining. + * Methods that operate on and return arrays, collections, and functions can + * be chained together. Methods that return a boolean or single value will + * automatically end the chain returning the unwrapped value. Explicit chaining + * may be enabled using `_.chain`. The execution of chained methods is lazy, + * that is, execution is deferred until `_#value` is implicitly or explicitly + * called. + * + * Lazy evaluation allows several methods to support shortcut fusion. Shortcut + * fusion is an optimization that merges iteratees to avoid creating intermediate + * arrays and reduce the number of iteratee executions. + * + * Chaining is supported in custom builds as long as the `_#value` method is + * directly or indirectly included in the build. + * + * In addition to lodash methods, wrappers have `Array` and `String` methods. + * + * The wrapper `Array` methods are: + * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, + * `splice`, and `unshift` + * + * The wrapper `String` methods are: + * `replace` and `split` + * + * The wrapper methods that support shortcut fusion are: + * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`, + * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`, + * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`, + * and `where` + * + * The chainable wrapper methods are: + * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`, + * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`, + * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defer`, `delay`, + * `difference`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `fill`, + * `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, `forEach`, + * `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `functions`, + * `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, `invoke`, `keys`, + * `keysIn`, `map`, `mapValues`, `matches`, `matchesProperty`, `memoize`, + * `merge`, `mixin`, `negate`, `omit`, `once`, `pairs`, `partial`, `partialRight`, + * `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`, + * `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `reverse`, + * `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`, `sortByOrder`, `splice`, + * `spread`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `tap`, + * `throttle`, `thru`, `times`, `toArray`, `toPlainObject`, `transform`, + * `union`, `uniq`, `unshift`, `unzip`, `values`, `valuesIn`, `where`, + * `without`, `wrap`, `xor`, `zip`, and `zipObject` + * + * The wrapper methods that are **not** chainable by default are: + * `add`, `attempt`, `camelCase`, `capitalize`, `clone`, `cloneDeep`, `deburr`, + * `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, + * `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `has`, + * `identity`, `includes`, `indexOf`, `inRange`, `isArguments`, `isArray`, + * `isBoolean`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`, `isFinite` + * `isFunction`, `isMatch`, `isNative`, `isNaN`, `isNull`, `isNumber`, `isObject`, + * `isPlainObject`, `isRegExp`, `isString`, `isUndefined`, `isTypedArray`, + * `join`, `kebabCase`, `last`, `lastIndexOf`, `max`, `min`, `noConflict`, + * `noop`, `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`, `random`, + * `reduce`, `reduceRight`, `repeat`, `result`, `runInContext`, `shift`, `size`, + * `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`, `startCase`, `startsWith`, + * `sum`, `template`, `trim`, `trimLeft`, `trimRight`, `trunc`, `unescape`, + * `uniqueId`, `value`, and `words` + * + * The wrapper method `sample` will return a wrapped value when `n` is provided, + * otherwise an unwrapped value is returned. + * + * @name _ + * @constructor + * @category Chain + * @param {*} value The value to wrap in a `lodash` instance. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var wrapped = _([1, 2, 3]); + * + * // returns an unwrapped value + * wrapped.reduce(function(total, n) { + * return total + n; + * }); + * // => 6 + * + * // returns a wrapped value + * var squares = wrapped.map(function(n) { + * return n * n; + * }); + * + * _.isArray(squares); + * // => false + * + * _.isArray(squares.value()); + * // => true + */ + function lodash(value) { + if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { + if (value instanceof LodashWrapper) { + return value; + } + if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) { + return wrapperClone(value); + } + } + return new LodashWrapper(value); + } + + /** + * The function whose prototype all chaining wrappers inherit from. + * + * @private + */ + function baseLodash() { + // No operation performed. + } + + /** + * The base constructor for creating `lodash` wrapper objects. + * + * @private + * @param {*} value The value to wrap. + * @param {boolean} [chainAll] Enable chaining for all wrapper methods. + * @param {Array} [actions=[]] Actions to peform to resolve the unwrapped value. + */ + function LodashWrapper(value, chainAll, actions) { + this.__wrapped__ = value; + this.__actions__ = actions || []; + this.__chain__ = !!chainAll; + } + + /** + * An object environment feature flags. + * + * @static + * @memberOf _ + * @type Object + */ + var support = lodash.support = {}; + + (function(x) { + var Ctor = function() { this.x = x; }, + object = { '0': x, 'length': x }, + props = []; + + Ctor.prototype = { 'valueOf': x, 'y': x }; + for (var key in new Ctor) { props.push(key); } + + /** + * Detect if functions can be decompiled by `Function#toString` + * (all but Firefox OS certified apps, older Opera mobile browsers, and + * the PlayStation 3; forced `false` for Windows 8 apps). + * + * @memberOf _.support + * @type boolean + */ + support.funcDecomp = /\bthis\b/.test(function() { return this; }); + + /** + * Detect if `Function#name` is supported (all but IE). + * + * @memberOf _.support + * @type boolean + */ + support.funcNames = typeof Function.name == 'string'; + + /** + * Detect if the DOM is supported. + * + * @memberOf _.support + * @type boolean + */ + try { + support.dom = document.createDocumentFragment().nodeType === 11; + } catch(e) { + support.dom = false; + } + + /** + * Detect if `arguments` object indexes are non-enumerable. + * + * In Firefox < 4, IE < 9, PhantomJS, and Safari < 5.1 `arguments` object + * indexes are non-enumerable. Chrome < 25 and Node.js < 0.11.0 treat + * `arguments` object indexes as non-enumerable and fail `hasOwnProperty` + * checks for indexes that exceed the number of function parameters and + * whose associated argument values are `0`. + * + * @memberOf _.support + * @type boolean + */ + try { + support.nonEnumArgs = !propertyIsEnumerable.call(arguments, 1); + } catch(e) { + support.nonEnumArgs = true; + } + }(1, 0)); + + /** + * By default, the template delimiters used by lodash are like those in + * embedded Ruby (ERB). Change the following template settings to use + * alternative delimiters. + * + * @static + * @memberOf _ + * @type Object + */ + lodash.templateSettings = { + + /** + * Used to detect `data` property values to be HTML-escaped. + * + * @memberOf _.templateSettings + * @type RegExp + */ + 'escape': reEscape, + + /** + * Used to detect code to be evaluated. + * + * @memberOf _.templateSettings + * @type RegExp + */ + 'evaluate': reEvaluate, + + /** + * Used to detect `data` property values to inject. + * + * @memberOf _.templateSettings + * @type RegExp + */ + 'interpolate': reInterpolate, + + /** + * Used to reference the data object in the template text. + * + * @memberOf _.templateSettings + * @type string + */ + 'variable': '', + + /** + * Used to import variables into the compiled template. + * + * @memberOf _.templateSettings + * @type Object + */ + 'imports': { + + /** + * A reference to the `lodash` function. + * + * @memberOf _.templateSettings.imports + * @type Function + */ + '_': lodash + } + }; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. + * + * @private + * @param {*} value The value to wrap. + */ + function LazyWrapper(value) { + this.__wrapped__ = value; + this.__actions__ = null; + this.__dir__ = 1; + this.__dropCount__ = 0; + this.__filtered__ = false; + this.__iteratees__ = null; + this.__takeCount__ = POSITIVE_INFINITY; + this.__views__ = null; + } + + /** + * Creates a clone of the lazy wrapper object. + * + * @private + * @name clone + * @memberOf LazyWrapper + * @returns {Object} Returns the cloned `LazyWrapper` object. + */ + function lazyClone() { + var actions = this.__actions__, + iteratees = this.__iteratees__, + views = this.__views__, + result = new LazyWrapper(this.__wrapped__); + + result.__actions__ = actions ? arrayCopy(actions) : null; + result.__dir__ = this.__dir__; + result.__filtered__ = this.__filtered__; + result.__iteratees__ = iteratees ? arrayCopy(iteratees) : null; + result.__takeCount__ = this.__takeCount__; + result.__views__ = views ? arrayCopy(views) : null; + return result; + } + + /** + * Reverses the direction of lazy iteration. + * + * @private + * @name reverse + * @memberOf LazyWrapper + * @returns {Object} Returns the new reversed `LazyWrapper` object. + */ + function lazyReverse() { + if (this.__filtered__) { + var result = new LazyWrapper(this); + result.__dir__ = -1; + result.__filtered__ = true; + } else { + result = this.clone(); + result.__dir__ *= -1; + } + return result; + } + + /** + * Extracts the unwrapped value from its lazy wrapper. + * + * @private + * @name value + * @memberOf LazyWrapper + * @returns {*} Returns the unwrapped value. + */ + function lazyValue() { + var array = this.__wrapped__.value(); + if (!isArray(array)) { + return baseWrapperValue(array, this.__actions__); + } + var dir = this.__dir__, + isRight = dir < 0, + view = getView(0, array.length, this.__views__), + start = view.start, + end = view.end, + length = end - start, + index = isRight ? end : (start - 1), + takeCount = nativeMin(length, this.__takeCount__), + iteratees = this.__iteratees__, + iterLength = iteratees ? iteratees.length : 0, + resIndex = 0, + result = []; + + outer: + while (length-- && resIndex < takeCount) { + index += dir; + + var iterIndex = -1, + value = array[index]; + + while (++iterIndex < iterLength) { + var data = iteratees[iterIndex], + iteratee = data.iteratee, + type = data.type; + + if (type == LAZY_DROP_WHILE_FLAG) { + if (data.done && (isRight ? (index > data.index) : (index < data.index))) { + data.count = 0; + data.done = false; + } + data.index = index; + if (!data.done) { + var limit = data.limit; + if (!(data.done = limit > -1 ? (data.count++ >= limit) : !iteratee(value))) { + continue outer; + } + } + } else { + var computed = iteratee(value); + if (type == LAZY_MAP_FLAG) { + value = computed; + } else if (!computed) { + if (type == LAZY_FILTER_FLAG) { + continue outer; + } else { + break outer; + } + } + } + } + result[resIndex++] = value; + } + return result; + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates a cache object to store key/value pairs. + * + * @private + * @static + * @name Cache + * @memberOf _.memoize + */ + function MapCache() { + this.__data__ = {}; + } + + /** + * Removes `key` and its value from the cache. + * + * @private + * @name delete + * @memberOf _.memoize.Cache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed successfully, else `false`. + */ + function mapDelete(key) { + return this.has(key) && delete this.__data__[key]; + } + + /** + * Gets the cached value for `key`. + * + * @private + * @name get + * @memberOf _.memoize.Cache + * @param {string} key The key of the value to get. + * @returns {*} Returns the cached value. + */ + function mapGet(key) { + return key == '__proto__' ? undefined : this.__data__[key]; + } + + /** + * Checks if a cached value for `key` exists. + * + * @private + * @name has + * @memberOf _.memoize.Cache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function mapHas(key) { + return key != '__proto__' && hasOwnProperty.call(this.__data__, key); + } + + /** + * Sets `value` to `key` of the cache. + * + * @private + * @name set + * @memberOf _.memoize.Cache + * @param {string} key The key of the value to cache. + * @param {*} value The value to cache. + * @returns {Object} Returns the cache object. + */ + function mapSet(key, value) { + if (key != '__proto__') { + this.__data__[key] = value; + } + return this; + } + + /*------------------------------------------------------------------------*/ + + /** + * + * Creates a cache object to store unique values. + * + * @private + * @param {Array} [values] The values to cache. + */ + function SetCache(values) { + var length = values ? values.length : 0; + + this.data = { 'hash': nativeCreate(null), 'set': new Set }; + while (length--) { + this.push(values[length]); + } + } + + /** + * Checks if `value` is in `cache` mimicking the return signature of + * `_.indexOf` by returning `0` if the value is found, else `-1`. + * + * @private + * @param {Object} cache The cache to search. + * @param {*} value The value to search for. + * @returns {number} Returns `0` if `value` is found, else `-1`. + */ + function cacheIndexOf(cache, value) { + var data = cache.data, + result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value]; + + return result ? 0 : -1; + } + + /** + * Adds `value` to the cache. + * + * @private + * @name push + * @memberOf SetCache + * @param {*} value The value to cache. + */ + function cachePush(value) { + var data = this.data; + if (typeof value == 'string' || isObject(value)) { + data.set.add(value); + } else { + data.hash[value] = true; + } + } + + /*------------------------------------------------------------------------*/ + + /** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ + function arrayCopy(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } + + /** + * A specialized version of `_.forEach` for arrays without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEach(array, iteratee) { + var index = -1, + length = array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.forEachRight` for arrays without support for + * callback shorthands and `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEachRight(array, iteratee) { + var length = array.length; + + while (length--) { + if (iteratee(array[length], length, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.every` for arrays without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + */ + function arrayEvery(array, predicate) { + var index = -1, + length = array.length; + + while (++index < length) { + if (!predicate(array[index], index, array)) { + return false; + } + } + return true; + } + + /** + * A specialized version of `_.filter` for arrays without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function arrayFilter(array, predicate) { + var index = -1, + length = array.length, + resIndex = -1, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[++resIndex] = value; + } + } + return result; + } + + /** + * A specialized version of `_.map` for arrays without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function arrayMap(array, iteratee) { + var index = -1, + length = array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; + } + + /** + * A specialized version of `_.max` for arrays without support for iteratees. + * + * @private + * @param {Array} array The array to iterate over. + * @returns {*} Returns the maximum value. + */ + function arrayMax(array) { + var index = -1, + length = array.length, + result = NEGATIVE_INFINITY; + + while (++index < length) { + var value = array[index]; + if (value > result) { + result = value; + } + } + return result; + } + + /** + * A specialized version of `_.min` for arrays without support for iteratees. + * + * @private + * @param {Array} array The array to iterate over. + * @returns {*} Returns the minimum value. + */ + function arrayMin(array) { + var index = -1, + length = array.length, + result = POSITIVE_INFINITY; + + while (++index < length) { + var value = array[index]; + if (value < result) { + result = value; + } + } + return result; + } + + /** + * A specialized version of `_.reduce` for arrays without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initFromArray] Specify using the first element of `array` + * as the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduce(array, iteratee, accumulator, initFromArray) { + var index = -1, + length = array.length; + + if (initFromArray && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; + } + + /** + * A specialized version of `_.reduceRight` for arrays without support for + * callback shorthands and `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initFromArray] Specify using the last element of `array` + * as the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduceRight(array, iteratee, accumulator, initFromArray) { + var length = array.length; + if (initFromArray && length) { + accumulator = array[--length]; + } + while (length--) { + accumulator = iteratee(accumulator, array[length], length, array); + } + return accumulator; + } + + /** + * A specialized version of `_.some` for arrays without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function arraySome(array, predicate) { + var index = -1, + length = array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; + } + + /** + * A specialized version of `_.sum` for arrays without support for iteratees. + * + * @private + * @param {Array} array The array to iterate over. + * @returns {number} Returns the sum. + */ + function arraySum(array) { + var length = array.length, + result = 0; + + while (length--) { + result += +array[length] || 0; + } + return result; + } + + /** + * Used by `_.defaults` to customize its `_.assign` use. + * + * @private + * @param {*} objectValue The destination object property value. + * @param {*} sourceValue The source object property value. + * @returns {*} Returns the value to assign to the destination object. + */ + function assignDefaults(objectValue, sourceValue) { + return objectValue === undefined ? sourceValue : objectValue; + } + + /** + * Used by `_.template` to customize its `_.assign` use. + * + * **Note:** This function is like `assignDefaults` except that it ignores + * inherited property values when checking if a property is `undefined`. + * + * @private + * @param {*} objectValue The destination object property value. + * @param {*} sourceValue The source object property value. + * @param {string} key The key associated with the object and source values. + * @param {Object} object The destination object. + * @returns {*} Returns the value to assign to the destination object. + */ + function assignOwnDefaults(objectValue, sourceValue, key, object) { + return (objectValue === undefined || !hasOwnProperty.call(object, key)) + ? sourceValue + : objectValue; + } + + /** + * A specialized version of `_.assign` for customizing assigned values without + * support for argument juggling, multiple sources, and `this` binding `customizer` + * functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {Function} customizer The function to customize assigned values. + * @returns {Object} Returns `object`. + */ + function assignWith(object, source, customizer) { + var props = keys(source); + push.apply(props, getSymbols(source)); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index], + value = object[key], + result = customizer(value, source[key], key, object, source); + + if ((result === result ? (result !== value) : (value === value)) || + (value === undefined && !(key in object))) { + object[key] = result; + } + } + return object; + } + + /** + * The base implementation of `_.assign` without support for argument juggling, + * multiple sources, and `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + var baseAssign = nativeAssign || function(object, source) { + return source == null + ? object + : baseCopy(source, getSymbols(source), baseCopy(source, keys(source), object)); + }; + + /** + * The base implementation of `_.at` without support for string collections + * and individual key arguments. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {number[]|string[]} props The property names or indexes of elements to pick. + * @returns {Array} Returns the new array of picked elements. + */ + function baseAt(collection, props) { + var index = -1, + length = collection.length, + isArr = isLength(length), + propsLength = props.length, + result = Array(propsLength); + + while(++index < propsLength) { + var key = props[index]; + if (isArr) { + result[index] = isIndex(key, length) ? collection[key] : undefined; + } else { + result[index] = collection[key]; + } + } + return result; + } + + /** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property names to copy. + * @param {Object} [object={}] The object to copy properties to. + * @returns {Object} Returns `object`. + */ + function baseCopy(source, props, object) { + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + object[key] = source[key]; + } + return object; + } + + /** + * The base implementation of `_.callback` which supports specifying the + * number of arguments to provide to `func`. + * + * @private + * @param {*} [func=_.identity] The value to convert to a callback. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {number} [argCount] The number of arguments to provide to `func`. + * @returns {Function} Returns the callback. + */ + function baseCallback(func, thisArg, argCount) { + var type = typeof func; + if (type == 'function') { + return thisArg === undefined + ? func + : bindCallback(func, thisArg, argCount); + } + if (func == null) { + return identity; + } + if (type == 'object') { + return baseMatches(func); + } + return thisArg === undefined + ? property(func) + : baseMatchesProperty(func, thisArg); + } + + /** + * The base implementation of `_.clone` without support for argument juggling + * and `this` binding `customizer` functions. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @param {Function} [customizer] The function to customize cloning values. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The object `value` belongs to. + * @param {Array} [stackA=[]] Tracks traversed source objects. + * @param {Array} [stackB=[]] Associates clones with source counterparts. + * @returns {*} Returns the cloned value. + */ + function baseClone(value, isDeep, customizer, key, object, stackA, stackB) { + var result; + if (customizer) { + result = object ? customizer(value, key, object) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return arrayCopy(value, result); + } + } else { + var tag = objToString.call(value), + isFunc = tag == funcTag; + + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = initCloneObject(isFunc ? {} : value); + if (!isDeep) { + return baseAssign(result, value); + } + } else { + return cloneableTags[tag] + ? initCloneByTag(value, tag, isDeep) + : (object ? value : {}); + } + } + // Check for circular references and return corresponding clone. + stackA || (stackA = []); + stackB || (stackB = []); + + var length = stackA.length; + while (length--) { + if (stackA[length] == value) { + return stackB[length]; + } + } + // Add the source value to the stack of traversed objects and associate it with its clone. + stackA.push(value); + stackB.push(result); + + // Recursively populate clone (susceptible to call stack limits). + (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) { + result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB); + }); + return result; + } + + /** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} prototype The object to inherit from. + * @returns {Object} Returns the new object. + */ + var baseCreate = (function() { + function Object() {} + return function(prototype) { + if (isObject(prototype)) { + Object.prototype = prototype; + var result = new Object; + Object.prototype = null; + } + return result || context.Object(); + }; + }()); + + /** + * The base implementation of `_.delay` and `_.defer` which accepts an index + * of where to slice the arguments to provide to `func`. + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {Object} args The arguments provide to `func`. + * @returns {number} Returns the timer id. + */ + function baseDelay(func, wait, args) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return setTimeout(function() { func.apply(undefined, args); }, wait); + } + + /** + * The base implementation of `_.difference` which accepts a single array + * of values to exclude. + * + * @private + * @param {Array} array The array to inspect. + * @param {Array} values The values to exclude. + * @returns {Array} Returns the new array of filtered values. + */ + function baseDifference(array, values) { + var length = array ? array.length : 0, + result = []; + + if (!length) { + return result; + } + var index = -1, + indexOf = getIndexOf(), + isCommon = indexOf == baseIndexOf, + cache = (isCommon && values.length >= 200) ? createCache(values) : null, + valuesLength = values.length; + + if (cache) { + indexOf = cacheIndexOf; + isCommon = false; + values = cache; + } + outer: + while (++index < length) { + var value = array[index]; + + if (isCommon && value === value) { + var valuesIndex = valuesLength; + while (valuesIndex--) { + if (values[valuesIndex] === value) { + continue outer; + } + } + result.push(value); + } + else if (indexOf(values, value, 0) < 0) { + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.forEach` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object|string} Returns `collection`. + */ + var baseEach = createBaseEach(baseForOwn); + + /** + * The base implementation of `_.forEachRight` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object|string} Returns `collection`. + */ + var baseEachRight = createBaseEach(baseForOwnRight, true); + + /** + * The base implementation of `_.every` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false` + */ + function baseEvery(collection, predicate) { + var result = true; + baseEach(collection, function(value, index, collection) { + result = !!predicate(value, index, collection); + return result; + }); + return result; + } + + /** + * The base implementation of `_.fill` without an iteratee call guard. + * + * @private + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + */ + function baseFill(array, value, start, end) { + var length = array.length; + + start = start == null ? 0 : (+start || 0); + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = (end === undefined || end > length) ? length : (+end || 0); + if (end < 0) { + end += length; + } + length = start > end ? 0 : (end >>> 0); + start >>>= 0; + + while (start < length) { + array[start++] = value; + } + return array; + } + + /** + * The base implementation of `_.filter` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function baseFilter(collection, predicate) { + var result = []; + baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; + } + + /** + * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`, + * without support for callback shorthands and `this` binding, which iterates + * over `collection` using the provided `eachFunc`. + * + * @private + * @param {Array|Object|string} collection The collection to search. + * @param {Function} predicate The function invoked per iteration. + * @param {Function} eachFunc The function to iterate over `collection`. + * @param {boolean} [retKey] Specify returning the key of the found element + * instead of the element itself. + * @returns {*} Returns the found element or its key, else `undefined`. + */ + function baseFind(collection, predicate, eachFunc, retKey) { + var result; + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = retKey ? key : value; + return false; + } + }); + return result; + } + + /** + * The base implementation of `_.flatten` with added support for restricting + * flattening and specifying the start index. + * + * @private + * @param {Array} array The array to flatten. + * @param {boolean} isDeep Specify a deep flatten. + * @param {boolean} isStrict Restrict flattening to arrays and `arguments` objects. + * @returns {Array} Returns the new flattened array. + */ + function baseFlatten(array, isDeep, isStrict) { + var index = -1, + length = array.length, + resIndex = -1, + result = []; + + while (++index < length) { + var value = array[index]; + + if (isObjectLike(value) && isLength(value.length) && (isArray(value) || isArguments(value))) { + if (isDeep) { + // Recursively flatten arrays (susceptible to call stack limits). + value = baseFlatten(value, isDeep, isStrict); + } + var valIndex = -1, + valLength = value.length; + + result.length += valLength; + while (++valIndex < valLength) { + result[++resIndex] = value[valIndex]; + } + } else if (!isStrict) { + result[++resIndex] = value; + } + } + return result; + } + + /** + * The base implementation of `baseForIn` and `baseForOwn` which iterates + * over `object` properties returned by `keysFunc` invoking `iteratee` for + * each property. Iteratee functions may exit iteration early by explicitly + * returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseFor = createBaseFor(); + + /** + * This function is like `baseFor` except that it iterates over properties + * in the opposite order. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseForRight = createBaseFor(true); + + /** + * The base implementation of `_.forIn` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForIn(object, iteratee) { + return baseFor(object, iteratee, keysIn); + } + + /** + * The base implementation of `_.forOwn` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwn(object, iteratee) { + return baseFor(object, iteratee, keys); + } + + /** + * The base implementation of `_.forOwnRight` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwnRight(object, iteratee) { + return baseForRight(object, iteratee, keys); + } + + /** + * The base implementation of `_.functions` which creates an array of + * `object` function property names filtered from those provided. + * + * @private + * @param {Object} object The object to inspect. + * @param {Array} props The property names to filter. + * @returns {Array} Returns the new array of filtered property names. + */ + function baseFunctions(object, props) { + var index = -1, + length = props.length, + resIndex = -1, + result = []; + + while (++index < length) { + var key = props[index]; + if (isFunction(object[key])) { + result[++resIndex] = key; + } + } + return result; + } + + /** + * The base implementation of `get` without support for string paths + * and default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array} path The path of the property to get. + * @param {string} [pathKey] The key representation of path. + * @returns {*} Returns the resolved value. + */ + function baseGet(object, path, pathKey) { + if (object == null) { + return; + } + if (pathKey !== undefined && pathKey in toObject(object)) { + path = [pathKey]; + } + var index = -1, + length = path.length; + + while (object != null && ++index < length) { + var result = object = object[path[index]]; + } + return result; + } + + /** + * The base implementation of `_.isEqual` without support for `this` binding + * `customizer` functions. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparing values. + * @param {boolean} [isLoose] Specify performing partial comparisons. + * @param {Array} [stackA] Tracks traversed `value` objects. + * @param {Array} [stackB] Tracks traversed `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ + function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) { + // Exit early for identical values. + if (value === other) { + // Treat `+0` vs. `-0` as not equal. + return value !== 0 || (1 / value == 1 / other); + } + var valType = typeof value, + othType = typeof other; + + // Exit early for unlike primitive values. + if ((valType != 'function' && valType != 'object' && othType != 'function' && othType != 'object') || + value == null || other == null) { + // Return `false` unless both values are `NaN`. + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB); + } + + /** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} [customizer] The function to customize comparing objects. + * @param {boolean} [isLoose] Specify performing partial comparisons. + * @param {Array} [stackA=[]] Tracks traversed `value` objects. + * @param {Array} [stackB=[]] Tracks traversed `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, stackA, stackB) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = arrayTag, + othTag = arrayTag; + + if (!objIsArr) { + objTag = objToString.call(object); + if (objTag == argsTag) { + objTag = objectTag; + } else if (objTag != objectTag) { + objIsArr = isTypedArray(object); + } + } + if (!othIsArr) { + othTag = objToString.call(other); + if (othTag == argsTag) { + othTag = objectTag; + } else if (othTag != objectTag) { + othIsArr = isTypedArray(other); + } + } + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && !(objIsArr || objIsObj)) { + return equalByTag(object, other, objTag); + } + if (!isLoose) { + var valWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (valWrapped || othWrapped) { + return equalFunc(valWrapped ? object.value() : object, othWrapped ? other.value() : other, customizer, isLoose, stackA, stackB); + } + } + if (!isSameTag) { + return false; + } + // Assume cyclic values are equal. + // For more information on detecting circular references see https://es5.github.io/#JO. + stackA || (stackA = []); + stackB || (stackB = []); + + var length = stackA.length; + while (length--) { + if (stackA[length] == object) { + return stackB[length] == other; + } + } + // Add `object` and `other` to the stack of traversed objects. + stackA.push(object); + stackB.push(other); + + var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isLoose, stackA, stackB); + + stackA.pop(); + stackB.pop(); + + return result; + } + + /** + * The base implementation of `_.isMatch` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Object} object The object to inspect. + * @param {Array} props The source property names to match. + * @param {Array} values The source values to match. + * @param {Array} strictCompareFlags Strict comparison flags for source values. + * @param {Function} [customizer] The function to customize comparing objects. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ + function baseIsMatch(object, props, values, strictCompareFlags, customizer) { + var index = -1, + length = props.length, + noCustomizer = !customizer; + + while (++index < length) { + if ((noCustomizer && strictCompareFlags[index]) + ? values[index] !== object[props[index]] + : !(props[index] in object) + ) { + return false; + } + } + index = -1; + while (++index < length) { + var key = props[index], + objValue = object[key], + srcValue = values[index]; + + if (noCustomizer && strictCompareFlags[index]) { + var result = objValue !== undefined || (key in object); + } else { + result = customizer ? customizer(objValue, srcValue, key) : undefined; + if (result === undefined) { + result = baseIsEqual(srcValue, objValue, customizer, true); + } + } + if (!result) { + return false; + } + } + return true; + } + + /** + * The base implementation of `_.map` without support for callback shorthands + * and `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function baseMap(collection, iteratee) { + var index = -1, + length = getLength(collection), + result = isLength(length) ? Array(length) : []; + + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; + } + + /** + * The base implementation of `_.matches` which does not clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new function. + */ + function baseMatches(source) { + var props = keys(source), + length = props.length; + + if (!length) { + return constant(true); + } + if (length == 1) { + var key = props[0], + value = source[key]; + + if (isStrictComparable(value)) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === value && (value !== undefined || (key in toObject(object))); + }; + } + } + var values = Array(length), + strictCompareFlags = Array(length); + + while (length--) { + value = source[props[length]]; + values[length] = value; + strictCompareFlags[length] = isStrictComparable(value); + } + return function(object) { + return object != null && baseIsMatch(toObject(object), props, values, strictCompareFlags); + }; + } + + /** + * The base implementation of `_.matchesProperty` which does not which does + * not clone `value`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} value The value to compare. + * @returns {Function} Returns the new function. + */ + function baseMatchesProperty(path, value) { + var isArr = isArray(path), + isCommon = isKey(path) && isStrictComparable(value), + pathKey = (path + ''); + + path = toPath(path); + return function(object) { + if (object == null) { + return false; + } + var key = pathKey; + object = toObject(object); + if ((isArr || !isCommon) && !(key in object)) { + object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); + if (object == null) { + return false; + } + key = last(path); + object = toObject(object); + } + return object[key] === value + ? (value !== undefined || (key in object)) + : baseIsEqual(value, object[key], null, true); + }; + } + + /** + * The base implementation of `_.merge` without support for argument juggling, + * multiple sources, and `this` binding `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {Function} [customizer] The function to customize merging properties. + * @param {Array} [stackA=[]] Tracks traversed source objects. + * @param {Array} [stackB=[]] Associates values with source counterparts. + * @returns {Object} Returns `object`. + */ + function baseMerge(object, source, customizer, stackA, stackB) { + if (!isObject(object)) { + return object; + } + var isSrcArr = isLength(source.length) && (isArray(source) || isTypedArray(source)); + if (!isSrcArr) { + var props = keys(source); + push.apply(props, getSymbols(source)); + } + arrayEach(props || source, function(srcValue, key) { + if (props) { + key = srcValue; + srcValue = source[key]; + } + if (isObjectLike(srcValue)) { + stackA || (stackA = []); + stackB || (stackB = []); + baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB); + } + else { + var value = object[key], + result = customizer ? customizer(value, srcValue, key, object, source) : undefined, + isCommon = result === undefined; + + if (isCommon) { + result = srcValue; + } + if ((isSrcArr || result !== undefined) && + (isCommon || (result === result ? (result !== value) : (value === value)))) { + object[key] = result; + } + } + }); + return object; + } + + /** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize merging properties. + * @param {Array} [stackA=[]] Tracks traversed source objects. + * @param {Array} [stackB=[]] Associates values with source counterparts. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) { + var length = stackA.length, + srcValue = source[key]; + + while (length--) { + if (stackA[length] == srcValue) { + object[key] = stackB[length]; + return; + } + } + var value = object[key], + result = customizer ? customizer(value, srcValue, key, object, source) : undefined, + isCommon = result === undefined; + + if (isCommon) { + result = srcValue; + if (isLength(srcValue.length) && (isArray(srcValue) || isTypedArray(srcValue))) { + result = isArray(value) + ? value + : (getLength(value) ? arrayCopy(value) : []); + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + result = isArguments(value) + ? toPlainObject(value) + : (isPlainObject(value) ? value : {}); + } + else { + isCommon = false; + } + } + // Add the source value to the stack of traversed objects and associate + // it with its merged value. + stackA.push(srcValue); + stackB.push(result); + + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB); + } else if (result === result ? (result !== value) : (value === value)) { + object[key] = result; + } + } + + /** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new function. + */ + function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; + } + + /** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new function. + */ + function basePropertyDeep(path) { + var pathKey = (path + ''); + path = toPath(path); + return function(object) { + return baseGet(object, path, pathKey); + }; + } + + /** + * The base implementation of `_.pullAt` without support for individual + * index arguments and capturing the removed elements. + * + * @private + * @param {Array} array The array to modify. + * @param {number[]} indexes The indexes of elements to remove. + * @returns {Array} Returns `array`. + */ + function basePullAt(array, indexes) { + var length = indexes.length; + while (length--) { + var index = parseFloat(indexes[length]); + if (index != previous && isIndex(index)) { + var previous = index; + splice.call(array, index, 1); + } + } + return array; + } + + /** + * The base implementation of `_.random` without support for argument juggling + * and returning floating-point numbers. + * + * @private + * @param {number} min The minimum possible value. + * @param {number} max The maximum possible value. + * @returns {number} Returns the random number. + */ + function baseRandom(min, max) { + return min + floor(nativeRandom() * (max - min + 1)); + } + + /** + * The base implementation of `_.reduce` and `_.reduceRight` without support + * for callback shorthands and `this` binding, which iterates over `collection` + * using the provided `eachFunc`. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initFromCollection Specify using the first or last element + * of `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ + function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initFromCollection + ? (initFromCollection = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; + } + + /** + * The base implementation of `setData` without support for hot loop detection. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var baseSetData = !metaMap ? identity : function(func, data) { + metaMap.set(func, data); + return func; + }; + + /** + * The base implementation of `_.slice` without an iteratee call guard. + * + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + start = start == null ? 0 : (+start || 0); + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = (end === undefined || end > length) ? length : (+end || 0); + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; + } + + /** + * The base implementation of `_.some` without support for callback shorthands + * and `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function baseSome(collection, predicate) { + var result; + + baseEach(collection, function(value, index, collection) { + result = predicate(value, index, collection); + return !result; + }); + return !!result; + } + + /** + * The base implementation of `_.sortBy` which uses `comparer` to define + * the sort order of `array` and replaces criteria objects with their + * corresponding values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ + function baseSortBy(array, comparer) { + var length = array.length; + + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; + } + + /** + * The base implementation of `_.sortByOrder` without param guards. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {boolean[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ + function baseSortByOrder(collection, iteratees, orders) { + var callback = getCallback(), + index = -1; + + iteratees = arrayMap(iteratees, function(iteratee) { return callback(iteratee); }); + + var result = baseMap(collection, function(value) { + var criteria = arrayMap(iteratees, function(iteratee) { return iteratee(value); }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); + + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); + } + + /** + * The base implementation of `_.sum` without support for callback shorthands + * and `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the sum. + */ + function baseSum(collection, iteratee) { + var result = 0; + baseEach(collection, function(value, index, collection) { + result += +iteratee(value, index, collection) || 0; + }); + return result; + } + + /** + * The base implementation of `_.uniq` without support for callback shorthands + * and `this` binding. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The function invoked per iteration. + * @returns {Array} Returns the new duplicate-value-free array. + */ + function baseUniq(array, iteratee) { + var index = -1, + indexOf = getIndexOf(), + length = array.length, + isCommon = indexOf == baseIndexOf, + isLarge = isCommon && length >= 200, + seen = isLarge ? createCache() : null, + result = []; + + if (seen) { + indexOf = cacheIndexOf; + isCommon = false; + } else { + isLarge = false; + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value, index, array) : value; + + if (isCommon && value === value) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (indexOf(seen, computed, 0) < 0) { + if (iteratee || isLarge) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ + function baseValues(object, props) { + var index = -1, + length = props.length, + result = Array(length); + + while (++index < length) { + result[index] = object[props[index]]; + } + return result; + } + + /** + * The base implementation of `_.dropRightWhile`, `_.dropWhile`, `_.takeRightWhile`, + * and `_.takeWhile` without support for callback shorthands and `this` binding. + * + * @private + * @param {Array} array The array to query. + * @param {Function} predicate The function invoked per iteration. + * @param {boolean} [isDrop] Specify dropping elements instead of taking them. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the slice of `array`. + */ + function baseWhile(array, predicate, isDrop, fromRight) { + var length = array.length, + index = fromRight ? length : -1; + + while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) {} + return isDrop + ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) + : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); + } + + /** + * The base implementation of `wrapperValue` which returns the result of + * performing a sequence of actions on the unwrapped `value`, where each + * successive action is supplied the return value of the previous. + * + * @private + * @param {*} value The unwrapped value. + * @param {Array} actions Actions to peform to resolve the unwrapped value. + * @returns {*} Returns the resolved value. + */ + function baseWrapperValue(value, actions) { + var result = value; + if (result instanceof LazyWrapper) { + result = result.value(); + } + var index = -1, + length = actions.length; + + while (++index < length) { + var args = [result], + action = actions[index]; + + push.apply(args, action.args); + result = action.func.apply(action.thisArg, args); + } + return result; + } + + /** + * Performs a binary search of `array` to determine the index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function binaryIndex(array, value, retHighest) { + var low = 0, + high = array ? array.length : low; + + if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { + while (low < high) { + var mid = (low + high) >>> 1, + computed = array[mid]; + + if (retHighest ? (computed <= value) : (computed < value)) { + low = mid + 1; + } else { + high = mid; + } + } + return high; + } + return binaryIndexBy(array, value, identity, retHighest); + } + + /** + * This function is like `binaryIndex` except that it invokes `iteratee` for + * `value` and each element of `array` to compute their sort ranking. The + * iteratee is invoked with one argument; (value). + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} iteratee The function invoked per iteration. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function binaryIndexBy(array, value, iteratee, retHighest) { + value = iteratee(value); + + var low = 0, + high = array ? array.length : 0, + valIsNaN = value !== value, + valIsUndef = value === undefined; + + while (low < high) { + var mid = floor((low + high) / 2), + computed = iteratee(array[mid]), + isReflexive = computed === computed; + + if (valIsNaN) { + var setLow = isReflexive || retHighest; + } else if (valIsUndef) { + setLow = isReflexive && (retHighest || computed !== undefined); + } else { + setLow = retHighest ? (computed <= value) : (computed < value); + } + if (setLow) { + low = mid + 1; + } else { + high = mid; + } + } + return nativeMin(high, MAX_ARRAY_INDEX); + } + + /** + * A specialized version of `baseCallback` which only supports `this` binding + * and specifying the number of arguments to provide to `func`. + * + * @private + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {number} [argCount] The number of arguments to provide to `func`. + * @returns {Function} Returns the callback. + */ + function bindCallback(func, thisArg, argCount) { + if (typeof func != 'function') { + return identity; + } + if (thisArg === undefined) { + return func; + } + switch (argCount) { + case 1: return function(value) { + return func.call(thisArg, value); + }; + case 3: return function(value, index, collection) { + return func.call(thisArg, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(thisArg, accumulator, value, index, collection); + }; + case 5: return function(value, other, key, object, source) { + return func.call(thisArg, value, other, key, object, source); + }; + } + return function() { + return func.apply(thisArg, arguments); + }; + } + + /** + * Creates a clone of the given array buffer. + * + * @private + * @param {ArrayBuffer} buffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ + function bufferClone(buffer) { + return bufferSlice.call(buffer, 0); + } + if (!bufferSlice) { + // PhantomJS has `ArrayBuffer` and `Uint8Array` but not `Float64Array`. + bufferClone = !(ArrayBuffer && Uint8Array) ? constant(null) : function(buffer) { + var byteLength = buffer.byteLength, + floatLength = Float64Array ? floor(byteLength / FLOAT64_BYTES_PER_ELEMENT) : 0, + offset = floatLength * FLOAT64_BYTES_PER_ELEMENT, + result = new ArrayBuffer(byteLength); + + if (floatLength) { + var view = new Float64Array(result, 0, floatLength); + view.set(new Float64Array(buffer, 0, floatLength)); + } + if (byteLength != offset) { + view = new Uint8Array(result, offset); + view.set(new Uint8Array(buffer, offset)); + } + return result; + }; + } + + /** + * Creates an array that is the composition of partially applied arguments, + * placeholders, and provided arguments into a single array of arguments. + * + * @private + * @param {Array|Object} args The provided arguments. + * @param {Array} partials The arguments to prepend to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgs(args, partials, holders) { + var holdersLength = holders.length, + argsIndex = -1, + argsLength = nativeMax(args.length - holdersLength, 0), + leftIndex = -1, + leftLength = partials.length, + result = Array(argsLength + leftLength); + + while (++leftIndex < leftLength) { + result[leftIndex] = partials[leftIndex]; + } + while (++argsIndex < holdersLength) { + result[holders[argsIndex]] = args[argsIndex]; + } + while (argsLength--) { + result[leftIndex++] = args[argsIndex++]; + } + return result; + } + + /** + * This function is like `composeArgs` except that the arguments composition + * is tailored for `_.partialRight`. + * + * @private + * @param {Array|Object} args The provided arguments. + * @param {Array} partials The arguments to append to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgsRight(args, partials, holders) { + var holdersIndex = -1, + holdersLength = holders.length, + argsIndex = -1, + argsLength = nativeMax(args.length - holdersLength, 0), + rightIndex = -1, + rightLength = partials.length, + result = Array(argsLength + rightLength); + + while (++argsIndex < argsLength) { + result[argsIndex] = args[argsIndex]; + } + var pad = argsIndex; + while (++rightIndex < rightLength) { + result[pad + rightIndex] = partials[rightIndex]; + } + while (++holdersIndex < holdersLength) { + result[pad + holders[holdersIndex]] = args[argsIndex++]; + } + return result; + } + + /** + * Creates a function that aggregates a collection, creating an accumulator + * object composed from the results of running each element in the collection + * through an iteratee. + * + * **Note:** This function is used to create `_.countBy`, `_.groupBy`, `_.indexBy`, + * and `_.partition`. + * + * @private + * @param {Function} setter The function to set keys and values of the accumulator object. + * @param {Function} [initializer] The function to initialize the accumulator object. + * @returns {Function} Returns the new aggregator function. + */ + function createAggregator(setter, initializer) { + return function(collection, iteratee, thisArg) { + var result = initializer ? initializer() : {}; + iteratee = getCallback(iteratee, thisArg, 3); + + if (isArray(collection)) { + var index = -1, + length = collection.length; + + while (++index < length) { + var value = collection[index]; + setter(result, value, iteratee(value, index, collection), collection); + } + } else { + baseEach(collection, function(value, key, collection) { + setter(result, value, iteratee(value, key, collection), collection); + }); + } + return result; + }; + } + + /** + * Creates a function that assigns properties of source object(s) to a given + * destination object. + * + * **Note:** This function is used to create `_.assign`, `_.defaults`, and `_.merge`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ + function createAssigner(assigner) { + return restParam(function(object, sources) { + var index = -1, + length = object == null ? 0 : sources.length, + customizer = length > 2 && sources[length - 2], + guard = length > 2 && sources[2], + thisArg = length > 1 && sources[length - 1]; + + if (typeof customizer == 'function') { + customizer = bindCallback(customizer, thisArg, 5); + length -= 2; + } else { + customizer = typeof thisArg == 'function' ? thisArg : null; + length -= (customizer ? 1 : 0); + } + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? null : customizer; + length = 1; + } + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, customizer); + } + } + return object; + }); + } + + /** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + var length = collection ? getLength(collection) : 0; + if (!isLength(length)) { + return eachFunc(collection, iteratee); + } + var index = fromRight ? length : -1, + iterable = toObject(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; + } + + /** + * Creates a base function for `_.forIn` or `_.forInRight`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var iterable = toObject(object), + props = keysFunc(object), + length = props.length, + index = fromRight ? length : -1; + + while ((fromRight ? index-- : ++index < length)) { + var key = props[index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; + } + + /** + * Creates a function that wraps `func` and invokes it with the `this` + * binding of `thisArg`. + * + * @private + * @param {Function} func The function to bind. + * @param {*} [thisArg] The `this` binding of `func`. + * @returns {Function} Returns the new bound function. + */ + function createBindWrapper(func, thisArg) { + var Ctor = createCtorWrapper(func); + + function wrapper() { + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return fn.apply(thisArg, arguments); + } + return wrapper; + } + + /** + * Creates a `Set` cache object to optimize linear searches of large arrays. + * + * @private + * @param {Array} [values] The values to cache. + * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`. + */ + var createCache = !(nativeCreate && Set) ? constant(null) : function(values) { + return new SetCache(values); + }; + + /** + * Creates a function that produces compound words out of the words in a + * given string. + * + * @private + * @param {Function} callback The function to combine each word. + * @returns {Function} Returns the new compounder function. + */ + function createCompounder(callback) { + return function(string) { + var index = -1, + array = words(deburr(string)), + length = array.length, + result = ''; + + while (++index < length) { + result = callback(result, array[index], index); + } + return result; + }; + } + + /** + * Creates a function that produces an instance of `Ctor` regardless of + * whether it was invoked as part of a `new` expression or by `call` or `apply`. + * + * @private + * @param {Function} Ctor The constructor to wrap. + * @returns {Function} Returns the new wrapped function. + */ + function createCtorWrapper(Ctor) { + return function() { + var thisBinding = baseCreate(Ctor.prototype), + result = Ctor.apply(thisBinding, arguments); + + // Mimic the constructor's `return` behavior. + // See https://es5.github.io/#x13.2.2 for more details. + return isObject(result) ? result : thisBinding; + }; + } + + /** + * Creates a `_.curry` or `_.curryRight` function. + * + * @private + * @param {boolean} flag The curry bit flag. + * @returns {Function} Returns the new curry function. + */ + function createCurry(flag) { + function curryFunc(func, arity, guard) { + if (guard && isIterateeCall(func, arity, guard)) { + arity = null; + } + var result = createWrapper(func, flag, null, null, null, null, null, arity); + result.placeholder = curryFunc.placeholder; + return result; + } + return curryFunc; + } + + /** + * Creates a `_.max` or `_.min` function. + * + * @private + * @param {Function} arrayFunc The function to get the extremum value from an array. + * @param {boolean} [isMin] Specify returning the minimum, instead of the maximum, + * extremum value. + * @returns {Function} Returns the new extremum function. + */ + function createExtremum(arrayFunc, isMin) { + return function(collection, iteratee, thisArg) { + if (thisArg && isIterateeCall(collection, iteratee, thisArg)) { + iteratee = null; + } + var func = getCallback(), + noIteratee = iteratee == null; + + if (!(func === baseCallback && noIteratee)) { + noIteratee = false; + iteratee = func(iteratee, thisArg, 3); + } + if (noIteratee) { + var isArr = isArray(collection); + if (!isArr && isString(collection)) { + iteratee = charAtCallback; + } else { + return arrayFunc(isArr ? collection : toIterable(collection)); + } + } + return extremumBy(collection, iteratee, isMin); + }; + } + + /** + * Creates a `_.find` or `_.findLast` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new find function. + */ + function createFind(eachFunc, fromRight) { + return function(collection, predicate, thisArg) { + predicate = getCallback(predicate, thisArg, 3); + if (isArray(collection)) { + var index = baseFindIndex(collection, predicate, fromRight); + return index > -1 ? collection[index] : undefined; + } + return baseFind(collection, predicate, eachFunc); + } + } + + /** + * Creates a `_.findIndex` or `_.findLastIndex` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new find function. + */ + function createFindIndex(fromRight) { + return function(array, predicate, thisArg) { + if (!(array && array.length)) { + return -1; + } + predicate = getCallback(predicate, thisArg, 3); + return baseFindIndex(array, predicate, fromRight); + }; + } + + /** + * Creates a `_.findKey` or `_.findLastKey` function. + * + * @private + * @param {Function} objectFunc The function to iterate over an object. + * @returns {Function} Returns the new find function. + */ + function createFindKey(objectFunc) { + return function(object, predicate, thisArg) { + predicate = getCallback(predicate, thisArg, 3); + return baseFind(object, predicate, objectFunc, true); + }; + } + + /** + * Creates a `_.flow` or `_.flowRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new flow function. + */ + function createFlow(fromRight) { + return function() { + var length = arguments.length; + if (!length) { + return function() { return arguments[0]; }; + } + var wrapper, + index = fromRight ? length : -1, + leftIndex = 0, + funcs = Array(length); + + while ((fromRight ? index-- : ++index < length)) { + var func = funcs[leftIndex++] = arguments[index]; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + var funcName = wrapper ? '' : getFuncName(func); + wrapper = funcName == 'wrapper' ? new LodashWrapper([]) : wrapper; + } + index = wrapper ? -1 : length; + while (++index < length) { + func = funcs[index]; + funcName = getFuncName(func); + + var data = funcName == 'wrapper' ? getData(func) : null; + if (data && isLaziable(data[0])) { + wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); + } else { + wrapper = (func.length == 1 && isLaziable(func)) ? wrapper[funcName]() : wrapper.thru(func); + } + } + return function() { + var args = arguments; + if (wrapper && args.length == 1 && isArray(args[0])) { + return wrapper.plant(args[0]).value(); + } + var index = 0, + result = funcs[index].apply(this, args); + + while (++index < length) { + result = funcs[index].call(this, result); + } + return result; + }; + }; + } + + /** + * Creates a function for `_.forEach` or `_.forEachRight`. + * + * @private + * @param {Function} arrayFunc The function to iterate over an array. + * @param {Function} eachFunc The function to iterate over a collection. + * @returns {Function} Returns the new each function. + */ + function createForEach(arrayFunc, eachFunc) { + return function(collection, iteratee, thisArg) { + return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection)) + ? arrayFunc(collection, iteratee) + : eachFunc(collection, bindCallback(iteratee, thisArg, 3)); + }; + } + + /** + * Creates a function for `_.forIn` or `_.forInRight`. + * + * @private + * @param {Function} objectFunc The function to iterate over an object. + * @returns {Function} Returns the new each function. + */ + function createForIn(objectFunc) { + return function(object, iteratee, thisArg) { + if (typeof iteratee != 'function' || thisArg !== undefined) { + iteratee = bindCallback(iteratee, thisArg, 3); + } + return objectFunc(object, iteratee, keysIn); + }; + } + + /** + * Creates a function for `_.forOwn` or `_.forOwnRight`. + * + * @private + * @param {Function} objectFunc The function to iterate over an object. + * @returns {Function} Returns the new each function. + */ + function createForOwn(objectFunc) { + return function(object, iteratee, thisArg) { + if (typeof iteratee != 'function' || thisArg !== undefined) { + iteratee = bindCallback(iteratee, thisArg, 3); + } + return objectFunc(object, iteratee); + }; + } + + /** + * Creates a function for `_.padLeft` or `_.padRight`. + * + * @private + * @param {boolean} [fromRight] Specify padding from the right. + * @returns {Function} Returns the new pad function. + */ + function createPadDir(fromRight) { + return function(string, length, chars) { + string = baseToString(string); + return string && ((fromRight ? string : '') + createPadding(string, length, chars) + (fromRight ? '' : string)); + }; + } + + /** + * Creates a `_.partial` or `_.partialRight` function. + * + * @private + * @param {boolean} flag The partial bit flag. + * @returns {Function} Returns the new partial function. + */ + function createPartial(flag) { + var partialFunc = restParam(function(func, partials) { + var holders = replaceHolders(partials, partialFunc.placeholder); + return createWrapper(func, flag, null, partials, holders); + }); + return partialFunc; + } + + /** + * Creates a function for `_.reduce` or `_.reduceRight`. + * + * @private + * @param {Function} arrayFunc The function to iterate over an array. + * @param {Function} eachFunc The function to iterate over a collection. + * @returns {Function} Returns the new each function. + */ + function createReduce(arrayFunc, eachFunc) { + return function(collection, iteratee, accumulator, thisArg) { + var initFromArray = arguments.length < 3; + return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection)) + ? arrayFunc(collection, iteratee, accumulator, initFromArray) + : baseReduce(collection, getCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc); + }; + } + + /** + * Creates a function that wraps `func` and invokes it with optional `this` + * binding of, partial application, and currying. + * + * @private + * @param {Function|string} func The function or method name to reference. + * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [partialsRight] The arguments to append to those provided to the new function. + * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { + var isAry = bitmask & ARY_FLAG, + isBind = bitmask & BIND_FLAG, + isBindKey = bitmask & BIND_KEY_FLAG, + isCurry = bitmask & CURRY_FLAG, + isCurryBound = bitmask & CURRY_BOUND_FLAG, + isCurryRight = bitmask & CURRY_RIGHT_FLAG; + + var Ctor = !isBindKey && createCtorWrapper(func), + key = func; + + function wrapper() { + // Avoid `arguments` object use disqualifying optimizations by + // converting it to an array before providing it to other functions. + var length = arguments.length, + index = length, + args = Array(length); + + while (index--) { + args[index] = arguments[index]; + } + if (partials) { + args = composeArgs(args, partials, holders); + } + if (partialsRight) { + args = composeArgsRight(args, partialsRight, holdersRight); + } + if (isCurry || isCurryRight) { + var placeholder = wrapper.placeholder, + argsHolders = replaceHolders(args, placeholder); + + length -= argsHolders.length; + if (length < arity) { + var newArgPos = argPos ? arrayCopy(argPos) : null, + newArity = nativeMax(arity - length, 0), + newsHolders = isCurry ? argsHolders : null, + newHoldersRight = isCurry ? null : argsHolders, + newPartials = isCurry ? args : null, + newPartialsRight = isCurry ? null : args; + + bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG); + bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG); + + if (!isCurryBound) { + bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG); + } + var newData = [func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, newArity], + result = createHybridWrapper.apply(undefined, newData); + + if (isLaziable(func)) { + setData(result, newData); + } + result.placeholder = placeholder; + return result; + } + } + var thisBinding = isBind ? thisArg : this; + if (isBindKey) { + func = thisBinding[key]; + } + if (argPos) { + args = reorder(args, argPos); + } + if (isAry && ary < args.length) { + args.length = ary; + } + var fn = (this && this !== root && this instanceof wrapper) ? (Ctor || createCtorWrapper(func)) : func; + return fn.apply(thisBinding, args); + } + return wrapper; + } + + /** + * Creates the padding required for `string` based on the given `length`. + * The `chars` string is truncated if the number of characters exceeds `length`. + * + * @private + * @param {string} string The string to create padding for. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the pad for `string`. + */ + function createPadding(string, length, chars) { + var strLength = string.length; + length = +length; + + if (strLength >= length || !nativeIsFinite(length)) { + return ''; + } + var padLength = length - strLength; + chars = chars == null ? ' ' : (chars + ''); + return repeat(chars, ceil(padLength / chars.length)).slice(0, padLength); + } + + /** + * Creates a function that wraps `func` and invokes it with the optional `this` + * binding of `thisArg` and the `partials` prepended to those provided to + * the wrapper. + * + * @private + * @param {Function} func The function to partially apply arguments to. + * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} partials The arguments to prepend to those provided to the new function. + * @returns {Function} Returns the new bound function. + */ + function createPartialWrapper(func, bitmask, thisArg, partials) { + var isBind = bitmask & BIND_FLAG, + Ctor = createCtorWrapper(func); + + function wrapper() { + // Avoid `arguments` object use disqualifying optimizations by + // converting it to an array before providing it `func`. + var argsIndex = -1, + argsLength = arguments.length, + leftIndex = -1, + leftLength = partials.length, + args = Array(argsLength + leftLength); + + while (++leftIndex < leftLength) { + args[leftIndex] = partials[leftIndex]; + } + while (argsLength--) { + args[leftIndex++] = arguments[++argsIndex]; + } + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return fn.apply(isBind ? thisArg : this, args); + } + return wrapper; + } + + /** + * Creates a `_.sortedIndex` or `_.sortedLastIndex` function. + * + * @private + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {Function} Returns the new index function. + */ + function createSortedIndex(retHighest) { + return function(array, value, iteratee, thisArg) { + var func = getCallback(iteratee); + return (func === baseCallback && iteratee == null) + ? binaryIndex(array, value, retHighest) + : binaryIndexBy(array, value, func(iteratee, thisArg, 1), retHighest); + }; + } + + /** + * Creates a function that either curries or invokes `func` with optional + * `this` binding and partially applied arguments. + * + * @private + * @param {Function|string} func The function or method name to reference. + * @param {number} bitmask The bitmask of flags. + * The bitmask may be composed of the following flags: + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` or `_.curryRight` of a bound function + * 8 - `_.curry` + * 16 - `_.curryRight` + * 32 - `_.partial` + * 64 - `_.partialRight` + * 128 - `_.rearg` + * 256 - `_.ary` + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to be partially applied. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { + var isBindKey = bitmask & BIND_KEY_FLAG; + if (!isBindKey && typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + var length = partials ? partials.length : 0; + if (!length) { + bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG); + partials = holders = null; + } + length -= (holders ? holders.length : 0); + if (bitmask & PARTIAL_RIGHT_FLAG) { + var partialsRight = partials, + holdersRight = holders; + + partials = holders = null; + } + var data = isBindKey ? null : getData(func), + newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity]; + + if (data) { + mergeData(newData, data); + bitmask = newData[1]; + arity = newData[9]; + } + newData[9] = arity == null + ? (isBindKey ? 0 : func.length) + : (nativeMax(arity - length, 0) || 0); + + if (bitmask == BIND_FLAG) { + var result = createBindWrapper(newData[0], newData[2]); + } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) { + result = createPartialWrapper.apply(undefined, newData); + } else { + result = createHybridWrapper.apply(undefined, newData); + } + var setter = data ? baseSetData : setData; + return setter(result, newData); + } + + /** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} [customizer] The function to customize comparing arrays. + * @param {boolean} [isLoose] Specify performing partial comparisons. + * @param {Array} [stackA] Tracks traversed `value` objects. + * @param {Array} [stackB] Tracks traversed `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ + function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) { + var index = -1, + arrLength = array.length, + othLength = other.length, + result = true; + + if (arrLength != othLength && !(isLoose && othLength > arrLength)) { + return false; + } + // Deep compare the contents, ignoring non-numeric properties. + while (result && ++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + result = undefined; + if (customizer) { + result = isLoose + ? customizer(othValue, arrValue, index) + : customizer(arrValue, othValue, index); + } + if (result === undefined) { + // Recursively compare arrays (susceptible to call stack limits). + if (isLoose) { + var othIndex = othLength; + while (othIndex--) { + othValue = other[othIndex]; + result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB); + if (result) { + break; + } + } + } else { + result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB); + } + } + } + return !!result; + } + + /** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} value The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalByTag(object, other, tag) { + switch (tag) { + case boolTag: + case dateTag: + // Coerce dates and booleans to numbers, dates to milliseconds and booleans + // to `1` or `0` treating invalid dates coerced to `NaN` as not equal. + return +object == +other; + + case errorTag: + return object.name == other.name && object.message == other.message; + + case numberTag: + // Treat `NaN` vs. `NaN` as equal. + return (object != +object) + ? other != +other + // But, treat `-0` vs. `+0` as not equal. + : (object == 0 ? ((1 / object) == (1 / other)) : object == +other); + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings primitives and string + // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details. + return object == (other + ''); + } + return false; + } + + /** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} [customizer] The function to customize comparing values. + * @param {boolean} [isLoose] Specify performing partial comparisons. + * @param {Array} [stackA] Tracks traversed `value` objects. + * @param {Array} [stackB] Tracks traversed `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalObjects(object, other, equalFunc, customizer, isLoose, stackA, stackB) { + var objProps = keys(object), + objLength = objProps.length, + othProps = keys(other), + othLength = othProps.length; + + if (objLength != othLength && !isLoose) { + return false; + } + var skipCtor = isLoose, + index = -1; + + while (++index < objLength) { + var key = objProps[index], + result = isLoose ? key in other : hasOwnProperty.call(other, key); + + if (result) { + var objValue = object[key], + othValue = other[key]; + + result = undefined; + if (customizer) { + result = isLoose + ? customizer(othValue, objValue, key) + : customizer(objValue, othValue, key); + } + if (result === undefined) { + // Recursively compare objects (susceptible to call stack limits). + result = (objValue && objValue === othValue) || equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB); + } + } + if (!result) { + return false; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (!skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + return false; + } + } + return true; + } + + /** + * Gets the extremum value of `collection` invoking `iteratee` for each value + * in `collection` to generate the criterion by which the value is ranked. + * The `iteratee` is invoked with three arguments: (value, index, collection). + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {boolean} [isMin] Specify returning the minimum, instead of the + * maximum, extremum value. + * @returns {*} Returns the extremum value. + */ + function extremumBy(collection, iteratee, isMin) { + var exValue = isMin ? POSITIVE_INFINITY : NEGATIVE_INFINITY, + computed = exValue, + result = computed; + + baseEach(collection, function(value, index, collection) { + var current = iteratee(value, index, collection); + if ((isMin ? (current < computed) : (current > computed)) || + (current === exValue && current === result)) { + computed = current; + result = value; + } + }); + return result; + } + + /** + * Gets the appropriate "callback" function. If the `_.callback` method is + * customized this function returns the custom method, otherwise it returns + * the `baseCallback` function. If arguments are provided the chosen function + * is invoked with them and its result is returned. + * + * @private + * @returns {Function} Returns the chosen function or its result. + */ + function getCallback(func, thisArg, argCount) { + var result = lodash.callback || callback; + result = result === callback ? baseCallback : result; + return argCount ? result(func, thisArg, argCount) : result; + } + + /** + * Gets metadata for `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {*} Returns the metadata for `func`. + */ + var getData = !metaMap ? noop : function(func) { + return metaMap.get(func); + }; + + /** + * Gets the name of `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {string} Returns the function name. + */ + var getFuncName = (function() { + if (!support.funcNames) { + return constant(''); + } + if (constant.name == 'constant') { + return baseProperty('name'); + } + return function(func) { + var result = func.name, + array = realNames[result], + length = array ? array.length : 0; + + while (length--) { + var data = array[length], + otherFunc = data.func; + + if (otherFunc == null || otherFunc == func) { + return data.name; + } + } + return result; + }; + }()); + + /** + * Gets the appropriate "indexOf" function. If the `_.indexOf` method is + * customized this function returns the custom method, otherwise it returns + * the `baseIndexOf` function. If arguments are provided the chosen function + * is invoked with them and its result is returned. + * + * @private + * @returns {Function|number} Returns the chosen function or its result. + */ + function getIndexOf(collection, target, fromIndex) { + var result = lodash.indexOf || indexOf; + result = result === indexOf ? baseIndexOf : result; + return collection ? result(collection, target, fromIndex) : result; + } + + /** + * Gets the "length" property value of `object`. + * + * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) + * in Safari on iOS 8.1 ARM64. + * + * @private + * @param {Object} object The object to query. + * @returns {*} Returns the "length" value. + */ + var getLength = baseProperty('length'); + + /** + * Creates an array of the own symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbols = !getOwnPropertySymbols ? constant([]) : function(object) { + return getOwnPropertySymbols(toObject(object)); + }; + + /** + * Gets the view, applying any `transforms` to the `start` and `end` positions. + * + * @private + * @param {number} start The start of the view. + * @param {number} end The end of the view. + * @param {Array} [transforms] The transformations to apply to the view. + * @returns {Object} Returns an object containing the `start` and `end` + * positions of the view. + */ + function getView(start, end, transforms) { + var index = -1, + length = transforms ? transforms.length : 0; + + while (++index < length) { + var data = transforms[index], + size = data.size; + + switch (data.type) { + case 'drop': start += size; break; + case 'dropRight': end -= size; break; + case 'take': end = nativeMin(end, start + size); break; + case 'takeRight': start = nativeMax(start, end - size); break; + } + } + return { 'start': start, 'end': end }; + } + + /** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ + function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add array properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; + } + + /** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneObject(object) { + var Ctor = object.constructor; + if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) { + Ctor = Object; + } + return new Ctor; + } + + /** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return bufferClone(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + var buffer = object.buffer; + return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length); + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + var result = new Ctor(object.source, reFlags.exec(object)); + result.lastIndex = object.lastIndex; + } + return result; + } + + /** + * Invokes the method at `path` on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {Array} args The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + */ + function invokePath(object, path, args) { + if (object != null && !isKey(path, object)) { + path = toPath(path); + object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); + path = last(path); + } + var func = object == null ? object : object[path]; + return func == null ? undefined : func.apply(object, args); + } + + /** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ + function isIndex(value, length) { + value = +value; + length = length == null ? MAX_SAFE_INTEGER : length; + return value > -1 && value % 1 == 0 && value < length; + } + + /** + * Checks if the provided arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`. + */ + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number') { + var length = getLength(object), + prereq = isLength(length) && isIndex(index, length); + } else { + prereq = type == 'string' && index in object; + } + if (prereq) { + var other = object[index]; + return value === value ? (value === other) : (other !== other); + } + return false; + } + + /** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ + function isKey(value, object) { + var type = typeof value; + if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') { + return true; + } + if (isArray(value)) { + return false; + } + var result = !reIsDeepProp.test(value); + return result || (object != null && value in toObject(object)); + } + + /** + * Checks if `func` has a lazy counterpart. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` has a lazy counterpart, else `false`. + */ + function isLaziable(func) { + var funcName = getFuncName(func); + return !!funcName && func === lodash[funcName] && funcName in LazyWrapper.prototype; + } + + /** + * Checks if `value` is a valid array-like length. + * + * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength). + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + */ + function isLength(value) { + return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ + function isStrictComparable(value) { + return value === value && (value === 0 ? ((1 / value) > 0) : !isObject(value)); + } + + /** + * Merges the function metadata of `source` into `data`. + * + * Merging metadata reduces the number of wrappers required to invoke a function. + * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` + * may be applied regardless of execution order. Methods like `_.ary` and `_.rearg` + * augment function arguments, making the order in which they are executed important, + * preventing the merging of metadata. However, we make an exception for a safe + * common case where curried functions have `_.ary` and or `_.rearg` applied. + * + * @private + * @param {Array} data The destination metadata. + * @param {Array} source The source metadata. + * @returns {Array} Returns `data`. + */ + function mergeData(data, source) { + var bitmask = data[1], + srcBitmask = source[1], + newBitmask = bitmask | srcBitmask, + isCommon = newBitmask < ARY_FLAG; + + var isCombo = + (srcBitmask == ARY_FLAG && bitmask == CURRY_FLAG) || + (srcBitmask == ARY_FLAG && bitmask == REARG_FLAG && data[7].length <= source[8]) || + (srcBitmask == (ARY_FLAG | REARG_FLAG) && bitmask == CURRY_FLAG); + + // Exit early if metadata can't be merged. + if (!(isCommon || isCombo)) { + return data; + } + // Use source `thisArg` if available. + if (srcBitmask & BIND_FLAG) { + data[2] = source[2]; + // Set when currying a bound function. + newBitmask |= (bitmask & BIND_FLAG) ? 0 : CURRY_BOUND_FLAG; + } + // Compose partial arguments. + var value = source[3]; + if (value) { + var partials = data[3]; + data[3] = partials ? composeArgs(partials, value, source[4]) : arrayCopy(value); + data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : arrayCopy(source[4]); + } + // Compose partial right arguments. + value = source[5]; + if (value) { + partials = data[5]; + data[5] = partials ? composeArgsRight(partials, value, source[6]) : arrayCopy(value); + data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : arrayCopy(source[6]); + } + // Use source `argPos` if available. + value = source[7]; + if (value) { + data[7] = arrayCopy(value); + } + // Use source `ary` if it's smaller. + if (srcBitmask & ARY_FLAG) { + data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); + } + // Use source `arity` if one is not provided. + if (data[9] == null) { + data[9] = source[9]; + } + // Use source `func` and merge bitmasks. + data[0] = source[0]; + data[1] = newBitmask; + + return data; + } + + /** + * A specialized version of `_.pick` that picks `object` properties specified + * by `props`. + * + * @private + * @param {Object} object The source object. + * @param {string[]} props The property names to pick. + * @returns {Object} Returns the new object. + */ + function pickByArray(object, props) { + object = toObject(object); + + var index = -1, + length = props.length, + result = {}; + + while (++index < length) { + var key = props[index]; + if (key in object) { + result[key] = object[key]; + } + } + return result; + } + + /** + * A specialized version of `_.pick` that picks `object` properties `predicate` + * returns truthy for. + * + * @private + * @param {Object} object The source object. + * @param {Function} predicate The function invoked per iteration. + * @returns {Object} Returns the new object. + */ + function pickByCallback(object, predicate) { + var result = {}; + baseForIn(object, function(value, key, object) { + if (predicate(value, key, object)) { + result[key] = value; + } + }); + return result; + } + + /** + * Reorder `array` according to the specified indexes where the element at + * the first index is assigned as the first element, the element at + * the second index is assigned as the second element, and so on. + * + * @private + * @param {Array} array The array to reorder. + * @param {Array} indexes The arranged array indexes. + * @returns {Array} Returns `array`. + */ + function reorder(array, indexes) { + var arrLength = array.length, + length = nativeMin(indexes.length, arrLength), + oldArray = arrayCopy(array); + + while (length--) { + var index = indexes[length]; + array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; + } + return array; + } + + /** + * Sets metadata for `func`. + * + * **Note:** If this function becomes hot, i.e. is invoked a lot in a short + * period of time, it will trip its breaker and transition to an identity function + * to avoid garbage collection pauses in V8. See [V8 issue 2070](https://code.google.com/p/v8/issues/detail?id=2070) + * for more details. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var setData = (function() { + var count = 0, + lastCalled = 0; + + return function(key, value) { + var stamp = now(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return key; + } + } else { + count = 0; + } + return baseSetData(key, value); + }; + }()); + + /** + * A fallback implementation of `_.isPlainObject` which checks if `value` + * is an object created by the `Object` constructor or has a `[[Prototype]]` + * of `null`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + */ + function shimIsPlainObject(value) { + var Ctor, + support = lodash.support; + + // Exit early for non `Object` objects. + if (!(isObjectLike(value) && objToString.call(value) == objectTag) || + (!hasOwnProperty.call(value, 'constructor') && + (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) { + return false; + } + // IE < 9 iterates inherited properties before own properties. If the first + // iterated property is an object's own property then there are no inherited + // enumerable properties. + var result; + // In most environments an object's own properties are iterated before + // its inherited properties. If the last iterated property is an object's + // own property then there are no inherited enumerable properties. + baseForIn(value, function(subValue, key) { + result = key; + }); + return result === undefined || hasOwnProperty.call(value, result); + } + + /** + * A fallback implementation of `Object.keys` which creates an array of the + * own enumerable property names of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function shimKeys(object) { + var props = keysIn(object), + propsLength = props.length, + length = propsLength && object.length, + support = lodash.support; + + var allowIndexes = length && isLength(length) && + (isArray(object) || (support.nonEnumArgs && isArguments(object))); + + var index = -1, + result = []; + + while (++index < propsLength) { + var key = props[index]; + if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) { + result.push(key); + } + } + return result; + } + + /** + * Converts `value` to an array-like object if it is not one. + * + * @private + * @param {*} value The value to process. + * @returns {Array|Object} Returns the array-like object. + */ + function toIterable(value) { + if (value == null) { + return []; + } + if (!isLength(getLength(value))) { + return values(value); + } + return isObject(value) ? value : Object(value); + } + + /** + * Converts `value` to an object if it is not one. + * + * @private + * @param {*} value The value to process. + * @returns {Object} Returns the object. + */ + function toObject(value) { + return isObject(value) ? value : Object(value); + } + + /** + * Converts `value` to property path array if it is not one. + * + * @private + * @param {*} value The value to process. + * @returns {Array} Returns the property path array. + */ + function toPath(value) { + if (isArray(value)) { + return value; + } + var result = []; + baseToString(value).replace(rePropName, function(match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; + } + + /** + * Creates a clone of `wrapper`. + * + * @private + * @param {Object} wrapper The wrapper to clone. + * @returns {Object} Returns the cloned wrapper. + */ + function wrapperClone(wrapper) { + return wrapper instanceof LazyWrapper + ? wrapper.clone() + : new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of elements split into groups the length of `size`. + * If `collection` can't be split evenly, the final chunk will be the remaining + * elements. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to process. + * @param {number} [size=1] The length of each chunk. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the new array containing chunks. + * @example + * + * _.chunk(['a', 'b', 'c', 'd'], 2); + * // => [['a', 'b'], ['c', 'd']] + * + * _.chunk(['a', 'b', 'c', 'd'], 3); + * // => [['a', 'b', 'c'], ['d']] + */ + function chunk(array, size, guard) { + if (guard ? isIterateeCall(array, size, guard) : size == null) { + size = 1; + } else { + size = nativeMax(+size || 1, 1); + } + var index = 0, + length = array ? array.length : 0, + resIndex = -1, + result = Array(ceil(length / size)); + + while (index < length) { + result[++resIndex] = baseSlice(array, index, (index += size)); + } + return result; + } + + /** + * Creates an array with all falsey values removed. The values `false`, `null`, + * `0`, `""`, `undefined`, and `NaN` are falsey. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to compact. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.compact([0, 1, false, 2, '', 3]); + * // => [1, 2, 3] + */ + function compact(array) { + var index = -1, + length = array ? array.length : 0, + resIndex = -1, + result = []; + + while (++index < length) { + var value = array[index]; + if (value) { + result[++resIndex] = value; + } + } + return result; + } + + /** + * Creates an array excluding all values of the provided arrays using + * `SameValueZero` for equality comparisons. + * + * **Note:** [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * comparisons are like strict equality comparisons, e.g. `===`, except that + * `NaN` matches `NaN`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The arrays of values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.difference([1, 2, 3], [4, 2]); + * // => [1, 3] + */ + var difference = restParam(function(array, values) { + return (isArray(array) || isArguments(array)) + ? baseDifference(array, baseFlatten(values, false, true)) + : []; + }); + + /** + * Creates a slice of `array` with `n` elements dropped from the beginning. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.drop([1, 2, 3]); + * // => [2, 3] + * + * _.drop([1, 2, 3], 2); + * // => [3] + * + * _.drop([1, 2, 3], 5); + * // => [] + * + * _.drop([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function drop(array, n, guard) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (guard ? isIterateeCall(array, n, guard) : n == null) { + n = 1; + } + return baseSlice(array, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` with `n` elements dropped from the end. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRight([1, 2, 3]); + * // => [1, 2] + * + * _.dropRight([1, 2, 3], 2); + * // => [1] + * + * _.dropRight([1, 2, 3], 5); + * // => [] + * + * _.dropRight([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function dropRight(array, n, guard) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (guard ? isIterateeCall(array, n, guard) : n == null) { + n = 1; + } + n = length - (+n || 0); + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` excluding elements dropped from the end. + * Elements are dropped until `predicate` returns falsey. The predicate is + * bound to `thisArg` and invoked with three arguments: (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that match the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRightWhile([1, 2, 3], function(n) { + * return n > 1; + * }); + * // => [1] + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.dropRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user'); + * // => ['barney', 'fred'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.dropRightWhile(users, 'active', false), 'user'); + * // => ['barney'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.dropRightWhile(users, 'active'), 'user'); + * // => ['barney', 'fred', 'pebbles'] + */ + function dropRightWhile(array, predicate, thisArg) { + return (array && array.length) + ? baseWhile(array, getCallback(predicate, thisArg, 3), true, true) + : []; + } + + /** + * Creates a slice of `array` excluding elements dropped from the beginning. + * Elements are dropped until `predicate` returns falsey. The predicate is + * bound to `thisArg` and invoked with three arguments: (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropWhile([1, 2, 3], function(n) { + * return n < 3; + * }); + * // => [3] + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.dropWhile(users, { 'user': 'barney', 'active': false }), 'user'); + * // => ['fred', 'pebbles'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.dropWhile(users, 'active', false), 'user'); + * // => ['pebbles'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.dropWhile(users, 'active'), 'user'); + * // => ['barney', 'fred', 'pebbles'] + */ + function dropWhile(array, predicate, thisArg) { + return (array && array.length) + ? baseWhile(array, getCallback(predicate, thisArg, 3), true) + : []; + } + + /** + * Fills elements of `array` with `value` from `start` up to, but not + * including, `end`. + * + * **Note:** This method mutates `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.fill(array, 'a'); + * console.log(array); + * // => ['a', 'a', 'a'] + * + * _.fill(Array(3), 2); + * // => [2, 2, 2] + * + * _.fill([4, 6, 8], '*', 1, 2); + * // => [4, '*', 8] + */ + function fill(array, value, start, end) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { + start = 0; + end = length; + } + return baseFill(array, value, start, end); + } + + /** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(chr) { + * return chr.user == 'barney'; + * }); + * // => 0 + * + * // using the `_.matches` callback shorthand + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // using the `_.matchesProperty` callback shorthand + * _.findIndex(users, 'active', false); + * // => 0 + * + * // using the `_.property` callback shorthand + * _.findIndex(users, 'active'); + * // => 2 + */ + var findIndex = createFindIndex(); + + /** + * This method is like `_.findIndex` except that it iterates over elements + * of `collection` from right to left. + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.findLastIndex(users, function(chr) { + * return chr.user == 'pebbles'; + * }); + * // => 2 + * + * // using the `_.matches` callback shorthand + * _.findLastIndex(users, { 'user': 'barney', 'active': true }); + * // => 0 + * + * // using the `_.matchesProperty` callback shorthand + * _.findLastIndex(users, 'active', false); + * // => 2 + * + * // using the `_.property` callback shorthand + * _.findLastIndex(users, 'active'); + * // => 0 + */ + var findLastIndex = createFindIndex(true); + + /** + * Gets the first element of `array`. + * + * @static + * @memberOf _ + * @alias head + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the first element of `array`. + * @example + * + * _.first([1, 2, 3]); + * // => 1 + * + * _.first([]); + * // => undefined + */ + function first(array) { + return array ? array[0] : undefined; + } + + /** + * Flattens a nested array. If `isDeep` is `true` the array is recursively + * flattened, otherwise it is only flattened a single level. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to flatten. + * @param {boolean} [isDeep] Specify a deep flatten. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, 3, [4]]]); + * // => [1, 2, 3, [4]] + * + * // using `isDeep` + * _.flatten([1, [2, 3, [4]]], true); + * // => [1, 2, 3, 4] + */ + function flatten(array, isDeep, guard) { + var length = array ? array.length : 0; + if (guard && isIterateeCall(array, isDeep, guard)) { + isDeep = false; + } + return length ? baseFlatten(array, isDeep) : []; + } + + /** + * Recursively flattens a nested array. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to recursively flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flattenDeep([1, [2, 3, [4]]]); + * // => [1, 2, 3, 4] + */ + function flattenDeep(array) { + var length = array ? array.length : 0; + return length ? baseFlatten(array, true) : []; + } + + /** + * Gets the index at which the first occurrence of `value` is found in `array` + * using `SameValueZero` for equality comparisons. If `fromIndex` is negative, + * it is used as the offset from the end of `array`. If `array` is sorted + * providing `true` for `fromIndex` performs a faster binary search. + * + * **Note:** [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * comparisons are like strict equality comparisons, e.g. `===`, except that + * `NaN` matches `NaN`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to search. + * @param {*} value The value to search for. + * @param {boolean|number} [fromIndex=0] The index to search from or `true` + * to perform a binary search on a sorted array. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.indexOf([1, 2, 1, 2], 2); + * // => 1 + * + * // using `fromIndex` + * _.indexOf([1, 2, 1, 2], 2, 2); + * // => 3 + * + * // performing a binary search + * _.indexOf([1, 1, 2, 2], 2, true); + * // => 2 + */ + function indexOf(array, value, fromIndex) { + var length = array ? array.length : 0; + if (!length) { + return -1; + } + if (typeof fromIndex == 'number') { + fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex; + } else if (fromIndex) { + var index = binaryIndex(array, value), + other = array[index]; + + if (value === value ? (value === other) : (other !== other)) { + return index; + } + return -1; + } + return baseIndexOf(array, value, fromIndex || 0); + } + + /** + * Gets all but the last element of `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.initial([1, 2, 3]); + * // => [1, 2] + */ + function initial(array) { + return dropRight(array, 1); + } + + /** + * Creates an array of unique values in all provided arrays using `SameValueZero` + * for equality comparisons. + * + * **Note:** [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * comparisons are like strict equality comparisons, e.g. `===`, except that + * `NaN` matches `NaN`. + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of shared values. + * @example + * _.intersection([1, 2], [4, 2], [2, 1]); + * // => [2] + */ + function intersection() { + var args = [], + argsIndex = -1, + argsLength = arguments.length, + caches = [], + indexOf = getIndexOf(), + isCommon = indexOf == baseIndexOf, + result = []; + + while (++argsIndex < argsLength) { + var value = arguments[argsIndex]; + if (isArray(value) || isArguments(value)) { + args.push(value); + caches.push((isCommon && value.length >= 120) ? createCache(argsIndex && value) : null); + } + } + argsLength = args.length; + if (argsLength < 2) { + return result; + } + var array = args[0], + index = -1, + length = array ? array.length : 0, + seen = caches[0]; + + outer: + while (++index < length) { + value = array[index]; + if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) { + argsIndex = argsLength; + while (--argsIndex) { + var cache = caches[argsIndex]; + if ((cache ? cacheIndexOf(cache, value) : indexOf(args[argsIndex], value, 0)) < 0) { + continue outer; + } + } + if (seen) { + seen.push(value); + } + result.push(value); + } + } + return result; + } + + /** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ + function last(array) { + var length = array ? array.length : 0; + return length ? array[length - 1] : undefined; + } + + /** + * This method is like `_.indexOf` except that it iterates over elements of + * `array` from right to left. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to search. + * @param {*} value The value to search for. + * @param {boolean|number} [fromIndex=array.length-1] The index to search from + * or `true` to perform a binary search on a sorted array. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.lastIndexOf([1, 2, 1, 2], 2); + * // => 3 + * + * // using `fromIndex` + * _.lastIndexOf([1, 2, 1, 2], 2, 2); + * // => 1 + * + * // performing a binary search + * _.lastIndexOf([1, 1, 2, 2], 2, true); + * // => 3 + */ + function lastIndexOf(array, value, fromIndex) { + var length = array ? array.length : 0; + if (!length) { + return -1; + } + var index = length; + if (typeof fromIndex == 'number') { + index = (fromIndex < 0 ? nativeMax(length + fromIndex, 0) : nativeMin(fromIndex || 0, length - 1)) + 1; + } else if (fromIndex) { + index = binaryIndex(array, value, true) - 1; + var other = array[index]; + if (value === value ? (value === other) : (other !== other)) { + return index; + } + return -1; + } + if (value !== value) { + return indexOfNaN(array, index, true); + } + while (index--) { + if (array[index] === value) { + return index; + } + } + return -1; + } + + /** + * Removes all provided values from `array` using `SameValueZero` for equality + * comparisons. + * + * **Notes:** + * - Unlike `_.without`, this method mutates `array` + * - [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * comparisons are like strict equality comparisons, e.g. `===`, except + * that `NaN` matches `NaN` + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to modify. + * @param {...*} [values] The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3, 1, 2, 3]; + * + * _.pull(array, 2, 3); + * console.log(array); + * // => [1, 1] + */ + function pull() { + var args = arguments, + array = args[0]; + + if (!(array && array.length)) { + return array; + } + var index = 0, + indexOf = getIndexOf(), + length = args.length; + + while (++index < length) { + var fromIndex = 0, + value = args[index]; + + while ((fromIndex = indexOf(array, value, fromIndex)) > -1) { + splice.call(array, fromIndex, 1); + } + } + return array; + } + + /** + * Removes elements from `array` corresponding to the given indexes and returns + * an array of the removed elements. Indexes may be specified as an array of + * indexes or as individual arguments. + * + * **Note:** Unlike `_.at`, this method mutates `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to modify. + * @param {...(number|number[])} [indexes] The indexes of elements to remove, + * specified as individual indexes or arrays of indexes. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = [5, 10, 15, 20]; + * var evens = _.pullAt(array, 1, 3); + * + * console.log(array); + * // => [5, 15] + * + * console.log(evens); + * // => [10, 20] + */ + var pullAt = restParam(function(array, indexes) { + array || (array = []); + indexes = baseFlatten(indexes); + + var result = baseAt(array, indexes); + basePullAt(array, indexes.sort(baseCompareAscending)); + return result; + }); + + /** + * Removes all elements from `array` that `predicate` returns truthy for + * and returns an array of the removed elements. The predicate is bound to + * `thisArg` and invoked with three arguments: (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * **Note:** Unlike `_.filter`, this method mutates `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to modify. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = [1, 2, 3, 4]; + * var evens = _.remove(array, function(n) { + * return n % 2 == 0; + * }); + * + * console.log(array); + * // => [1, 3] + * + * console.log(evens); + * // => [2, 4] + */ + function remove(array, predicate, thisArg) { + var result = []; + if (!(array && array.length)) { + return result; + } + var index = -1, + indexes = [], + length = array.length; + + predicate = getCallback(predicate, thisArg, 3); + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result.push(value); + indexes.push(index); + } + } + basePullAt(array, indexes); + return result; + } + + /** + * Gets all but the first element of `array`. + * + * @static + * @memberOf _ + * @alias tail + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.rest([1, 2, 3]); + * // => [2, 3] + */ + function rest(array) { + return drop(array, 1); + } + + /** + * Creates a slice of `array` from `start` up to, but not including, `end`. + * + * **Note:** This method is used instead of `Array#slice` to support node + * lists in IE < 9 and to ensure dense arrays are returned. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function slice(array, start, end) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { + start = 0; + end = length; + } + return baseSlice(array, start, end); + } + + /** + * Uses a binary search to determine the lowest index at which `value` should + * be inserted into `array` in order to maintain its sort order. If an iteratee + * function is provided it is invoked for `value` and each element of `array` + * to compute their sort ranking. The iteratee is bound to `thisArg` and + * invoked with one argument; (value). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedIndex([30, 50], 40); + * // => 1 + * + * _.sortedIndex([4, 4, 5, 5], 5); + * // => 2 + * + * var dict = { 'data': { 'thirty': 30, 'forty': 40, 'fifty': 50 } }; + * + * // using an iteratee function + * _.sortedIndex(['thirty', 'fifty'], 'forty', function(word) { + * return this.data[word]; + * }, dict); + * // => 1 + * + * // using the `_.property` callback shorthand + * _.sortedIndex([{ 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x'); + * // => 1 + */ + var sortedIndex = createSortedIndex(); + + /** + * This method is like `_.sortedIndex` except that it returns the highest + * index at which `value` should be inserted into `array` in order to + * maintain its sort order. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedLastIndex([4, 4, 5, 5], 5); + * // => 4 + */ + var sortedLastIndex = createSortedIndex(true); + + /** + * Creates a slice of `array` with `n` elements taken from the beginning. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.take([1, 2, 3]); + * // => [1] + * + * _.take([1, 2, 3], 2); + * // => [1, 2] + * + * _.take([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.take([1, 2, 3], 0); + * // => [] + */ + function take(array, n, guard) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (guard ? isIterateeCall(array, n, guard) : n == null) { + n = 1; + } + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` with `n` elements taken from the end. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeRight([1, 2, 3]); + * // => [3] + * + * _.takeRight([1, 2, 3], 2); + * // => [2, 3] + * + * _.takeRight([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.takeRight([1, 2, 3], 0); + * // => [] + */ + function takeRight(array, n, guard) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (guard ? isIterateeCall(array, n, guard) : n == null) { + n = 1; + } + n = length - (+n || 0); + return baseSlice(array, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` with elements taken from the end. Elements are + * taken until `predicate` returns falsey. The predicate is bound to `thisArg` + * and invoked with three arguments: (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeRightWhile([1, 2, 3], function(n) { + * return n > 1; + * }); + * // => [2, 3] + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.takeRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user'); + * // => ['pebbles'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.takeRightWhile(users, 'active', false), 'user'); + * // => ['fred', 'pebbles'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.takeRightWhile(users, 'active'), 'user'); + * // => [] + */ + function takeRightWhile(array, predicate, thisArg) { + return (array && array.length) + ? baseWhile(array, getCallback(predicate, thisArg, 3), false, true) + : []; + } + + /** + * Creates a slice of `array` with elements taken from the beginning. Elements + * are taken until `predicate` returns falsey. The predicate is bound to + * `thisArg` and invoked with three arguments: (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeWhile([1, 2, 3], function(n) { + * return n < 3; + * }); + * // => [1, 2] + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false}, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.takeWhile(users, { 'user': 'barney', 'active': false }), 'user'); + * // => ['barney'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.takeWhile(users, 'active', false), 'user'); + * // => ['barney', 'fred'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.takeWhile(users, 'active'), 'user'); + * // => [] + */ + function takeWhile(array, predicate, thisArg) { + return (array && array.length) + ? baseWhile(array, getCallback(predicate, thisArg, 3)) + : []; + } + + /** + * Creates an array of unique values, in order, of the provided arrays using + * `SameValueZero` for equality comparisons. + * + * **Note:** [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * comparisons are like strict equality comparisons, e.g. `===`, except that + * `NaN` matches `NaN`. + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([1, 2], [4, 2], [2, 1]); + * // => [1, 2, 4] + */ + var union = restParam(function(arrays) { + return baseUniq(baseFlatten(arrays, false, true)); + }); + + /** + * Creates a duplicate-free version of an array, using `SameValueZero` for + * equality comparisons, in which only the first occurence of each element + * is kept. Providing `true` for `isSorted` performs a faster search algorithm + * for sorted arrays. If an iteratee function is provided it is invoked for + * each element in the array to generate the criterion by which uniqueness + * is computed. The `iteratee` is bound to `thisArg` and invoked with three + * arguments: (value, index, array). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * **Note:** [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * comparisons are like strict equality comparisons, e.g. `===`, except that + * `NaN` matches `NaN`. + * + * @static + * @memberOf _ + * @alias unique + * @category Array + * @param {Array} array The array to inspect. + * @param {boolean} [isSorted] Specify the array is sorted. + * @param {Function|Object|string} [iteratee] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array} Returns the new duplicate-value-free array. + * @example + * + * _.uniq([2, 1, 2]); + * // => [2, 1] + * + * // using `isSorted` + * _.uniq([1, 1, 2], true); + * // => [1, 2] + * + * // using an iteratee function + * _.uniq([1, 2.5, 1.5, 2], function(n) { + * return this.floor(n); + * }, Math); + * // => [1, 2.5] + * + * // using the `_.property` callback shorthand + * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ + function uniq(array, isSorted, iteratee, thisArg) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (isSorted != null && typeof isSorted != 'boolean') { + thisArg = iteratee; + iteratee = isIterateeCall(array, isSorted, thisArg) ? null : isSorted; + isSorted = false; + } + var func = getCallback(); + if (!(func === baseCallback && iteratee == null)) { + iteratee = func(iteratee, thisArg, 3); + } + return (isSorted && getIndexOf() == baseIndexOf) + ? sortedUniq(array, iteratee) + : baseUniq(array, iteratee); + } + + /** + * This method is like `_.zip` except that it accepts an array of grouped + * elements and creates an array regrouping the elements to their pre-`_.zip` + * configuration. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array of grouped elements to process. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip(['fred', 'barney'], [30, 40], [true, false]); + * // => [['fred', 30, true], ['barney', 40, false]] + * + * _.unzip(zipped); + * // => [['fred', 'barney'], [30, 40], [true, false]] + */ + function unzip(array) { + var index = -1, + length = (array && array.length && arrayMax(arrayMap(array, getLength))) >>> 0, + result = Array(length); + + while (++index < length) { + result[index] = arrayMap(array, baseProperty(index)); + } + return result; + } + + /** + * Creates an array excluding all provided values using `SameValueZero` for + * equality comparisons. + * + * **Note:** [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * comparisons are like strict equality comparisons, e.g. `===`, except that + * `NaN` matches `NaN`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to filter. + * @param {...*} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.without([1, 2, 1, 3], 1, 2); + * // => [3] + */ + var without = restParam(function(array, values) { + return (isArray(array) || isArguments(array)) + ? baseDifference(array, values) + : []; + }); + + /** + * Creates an array that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) + * of the provided arrays. + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of values. + * @example + * + * _.xor([1, 2], [4, 2]); + * // => [1, 4] + */ + function xor() { + var index = -1, + length = arguments.length; + + while (++index < length) { + var array = arguments[index]; + if (isArray(array) || isArguments(array)) { + var result = result + ? baseDifference(result, array).concat(baseDifference(array, result)) + : array; + } + } + return result ? baseUniq(result) : []; + } + + /** + * Creates an array of grouped elements, the first of which contains the first + * elements of the given arrays, the second of which contains the second elements + * of the given arrays, and so on. + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zip(['fred', 'barney'], [30, 40], [true, false]); + * // => [['fred', 30, true], ['barney', 40, false]] + */ + var zip = restParam(unzip); + + /** + * The inverse of `_.pairs`; this method returns an object composed from arrays + * of property names and values. Provide either a single two dimensional array, + * e.g. `[[key1, value1], [key2, value2]]` or two arrays, one of property names + * and one of corresponding values. + * + * @static + * @memberOf _ + * @alias object + * @category Array + * @param {Array} props The property names. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject([['fred', 30], ['barney', 40]]); + * // => { 'fred': 30, 'barney': 40 } + * + * _.zipObject(['fred', 'barney'], [30, 40]); + * // => { 'fred': 30, 'barney': 40 } + */ + function zipObject(props, values) { + var index = -1, + length = props ? props.length : 0, + result = {}; + + if (length && !values && !isArray(props[0])) { + values = []; + } + while (++index < length) { + var key = props[index]; + if (values) { + result[key] = values[index]; + } else if (key) { + result[key[0]] = key[1]; + } + } + return result; + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` object that wraps `value` with explicit method + * chaining enabled. + * + * @static + * @memberOf _ + * @category Chain + * @param {*} value The value to wrap. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'pebbles', 'age': 1 } + * ]; + * + * var youngest = _.chain(users) + * .sortBy('age') + * .map(function(chr) { + * return chr.user + ' is ' + chr.age; + * }) + * .first() + * .value(); + * // => 'pebbles is 1' + */ + function chain(value) { + var result = lodash(value); + result.__chain__ = true; + return result; + } + + /** + * This method invokes `interceptor` and returns `value`. The interceptor is + * bound to `thisArg` and invoked with one argument; (value). The purpose of + * this method is to "tap into" a method chain in order to perform operations + * on intermediate results within the chain. + * + * @static + * @memberOf _ + * @category Chain + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @param {*} [thisArg] The `this` binding of `interceptor`. + * @returns {*} Returns `value`. + * @example + * + * _([1, 2, 3]) + * .tap(function(array) { + * array.pop(); + * }) + * .reverse() + * .value(); + * // => [2, 1] + */ + function tap(value, interceptor, thisArg) { + interceptor.call(thisArg, value); + return value; + } + + /** + * This method is like `_.tap` except that it returns the result of `interceptor`. + * + * @static + * @memberOf _ + * @category Chain + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @param {*} [thisArg] The `this` binding of `interceptor`. + * @returns {*} Returns the result of `interceptor`. + * @example + * + * _(' abc ') + * .chain() + * .trim() + * .thru(function(value) { + * return [value]; + * }) + * .value(); + * // => ['abc'] + */ + function thru(value, interceptor, thisArg) { + return interceptor.call(thisArg, value); + } + + /** + * Enables explicit method chaining on the wrapper object. + * + * @name chain + * @memberOf _ + * @category Chain + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * // without explicit chaining + * _(users).first(); + * // => { 'user': 'barney', 'age': 36 } + * + * // with explicit chaining + * _(users).chain() + * .first() + * .pick('user') + * .value(); + * // => { 'user': 'barney' } + */ + function wrapperChain() { + return chain(this); + } + + /** + * Executes the chained sequence and returns the wrapped result. + * + * @name commit + * @memberOf _ + * @category Chain + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapper = _(array).push(3); + * + * console.log(array); + * // => [1, 2] + * + * wrapper = wrapper.commit(); + * console.log(array); + * // => [1, 2, 3] + * + * wrapper.last(); + * // => 3 + * + * console.log(array); + * // => [1, 2, 3] + */ + function wrapperCommit() { + return new LodashWrapper(this.value(), this.__chain__); + } + + /** + * Creates a clone of the chained sequence planting `value` as the wrapped value. + * + * @name plant + * @memberOf _ + * @category Chain + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapper = _(array).map(function(value) { + * return Math.pow(value, 2); + * }); + * + * var other = [3, 4]; + * var otherWrapper = wrapper.plant(other); + * + * otherWrapper.value(); + * // => [9, 16] + * + * wrapper.value(); + * // => [1, 4] + */ + function wrapperPlant(value) { + var result, + parent = this; + + while (parent instanceof baseLodash) { + var clone = wrapperClone(parent); + if (result) { + previous.__wrapped__ = clone; + } else { + result = clone; + } + var previous = clone; + parent = parent.__wrapped__; + } + previous.__wrapped__ = value; + return result; + } + + /** + * Reverses the wrapped array so the first element becomes the last, the + * second element becomes the second to last, and so on. + * + * **Note:** This method mutates the wrapped array. + * + * @name reverse + * @memberOf _ + * @category Chain + * @returns {Object} Returns the new reversed `lodash` wrapper instance. + * @example + * + * var array = [1, 2, 3]; + * + * _(array).reverse().value() + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ + function wrapperReverse() { + var value = this.__wrapped__; + if (value instanceof LazyWrapper) { + if (this.__actions__.length) { + value = new LazyWrapper(this); + } + return new LodashWrapper(value.reverse(), this.__chain__); + } + return this.thru(function(value) { + return value.reverse(); + }); + } + + /** + * Produces the result of coercing the unwrapped value to a string. + * + * @name toString + * @memberOf _ + * @category Chain + * @returns {string} Returns the coerced string value. + * @example + * + * _([1, 2, 3]).toString(); + * // => '1,2,3' + */ + function wrapperToString() { + return (this.value() + ''); + } + + /** + * Executes the chained sequence to extract the unwrapped value. + * + * @name value + * @memberOf _ + * @alias run, toJSON, valueOf + * @category Chain + * @returns {*} Returns the resolved unwrapped value. + * @example + * + * _([1, 2, 3]).value(); + * // => [1, 2, 3] + */ + function wrapperValue() { + return baseWrapperValue(this.__wrapped__, this.__actions__); + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of elements corresponding to the given keys, or indexes, + * of `collection`. Keys may be specified as individual arguments or as arrays + * of keys. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {...(number|number[]|string|string[])} [props] The property names + * or indexes of elements to pick, specified individually or in arrays. + * @returns {Array} Returns the new array of picked elements. + * @example + * + * _.at(['a', 'b', 'c'], [0, 2]); + * // => ['a', 'c'] + * + * _.at(['barney', 'fred', 'pebbles'], 0, 2); + * // => ['barney', 'pebbles'] + */ + var at = restParam(function(collection, props) { + var length = collection ? getLength(collection) : 0; + if (isLength(length)) { + collection = toIterable(collection); + } + return baseAt(collection, baseFlatten(props)); + }); + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` through `iteratee`. The corresponding value + * of each key is the number of times the key was returned by `iteratee`. + * The `iteratee` is bound to `thisArg` and invoked with three arguments: + * (value, index|key, collection). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.countBy([4.3, 6.1, 6.4], function(n) { + * return Math.floor(n); + * }); + * // => { '4': 1, '6': 2 } + * + * _.countBy([4.3, 6.1, 6.4], function(n) { + * return this.floor(n); + * }, Math); + * // => { '4': 1, '6': 2 } + * + * _.countBy(['one', 'two', 'three'], 'length'); + * // => { '3': 2, '5': 1 } + */ + var countBy = createAggregator(function(result, value, key) { + hasOwnProperty.call(result, key) ? ++result[key] : (result[key] = 1); + }); + + /** + * Checks if `predicate` returns truthy for **all** elements of `collection`. + * The predicate is bound to `thisArg` and invoked with three arguments: + * (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @alias all + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes'], Boolean); + * // => false + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.every(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // using the `_.matchesProperty` callback shorthand + * _.every(users, 'active', false); + * // => true + * + * // using the `_.property` callback shorthand + * _.every(users, 'active'); + * // => false + */ + function every(collection, predicate, thisArg) { + var func = isArray(collection) ? arrayEvery : baseEvery; + if (thisArg && isIterateeCall(collection, predicate, thisArg)) { + predicate = null; + } + if (typeof predicate != 'function' || thisArg !== undefined) { + predicate = getCallback(predicate, thisArg, 3); + } + return func(collection, predicate); + } + + /** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is bound to `thisArg` and + * invoked with three arguments: (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @alias select + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the new filtered array. + * @example + * + * _.filter([4, 5, 6], function(n) { + * return n % 2 == 0; + * }); + * // => [4, 6] + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user'); + * // => ['barney'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.filter(users, 'active', false), 'user'); + * // => ['fred'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.filter(users, 'active'), 'user'); + * // => ['barney'] + */ + function filter(collection, predicate, thisArg) { + var func = isArray(collection) ? arrayFilter : baseFilter; + predicate = getCallback(predicate, thisArg, 3); + return func(collection, predicate); + } + + /** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is bound to `thisArg` and + * invoked with three arguments: (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @alias detect + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.result(_.find(users, function(chr) { + * return chr.age < 40; + * }), 'user'); + * // => 'barney' + * + * // using the `_.matches` callback shorthand + * _.result(_.find(users, { 'age': 1, 'active': true }), 'user'); + * // => 'pebbles' + * + * // using the `_.matchesProperty` callback shorthand + * _.result(_.find(users, 'active', false), 'user'); + * // => 'fred' + * + * // using the `_.property` callback shorthand + * _.result(_.find(users, 'active'), 'user'); + * // => 'barney' + */ + var find = createFind(baseEach); + + /** + * This method is like `_.find` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * _.findLast([1, 2, 3, 4], function(n) { + * return n % 2 == 1; + * }); + * // => 3 + */ + var findLast = createFind(baseEachRight, true); + + /** + * Performs a deep comparison between each element in `collection` and the + * source object, returning the first element that has equivalent property + * values. + * + * **Note:** This method supports comparing arrays, booleans, `Date` objects, + * numbers, `Object` objects, regexes, and strings. Objects are compared by + * their own, not inherited, enumerable properties. For comparing a single + * own or inherited property value see `_.matchesProperty`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {Object} source The object of property values to match. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.result(_.findWhere(users, { 'age': 36, 'active': true }), 'user'); + * // => 'barney' + * + * _.result(_.findWhere(users, { 'age': 40, 'active': false }), 'user'); + * // => 'fred' + */ + function findWhere(collection, source) { + return find(collection, baseMatches(source)); + } + + /** + * Iterates over elements of `collection` invoking `iteratee` for each element. + * The `iteratee` is bound to `thisArg` and invoked with three arguments: + * (value, index|key, collection). Iteratee functions may exit iteration early + * by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" property + * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn` + * may be used for object iteration. + * + * @static + * @memberOf _ + * @alias each + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array|Object|string} Returns `collection`. + * @example + * + * _([1, 2]).forEach(function(n) { + * console.log(n); + * }).value(); + * // => logs each value from left to right and returns the array + * + * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) { + * console.log(n, key); + * }); + * // => logs each value-key pair and returns the object (iteration order is not guaranteed) + */ + var forEach = createForEach(arrayEach, baseEach); + + /** + * This method is like `_.forEach` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @alias eachRight + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array|Object|string} Returns `collection`. + * @example + * + * _([1, 2]).forEachRight(function(n) { + * console.log(n); + * }).value(); + * // => logs each value from right to left and returns the array + */ + var forEachRight = createForEach(arrayEachRight, baseEachRight); + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` through `iteratee`. The corresponding value + * of each key is an array of the elements responsible for generating the key. + * The `iteratee` is bound to `thisArg` and invoked with three arguments: + * (value, index|key, collection). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.groupBy([4.2, 6.1, 6.4], function(n) { + * return Math.floor(n); + * }); + * // => { '4': [4.2], '6': [6.1, 6.4] } + * + * _.groupBy([4.2, 6.1, 6.4], function(n) { + * return this.floor(n); + * }, Math); + * // => { '4': [4.2], '6': [6.1, 6.4] } + * + * // using the `_.property` callback shorthand + * _.groupBy(['one', 'two', 'three'], 'length'); + * // => { '3': ['one', 'two'], '5': ['three'] } + */ + var groupBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + result[key].push(value); + } else { + result[key] = [value]; + } + }); + + /** + * Checks if `value` is in `collection` using `SameValueZero` for equality + * comparisons. If `fromIndex` is negative, it is used as the offset from + * the end of `collection`. + * + * **Note:** [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * comparisons are like strict equality comparisons, e.g. `===`, except that + * `NaN` matches `NaN`. + * + * @static + * @memberOf _ + * @alias contains, include + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {*} target The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`. + * @returns {boolean} Returns `true` if a matching element is found, else `false`. + * @example + * + * _.includes([1, 2, 3], 1); + * // => true + * + * _.includes([1, 2, 3], 1, 2); + * // => false + * + * _.includes({ 'user': 'fred', 'age': 40 }, 'fred'); + * // => true + * + * _.includes('pebbles', 'eb'); + * // => true + */ + function includes(collection, target, fromIndex, guard) { + var length = collection ? getLength(collection) : 0; + if (!isLength(length)) { + collection = values(collection); + length = collection.length; + } + if (!length) { + return false; + } + if (typeof fromIndex != 'number' || (guard && isIterateeCall(target, fromIndex, guard))) { + fromIndex = 0; + } else { + fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0); + } + return (typeof collection == 'string' || !isArray(collection) && isString(collection)) + ? (fromIndex < length && collection.indexOf(target, fromIndex) > -1) + : (getIndexOf(collection, target, fromIndex) > -1); + } + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` through `iteratee`. The corresponding value + * of each key is the last element responsible for generating the key. The + * iteratee function is bound to `thisArg` and invoked with three arguments: + * (value, index|key, collection). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * var keyData = [ + * { 'dir': 'left', 'code': 97 }, + * { 'dir': 'right', 'code': 100 } + * ]; + * + * _.indexBy(keyData, 'dir'); + * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } + * + * _.indexBy(keyData, function(object) { + * return String.fromCharCode(object.code); + * }); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * + * _.indexBy(keyData, function(object) { + * return this.fromCharCode(object.code); + * }, String); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + */ + var indexBy = createAggregator(function(result, value, key) { + result[key] = value; + }); + + /** + * Invokes the method at `path` on each element in `collection`, returning + * an array of the results of each invoked method. Any additional arguments + * are provided to each invoked method. If `methodName` is a function it is + * invoked for, and `this` bound to, each element in `collection`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Array|Function|string} path The path of the method to invoke or + * the function invoked per iteration. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {Array} Returns the array of results. + * @example + * + * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort'); + * // => [[1, 5, 7], [1, 2, 3]] + * + * _.invoke([123, 456], String.prototype.split, ''); + * // => [['1', '2', '3'], ['4', '5', '6']] + */ + var invoke = restParam(function(collection, path, args) { + var index = -1, + isFunc = typeof path == 'function', + isProp = isKey(path), + length = getLength(collection), + result = isLength(length) ? Array(length) : []; + + baseEach(collection, function(value) { + var func = isFunc ? path : (isProp && value != null && value[path]); + result[++index] = func ? func.apply(value, args) : invokePath(value, path, args); + }); + return result; + }); + + /** + * Creates an array of values by running each element in `collection` through + * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three + * arguments: (value, index|key, collection). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * Many lodash methods are guarded to work as interatees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`, `drop`, + * `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`, `parseInt`, + * `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`, `trimLeft`, + * `trimRight`, `trunc`, `random`, `range`, `sample`, `some`, `uniq`, and `words` + * + * @static + * @memberOf _ + * @alias collect + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array} Returns the new mapped array. + * @example + * + * function timesThree(n) { + * return n * 3; + * } + * + * _.map([1, 2], timesThree); + * // => [3, 6] + * + * _.map({ 'a': 1, 'b': 2 }, timesThree); + * // => [3, 6] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // using the `_.property` callback shorthand + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ + function map(collection, iteratee, thisArg) { + var func = isArray(collection) ? arrayMap : baseMap; + iteratee = getCallback(iteratee, thisArg, 3); + return func(collection, iteratee); + } + + /** + * Creates an array of elements split into two groups, the first of which + * contains elements `predicate` returns truthy for, while the second of which + * contains elements `predicate` returns falsey for. The predicate is bound + * to `thisArg` and invoked with three arguments: (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the array of grouped elements. + * @example + * + * _.partition([1, 2, 3], function(n) { + * return n % 2; + * }); + * // => [[1, 3], [2]] + * + * _.partition([1.2, 2.3, 3.4], function(n) { + * return this.floor(n) % 2; + * }, Math); + * // => [[1.2, 3.4], [2.3]] + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true }, + * { 'user': 'pebbles', 'age': 1, 'active': false } + * ]; + * + * var mapper = function(array) { + * return _.pluck(array, 'user'); + * }; + * + * // using the `_.matches` callback shorthand + * _.map(_.partition(users, { 'age': 1, 'active': false }), mapper); + * // => [['pebbles'], ['barney', 'fred']] + * + * // using the `_.matchesProperty` callback shorthand + * _.map(_.partition(users, 'active', false), mapper); + * // => [['barney', 'pebbles'], ['fred']] + * + * // using the `_.property` callback shorthand + * _.map(_.partition(users, 'active'), mapper); + * // => [['fred'], ['barney', 'pebbles']] + */ + var partition = createAggregator(function(result, value, key) { + result[key ? 0 : 1].push(value); + }, function() { return [[], []]; }); + + /** + * Gets the property value of `path` from all elements in `collection`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Array|string} path The path of the property to pluck. + * @returns {Array} Returns the property values. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * _.pluck(users, 'user'); + * // => ['barney', 'fred'] + * + * var userIndex = _.indexBy(users, 'user'); + * _.pluck(userIndex, 'age'); + * // => [36, 40] (iteration order is not guaranteed) + */ + function pluck(collection, path) { + return map(collection, property(path)); + } + + /** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` through `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not provided the first element of `collection` is used as the initial + * value. The `iteratee` is bound to `thisArg` and invoked with four arguments: + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as interatees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `includes`, `merge`, `sortByAll`, and `sortByOrder` + * + * @static + * @memberOf _ + * @alias foldl, inject + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {*} Returns the accumulated value. + * @example + * + * _.reduce([1, 2], function(total, n) { + * return total + n; + * }); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) { + * result[key] = n * 3; + * return result; + * }, {}); + * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed) + */ + var reduce = createReduce(arrayReduce, baseEach); + + /** + * This method is like `_.reduce` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @alias foldr + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {*} Returns the accumulated value. + * @example + * + * var array = [[0, 1], [2, 3], [4, 5]]; + * + * _.reduceRight(array, function(flattened, other) { + * return flattened.concat(other); + * }, []); + * // => [4, 5, 2, 3, 0, 1] + */ + var reduceRight = createReduce(arrayReduceRight, baseEachRight); + + /** + * The opposite of `_.filter`; this method returns the elements of `collection` + * that `predicate` does **not** return truthy for. + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the new filtered array. + * @example + * + * _.reject([1, 2, 3, 4], function(n) { + * return n % 2 == 0; + * }); + * // => [1, 3] + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user'); + * // => ['barney'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.reject(users, 'active', false), 'user'); + * // => ['fred'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.reject(users, 'active'), 'user'); + * // => ['barney'] + */ + function reject(collection, predicate, thisArg) { + var func = isArray(collection) ? arrayFilter : baseFilter; + predicate = getCallback(predicate, thisArg, 3); + return func(collection, function(value, index, collection) { + return !predicate(value, index, collection); + }); + } + + /** + * Gets a random element or `n` random elements from a collection. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to sample. + * @param {number} [n] The number of elements to sample. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {*} Returns the random sample(s). + * @example + * + * _.sample([1, 2, 3, 4]); + * // => 2 + * + * _.sample([1, 2, 3, 4], 2); + * // => [3, 1] + */ + function sample(collection, n, guard) { + if (guard ? isIterateeCall(collection, n, guard) : n == null) { + collection = toIterable(collection); + var length = collection.length; + return length > 0 ? collection[baseRandom(0, length - 1)] : undefined; + } + var result = shuffle(collection); + result.length = nativeMin(n < 0 ? 0 : (+n || 0), result.length); + return result; + } + + /** + * Creates an array of shuffled values, using a version of the + * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + * @example + * + * _.shuffle([1, 2, 3, 4]); + * // => [4, 1, 3, 2] + */ + function shuffle(collection) { + collection = toIterable(collection); + + var index = -1, + length = collection.length, + result = Array(length); + + while (++index < length) { + var rand = baseRandom(0, index); + if (index != rand) { + result[index] = result[rand]; + } + result[rand] = collection[index]; + } + return result; + } + + /** + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable properties for objects. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the size of `collection`. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 + */ + function size(collection) { + var length = collection ? getLength(collection) : 0; + return isLength(length) ? length : keys(collection).length; + } + + /** + * Checks if `predicate` returns truthy for **any** element of `collection`. + * The function returns as soon as it finds a passing value and does not iterate + * over the entire collection. The predicate is bound to `thisArg` and invoked + * with three arguments: (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @alias any + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + * @example + * + * _.some([null, 0, 'yes', false], Boolean); + * // => true + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.some(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // using the `_.matchesProperty` callback shorthand + * _.some(users, 'active', false); + * // => true + * + * // using the `_.property` callback shorthand + * _.some(users, 'active'); + * // => true + */ + function some(collection, predicate, thisArg) { + var func = isArray(collection) ? arraySome : baseSome; + if (thisArg && isIterateeCall(collection, predicate, thisArg)) { + predicate = null; + } + if (typeof predicate != 'function' || thisArg !== undefined) { + predicate = getCallback(predicate, thisArg, 3); + } + return func(collection, predicate); + } + + /** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection through `iteratee`. This method performs + * a stable sort, that is, it preserves the original sort order of equal elements. + * The `iteratee` is bound to `thisArg` and invoked with three arguments: + * (value, index|key, collection). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array} Returns the new sorted array. + * @example + * + * _.sortBy([1, 2, 3], function(n) { + * return Math.sin(n); + * }); + * // => [3, 1, 2] + * + * _.sortBy([1, 2, 3], function(n) { + * return this.sin(n); + * }, Math); + * // => [3, 1, 2] + * + * var users = [ + * { 'user': 'fred' }, + * { 'user': 'pebbles' }, + * { 'user': 'barney' } + * ]; + * + * // using the `_.property` callback shorthand + * _.pluck(_.sortBy(users, 'user'), 'user'); + * // => ['barney', 'fred', 'pebbles'] + */ + function sortBy(collection, iteratee, thisArg) { + if (collection == null) { + return []; + } + if (thisArg && isIterateeCall(collection, iteratee, thisArg)) { + iteratee = null; + } + var index = -1; + iteratee = getCallback(iteratee, thisArg, 3); + + var result = baseMap(collection, function(value, key, collection) { + return { 'criteria': iteratee(value, key, collection), 'index': ++index, 'value': value }; + }); + return baseSortBy(result, compareAscending); + } + + /** + * This method is like `_.sortBy` except that it can sort by multiple iteratees + * or property names. + * + * If a property name is provided for an iteratee the created `_.property` + * style callback returns the property value of the given element. + * + * If an object is provided for an iteratee the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {...(Function|Function[]|Object|Object[]|string|string[])} iteratees + * The iteratees to sort by, specified as individual values or arrays of values. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 42 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.map(_.sortByAll(users, ['user', 'age']), _.values); + * // => [['barney', 34], ['barney', 36], ['fred', 42], ['fred', 48]] + * + * _.map(_.sortByAll(users, 'user', function(chr) { + * return Math.floor(chr.age / 10); + * }), _.values); + * // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]] + */ + var sortByAll = restParam(function(collection, iteratees) { + if (collection == null) { + return []; + } + var guard = iteratees[2]; + if (guard && isIterateeCall(iteratees[0], iteratees[1], guard)) { + iteratees.length = 1; + } + return baseSortByOrder(collection, baseFlatten(iteratees), []); + }); + + /** + * This method is like `_.sortByAll` except that it allows specifying the + * sort orders of the iteratees to sort by. A truthy value in `orders` will + * sort the corresponding property name in ascending order while a falsey + * value will sort it in descending order. + * + * If a property name is provided for an iteratee the created `_.property` + * style callback returns the property value of the given element. + * + * If an object is provided for an iteratee the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {boolean[]} orders The sort orders of `iteratees`. + * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 34 }, + * { 'user': 'fred', 'age': 42 }, + * { 'user': 'barney', 'age': 36 } + * ]; + * + * // sort by `user` in ascending order and by `age` in descending order + * _.map(_.sortByOrder(users, ['user', 'age'], [true, false]), _.values); + * // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]] + */ + function sortByOrder(collection, iteratees, orders, guard) { + if (collection == null) { + return []; + } + if (guard && isIterateeCall(iteratees, orders, guard)) { + orders = null; + } + if (!isArray(iteratees)) { + iteratees = iteratees == null ? [] : [iteratees]; + } + if (!isArray(orders)) { + orders = orders == null ? [] : [orders]; + } + return baseSortByOrder(collection, iteratees, orders); + } + + /** + * Performs a deep comparison between each element in `collection` and the + * source object, returning an array of all elements that have equivalent + * property values. + * + * **Note:** This method supports comparing arrays, booleans, `Date` objects, + * numbers, `Object` objects, regexes, and strings. Objects are compared by + * their own, not inherited, enumerable properties. For comparing a single + * own or inherited property value see `_.matchesProperty`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {Object} source The object of property values to match. + * @returns {Array} Returns the new filtered array. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false, 'pets': ['hoppy'] }, + * { 'user': 'fred', 'age': 40, 'active': true, 'pets': ['baby puss', 'dino'] } + * ]; + * + * _.pluck(_.where(users, { 'age': 36, 'active': false }), 'user'); + * // => ['barney'] + * + * _.pluck(_.where(users, { 'pets': ['dino'] }), 'user'); + * // => ['fred'] + */ + function where(collection, source) { + return filter(collection, baseMatches(source)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Gets the number of milliseconds that have elapsed since the Unix epoch + * (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @category Date + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => logs the number of milliseconds it took for the deferred function to be invoked + */ + var now = nativeNow || function() { + return new Date().getTime(); + }; + + /*------------------------------------------------------------------------*/ + + /** + * The opposite of `_.before`; this method creates a function that invokes + * `func` once it is called `n` or more times. + * + * @static + * @memberOf _ + * @category Function + * @param {number} n The number of calls before `func` is invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var saves = ['profile', 'settings']; + * + * var done = _.after(saves.length, function() { + * console.log('done saving!'); + * }); + * + * _.forEach(saves, function(type) { + * asyncSave({ 'type': type, 'complete': done }); + * }); + * // => logs 'done saving!' after the two async saves have completed + */ + function after(n, func) { + if (typeof func != 'function') { + if (typeof n == 'function') { + var temp = n; + n = func; + func = temp; + } else { + throw new TypeError(FUNC_ERROR_TEXT); + } + } + n = nativeIsFinite(n = +n) ? n : 0; + return function() { + if (--n < 1) { + return func.apply(this, arguments); + } + }; + } + + /** + * Creates a function that accepts up to `n` arguments ignoring any + * additional arguments. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to cap arguments for. + * @param {number} [n=func.length] The arity cap. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Function} Returns the new function. + * @example + * + * _.map(['6', '8', '10'], _.ary(parseInt, 1)); + * // => [6, 8, 10] + */ + function ary(func, n, guard) { + if (guard && isIterateeCall(func, n, guard)) { + n = null; + } + n = (func && n == null) ? func.length : nativeMax(+n || 0, 0); + return createWrapper(func, ARY_FLAG, null, null, null, null, n); + } + + /** + * Creates a function that invokes `func`, with the `this` binding and arguments + * of the created function, while it is called less than `n` times. Subsequent + * calls to the created function return the result of the last `func` invocation. + * + * @static + * @memberOf _ + * @category Function + * @param {number} n The number of calls at which `func` is no longer invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * jQuery('#add').on('click', _.before(5, addContactToList)); + * // => allows adding up to 4 contacts to the list + */ + function before(n, func) { + var result; + if (typeof func != 'function') { + if (typeof n == 'function') { + var temp = n; + n = func; + func = temp; + } else { + throw new TypeError(FUNC_ERROR_TEXT); + } + } + return function() { + if (--n > 0) { + result = func.apply(this, arguments); + } + if (n <= 1) { + func = null; + } + return result; + }; + } + + /** + * Creates a function that invokes `func` with the `this` binding of `thisArg` + * and prepends any additional `_.bind` arguments to those provided to the + * bound function. + * + * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for partially applied arguments. + * + * **Note:** Unlike native `Function#bind` this method does not set the "length" + * property of bound functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var greet = function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * }; + * + * var object = { 'user': 'fred' }; + * + * var bound = _.bind(greet, object, 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * // using placeholders + * var bound = _.bind(greet, object, _, '!'); + * bound('hi'); + * // => 'hi fred!' + */ + var bind = restParam(function(func, thisArg, partials) { + var bitmask = BIND_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, bind.placeholder); + bitmask |= PARTIAL_FLAG; + } + return createWrapper(func, bitmask, thisArg, partials, holders); + }); + + /** + * Binds methods of an object to the object itself, overwriting the existing + * method. Method names may be specified as individual arguments or as arrays + * of method names. If no method names are provided all enumerable function + * properties, own and inherited, of `object` are bound. + * + * **Note:** This method does not set the "length" property of bound functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Object} object The object to bind and assign the bound methods to. + * @param {...(string|string[])} [methodNames] The object method names to bind, + * specified as individual method names or arrays of method names. + * @returns {Object} Returns `object`. + * @example + * + * var view = { + * 'label': 'docs', + * 'onClick': function() { + * console.log('clicked ' + this.label); + * } + * }; + * + * _.bindAll(view); + * jQuery('#docs').on('click', view.onClick); + * // => logs 'clicked docs' when the element is clicked + */ + var bindAll = restParam(function(object, methodNames) { + methodNames = methodNames.length ? baseFlatten(methodNames) : functions(object); + + var index = -1, + length = methodNames.length; + + while (++index < length) { + var key = methodNames[index]; + object[key] = createWrapper(object[key], BIND_FLAG, object); + } + return object; + }); + + /** + * Creates a function that invokes the method at `object[key]` and prepends + * any additional `_.bindKey` arguments to those provided to the bound function. + * + * This method differs from `_.bind` by allowing bound functions to reference + * methods that may be redefined or don't yet exist. + * See [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) + * for more details. + * + * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * @static + * @memberOf _ + * @category Function + * @param {Object} object The object the method belongs to. + * @param {string} key The key of the method. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var object = { + * 'user': 'fred', + * 'greet': function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * }; + * + * var bound = _.bindKey(object, 'greet', 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * object.greet = function(greeting, punctuation) { + * return greeting + 'ya ' + this.user + punctuation; + * }; + * + * bound('!'); + * // => 'hiya fred!' + * + * // using placeholders + * var bound = _.bindKey(object, 'greet', _, '!'); + * bound('hi'); + * // => 'hiya fred!' + */ + var bindKey = restParam(function(object, key, partials) { + var bitmask = BIND_FLAG | BIND_KEY_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, bindKey.placeholder); + bitmask |= PARTIAL_FLAG; + } + return createWrapper(key, bitmask, object, partials, holders); + }); + + /** + * Creates a function that accepts one or more arguments of `func` that when + * called either invokes `func` returning its result, if all `func` arguments + * have been provided, or returns a function that accepts one or more of the + * remaining `func` arguments, and so on. The arity of `func` may be specified + * if `func.length` is not sufficient. + * + * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for provided arguments. + * + * **Note:** This method does not set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curry(abc); + * + * curried(1)(2)(3); + * // => [1, 2, 3] + * + * curried(1, 2)(3); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // using placeholders + * curried(1)(_, 3)(2); + * // => [1, 2, 3] + */ + var curry = createCurry(CURRY_FLAG); + + /** + * This method is like `_.curry` except that arguments are applied to `func` + * in the manner of `_.partialRight` instead of `_.partial`. + * + * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for provided arguments. + * + * **Note:** This method does not set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curryRight(abc); + * + * curried(3)(2)(1); + * // => [1, 2, 3] + * + * curried(2, 3)(1); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // using placeholders + * curried(3)(1, _)(2); + * // => [1, 2, 3] + */ + var curryRight = createCurry(CURRY_RIGHT_FLAG); + + /** + * Creates a function that delays invoking `func` until after `wait` milliseconds + * have elapsed since the last time it was invoked. The created function comes + * with a `cancel` method to cancel delayed invocations. Provide an options + * object to indicate that `func` should be invoked on the leading and/or + * trailing edge of the `wait` timeout. Subsequent calls to the debounced + * function return the result of the last `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked + * on the trailing edge of the timeout only if the the debounced function is + * invoked more than once during the `wait` timeout. + * + * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options] The options object. + * @param {boolean} [options.leading=false] Specify invoking on the leading + * edge of the timeout. + * @param {number} [options.maxWait] The maximum time `func` is allowed to be + * delayed before it is invoked. + * @param {boolean} [options.trailing=true] Specify invoking on the trailing + * edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // avoid costly calculations while the window size is in flux + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // invoke `sendMail` when the click event is fired, debouncing subsequent calls + * jQuery('#postbox').on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // ensure `batchLog` is invoked once after 1 second of debounced calls + * var source = new EventSource('/stream'); + * jQuery(source).on('message', _.debounce(batchLog, 250, { + * 'maxWait': 1000 + * })); + * + * // cancel a debounced call + * var todoChanges = _.debounce(batchLog, 1000); + * Object.observe(models.todo, todoChanges); + * + * Object.observe(models, function(changes) { + * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) { + * todoChanges.cancel(); + * } + * }, ['delete']); + * + * // ...at some point `models.todo` is changed + * models.todo.completed = true; + * + * // ...before 1 second has passed `models.todo` is deleted + * // which cancels the debounced `todoChanges` call + * delete models.todo; + */ + function debounce(func, wait, options) { + var args, + maxTimeoutId, + result, + stamp, + thisArg, + timeoutId, + trailingCall, + lastCalled = 0, + maxWait = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = wait < 0 ? 0 : (+wait || 0); + if (options === true) { + var leading = true; + trailing = false; + } else if (isObject(options)) { + leading = options.leading; + maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait); + trailing = 'trailing' in options ? options.trailing : trailing; + } + + function cancel() { + if (timeoutId) { + clearTimeout(timeoutId); + } + if (maxTimeoutId) { + clearTimeout(maxTimeoutId); + } + maxTimeoutId = timeoutId = trailingCall = undefined; + } + + function delayed() { + var remaining = wait - (now() - stamp); + if (remaining <= 0 || remaining > wait) { + if (maxTimeoutId) { + clearTimeout(maxTimeoutId); + } + var isCalled = trailingCall; + maxTimeoutId = timeoutId = trailingCall = undefined; + if (isCalled) { + lastCalled = now(); + result = func.apply(thisArg, args); + if (!timeoutId && !maxTimeoutId) { + args = thisArg = null; + } + } + } else { + timeoutId = setTimeout(delayed, remaining); + } + } + + function maxDelayed() { + if (timeoutId) { + clearTimeout(timeoutId); + } + maxTimeoutId = timeoutId = trailingCall = undefined; + if (trailing || (maxWait !== wait)) { + lastCalled = now(); + result = func.apply(thisArg, args); + if (!timeoutId && !maxTimeoutId) { + args = thisArg = null; + } + } + } + + function debounced() { + args = arguments; + stamp = now(); + thisArg = this; + trailingCall = trailing && (timeoutId || !leading); + + if (maxWait === false) { + var leadingCall = leading && !timeoutId; + } else { + if (!maxTimeoutId && !leading) { + lastCalled = stamp; + } + var remaining = maxWait - (stamp - lastCalled), + isCalled = remaining <= 0 || remaining > maxWait; + + if (isCalled) { + if (maxTimeoutId) { + maxTimeoutId = clearTimeout(maxTimeoutId); + } + lastCalled = stamp; + result = func.apply(thisArg, args); + } + else if (!maxTimeoutId) { + maxTimeoutId = setTimeout(maxDelayed, remaining); + } + } + if (isCalled && timeoutId) { + timeoutId = clearTimeout(timeoutId); + } + else if (!timeoutId && wait !== maxWait) { + timeoutId = setTimeout(delayed, wait); + } + if (leadingCall) { + isCalled = true; + result = func.apply(thisArg, args); + } + if (isCalled && !timeoutId && !maxTimeoutId) { + args = thisArg = null; + } + return result; + } + debounced.cancel = cancel; + return debounced; + } + + /** + * Defers invoking the `func` until the current call stack has cleared. Any + * additional arguments are provided to `func` when it is invoked. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to defer. + * @param {...*} [args] The arguments to invoke the function with. + * @returns {number} Returns the timer id. + * @example + * + * _.defer(function(text) { + * console.log(text); + * }, 'deferred'); + * // logs 'deferred' after one or more milliseconds + */ + var defer = restParam(function(func, args) { + return baseDelay(func, 1, args); + }); + + /** + * Invokes `func` after `wait` milliseconds. Any additional arguments are + * provided to `func` when it is invoked. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {...*} [args] The arguments to invoke the function with. + * @returns {number} Returns the timer id. + * @example + * + * _.delay(function(text) { + * console.log(text); + * }, 1000, 'later'); + * // => logs 'later' after one second + */ + var delay = restParam(function(func, wait, args) { + return baseDelay(func, wait, args); + }); + + /** + * Creates a function that returns the result of invoking the provided + * functions with the `this` binding of the created function, where each + * successive invocation is supplied the return value of the previous. + * + * @static + * @memberOf _ + * @category Function + * @param {...Function} [funcs] Functions to invoke. + * @returns {Function} Returns the new function. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var addSquare = _.flow(_.add, square); + * addSquare(1, 2); + * // => 9 + */ + var flow = createFlow(); + + /** + * This method is like `_.flow` except that it creates a function that + * invokes the provided functions from right to left. + * + * @static + * @memberOf _ + * @alias backflow, compose + * @category Function + * @param {...Function} [funcs] Functions to invoke. + * @returns {Function} Returns the new function. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var addSquare = _.flowRight(square, _.add); + * addSquare(1, 2); + * // => 9 + */ + var flowRight = createFlow(true); + + /** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is coerced to a string and used as the + * cache key. The `func` is invoked with the `this` binding of the memoized + * function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the [`Map`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-properties-of-the-map-prototype-object) + * method interface of `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoizing function. + * @example + * + * var upperCase = _.memoize(function(string) { + * return string.toUpperCase(); + * }); + * + * upperCase('fred'); + * // => 'FRED' + * + * // modifying the result cache + * upperCase.cache.set('fred', 'BARNEY'); + * upperCase('fred'); + * // => 'BARNEY' + * + * // replacing `_.memoize.Cache` + * var object = { 'user': 'fred' }; + * var other = { 'user': 'barney' }; + * var identity = _.memoize(_.identity); + * + * identity(object); + * // => { 'user': 'fred' } + * identity(other); + * // => { 'user': 'fred' } + * + * _.memoize.Cache = WeakMap; + * var identity = _.memoize(_.identity); + * + * identity(object); + * // => { 'user': 'fred' } + * identity(other); + * // => { 'user': 'barney' } + */ + function memoize(func, resolver) { + if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + cache = memoized.cache, + key = resolver ? resolver.apply(this, args) : args[0]; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + cache.set(key, result); + return result; + }; + memoized.cache = new memoize.Cache; + return memoized; + } + + /** + * Creates a function that negates the result of the predicate `func`. The + * `func` predicate is invoked with the `this` binding and arguments of the + * created function. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} predicate The predicate to negate. + * @returns {Function} Returns the new function. + * @example + * + * function isEven(n) { + * return n % 2 == 0; + * } + * + * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); + * // => [1, 3, 5] + */ + function negate(predicate) { + if (typeof predicate != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return function() { + return !predicate.apply(this, arguments); + }; + } + + /** + * Creates a function that is restricted to invoking `func` once. Repeat calls + * to the function return the value of the first call. The `func` is invoked + * with the `this` binding and arguments of the created function. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var initialize = _.once(createApplication); + * initialize(); + * initialize(); + * // `initialize` invokes `createApplication` once + */ + function once(func) { + return before(2, func); + } + + /** + * Creates a function that invokes `func` with `partial` arguments prepended + * to those provided to the new function. This method is like `_.bind` except + * it does **not** alter the `this` binding. + * + * The `_.partial.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method does not set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * var greet = function(greeting, name) { + * return greeting + ' ' + name; + * }; + * + * var sayHelloTo = _.partial(greet, 'hello'); + * sayHelloTo('fred'); + * // => 'hello fred' + * + * // using placeholders + * var greetFred = _.partial(greet, _, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + */ + var partial = createPartial(PARTIAL_FLAG); + + /** + * This method is like `_.partial` except that partially applied arguments + * are appended to those provided to the new function. + * + * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method does not set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * var greet = function(greeting, name) { + * return greeting + ' ' + name; + * }; + * + * var greetFred = _.partialRight(greet, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + * + * // using placeholders + * var sayHelloTo = _.partialRight(greet, 'hello', _); + * sayHelloTo('fred'); + * // => 'hello fred' + */ + var partialRight = createPartial(PARTIAL_RIGHT_FLAG); + + /** + * Creates a function that invokes `func` with arguments arranged according + * to the specified indexes where the argument value at the first index is + * provided as the first argument, the argument value at the second index is + * provided as the second argument, and so on. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to rearrange arguments for. + * @param {...(number|number[])} indexes The arranged argument indexes, + * specified as individual indexes or arrays of indexes. + * @returns {Function} Returns the new function. + * @example + * + * var rearged = _.rearg(function(a, b, c) { + * return [a, b, c]; + * }, 2, 0, 1); + * + * rearged('b', 'c', 'a') + * // => ['a', 'b', 'c'] + * + * var map = _.rearg(_.map, [1, 0]); + * map(function(n) { + * return n * 3; + * }, [1, 2, 3]); + * // => [3, 6, 9] + */ + var rearg = restParam(function(func, indexes) { + return createWrapper(func, REARG_FLAG, null, null, null, baseFlatten(indexes)); + }); + + /** + * Creates a function that invokes `func` with the `this` binding of the + * created function and arguments from `start` and beyond provided as an array. + * + * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters). + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.restParam(function(what, names) { + * return what + ' ' + _.initial(names).join(', ') + + * (_.size(names) > 1 ? ', & ' : '') + _.last(names); + * }); + * + * say('hello', 'fred', 'barney', 'pebbles'); + * // => 'hello fred, barney, & pebbles' + */ + function restParam(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + rest = Array(length); + + while (++index < length) { + rest[index] = args[start + index]; + } + switch (start) { + case 0: return func.call(this, rest); + case 1: return func.call(this, args[0], rest); + case 2: return func.call(this, args[0], args[1], rest); + } + var otherArgs = Array(start + 1); + index = -1; + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = rest; + return func.apply(this, otherArgs); + }; + } + + /** + * Creates a function that invokes `func` with the `this` binding of the created + * function and an array of arguments much like [`Function#apply`](https://es5.github.io/#x15.3.4.3). + * + * **Note:** This method is based on the [spread operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator). + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to spread arguments over. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.spread(function(who, what) { + * return who + ' says ' + what; + * }); + * + * say(['fred', 'hello']); + * // => 'fred says hello' + * + * // with a Promise + * var numbers = Promise.all([ + * Promise.resolve(40), + * Promise.resolve(36) + * ]); + * + * numbers.then(_.spread(function(x, y) { + * return x + y; + * })); + * // => a Promise of 76 + */ + function spread(func) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return function(array) { + return func.apply(this, array); + }; + } + + /** + * Creates a function that only invokes `func` at most once per every `wait` + * milliseconds. The created function comes with a `cancel` method to cancel + * delayed invocations. Provide an options object to indicate that `func` + * should be invoked on the leading and/or trailing edge of the `wait` timeout. + * Subsequent calls to the throttled function return the result of the last + * `func` call. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked + * on the trailing edge of the timeout only if the the throttled function is + * invoked more than once during the `wait` timeout. + * + * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options] The options object. + * @param {boolean} [options.leading=true] Specify invoking on the leading + * edge of the timeout. + * @param {boolean} [options.trailing=true] Specify invoking on the trailing + * edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // avoid excessively updating the position while scrolling + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes + * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, { + * 'trailing': false + * })); + * + * // cancel a trailing throttled call + * jQuery(window).on('popstate', throttled.cancel); + */ + function throttle(func, wait, options) { + var leading = true, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (options === false) { + leading = false; + } else if (isObject(options)) { + leading = 'leading' in options ? !!options.leading : leading; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + debounceOptions.leading = leading; + debounceOptions.maxWait = +wait; + debounceOptions.trailing = trailing; + return debounce(func, wait, debounceOptions); + } + + /** + * Creates a function that provides `value` to the wrapper function as its + * first argument. Any additional arguments provided to the function are + * appended to those provided to the wrapper function. The wrapper is invoked + * with the `this` binding of the created function. + * + * @static + * @memberOf _ + * @category Function + * @param {*} value The value to wrap. + * @param {Function} wrapper The wrapper function. + * @returns {Function} Returns the new function. + * @example + * + * var p = _.wrap(_.escape, function(func, text) { + * return '

' + func(text) + '

'; + * }); + * + * p('fred, barney, & pebbles'); + * // => '

fred, barney, & pebbles

' + */ + function wrap(value, wrapper) { + wrapper = wrapper == null ? identity : wrapper; + return createWrapper(wrapper, PARTIAL_FLAG, null, [value], []); + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned, + * otherwise they are assigned by reference. If `customizer` is provided it is + * invoked to produce the cloned values. If `customizer` returns `undefined` + * cloning is handled by the method instead. The `customizer` is bound to + * `thisArg` and invoked with two argument; (value [, index|key, object]). + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm). + * The enumerable properties of `arguments` objects and objects created by + * constructors other than `Object` are cloned to plain `Object` objects. An + * empty object is returned for uncloneable values such as functions, DOM nodes, + * Maps, Sets, and WeakMaps. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @param {Function} [customizer] The function to customize cloning values. + * @param {*} [thisArg] The `this` binding of `customizer`. + * @returns {*} Returns the cloned value. + * @example + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * var shallow = _.clone(users); + * shallow[0] === users[0]; + * // => true + * + * var deep = _.clone(users, true); + * deep[0] === users[0]; + * // => false + * + * // using a customizer callback + * var el = _.clone(document.body, function(value) { + * if (_.isElement(value)) { + * return value.cloneNode(false); + * } + * }); + * + * el === document.body + * // => false + * el.nodeName + * // => BODY + * el.childNodes.length; + * // => 0 + */ + function clone(value, isDeep, customizer, thisArg) { + if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) { + isDeep = false; + } + else if (typeof isDeep == 'function') { + thisArg = customizer; + customizer = isDeep; + isDeep = false; + } + customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 1); + return baseClone(value, isDeep, customizer); + } + + /** + * Creates a deep clone of `value`. If `customizer` is provided it is invoked + * to produce the cloned values. If `customizer` returns `undefined` cloning + * is handled by the method instead. The `customizer` is bound to `thisArg` + * and invoked with two argument; (value [, index|key, object]). + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm). + * The enumerable properties of `arguments` objects and objects created by + * constructors other than `Object` are cloned to plain `Object` objects. An + * empty object is returned for uncloneable values such as functions, DOM nodes, + * Maps, Sets, and WeakMaps. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to deep clone. + * @param {Function} [customizer] The function to customize cloning values. + * @param {*} [thisArg] The `this` binding of `customizer`. + * @returns {*} Returns the deep cloned value. + * @example + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * var deep = _.cloneDeep(users); + * deep[0] === users[0]; + * // => false + * + * // using a customizer callback + * var el = _.cloneDeep(document.body, function(value) { + * if (_.isElement(value)) { + * return value.cloneNode(true); + * } + * }); + * + * el === document.body + * // => false + * el.nodeName + * // => BODY + * el.childNodes.length; + * // => 20 + */ + function cloneDeep(value, customizer, thisArg) { + customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 1); + return baseClone(value, true, customizer); + } + + /** + * Checks if `value` is classified as an `arguments` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ + function isArguments(value) { + var length = isObjectLike(value) ? value.length : undefined; + return isLength(length) && objToString.call(value) == argsTag; + } + + /** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(function() { return arguments; }()); + * // => false + */ + var isArray = nativeIsArray || function(value) { + return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag; + }; + + /** + * Checks if `value` is classified as a boolean primitive or object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isBoolean(false); + * // => true + * + * _.isBoolean(null); + * // => false + */ + function isBoolean(value) { + return value === true || value === false || (isObjectLike(value) && objToString.call(value) == boolTag); + } + + /** + * Checks if `value` is classified as a `Date` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isDate(new Date); + * // => true + * + * _.isDate('Mon April 23 2012'); + * // => false + */ + function isDate(value) { + return isObjectLike(value) && objToString.call(value) == dateTag; + } + + /** + * Checks if `value` is a DOM element. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. + * @example + * + * _.isElement(document.body); + * // => true + * + * _.isElement(''); + * // => false + */ + function isElement(value) { + return !!value && value.nodeType === 1 && isObjectLike(value) && + (objToString.call(value).indexOf('Element') > -1); + } + // Fallback for environments without DOM support. + if (!support.dom) { + isElement = function(value) { + return !!value && value.nodeType === 1 && isObjectLike(value) && !isPlainObject(value); + }; + } + + /** + * Checks if `value` is empty. A value is considered empty unless it is an + * `arguments` object, array, string, or jQuery-like collection with a length + * greater than `0` or an object with own enumerable properties. + * + * @static + * @memberOf _ + * @category Lang + * @param {Array|Object|string} value The value to inspect. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @example + * + * _.isEmpty(null); + * // => true + * + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false + */ + function isEmpty(value) { + if (value == null) { + return true; + } + var length = getLength(value); + if (isLength(length) && (isArray(value) || isString(value) || isArguments(value) || + (isObjectLike(value) && isFunction(value.splice)))) { + return !length; + } + return !keys(value).length; + } + + /** + * Performs a deep comparison between two values to determine if they are + * equivalent. If `customizer` is provided it is invoked to compare values. + * If `customizer` returns `undefined` comparisons are handled by the method + * instead. The `customizer` is bound to `thisArg` and invoked with three + * arguments: (value, other [, index|key]). + * + * **Note:** This method supports comparing arrays, booleans, `Date` objects, + * numbers, `Object` objects, regexes, and strings. Objects are compared by + * their own, not inherited, enumerable properties. Functions and DOM nodes + * are **not** supported. Provide a customizer function to extend support + * for comparing other values. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize value comparisons. + * @param {*} [thisArg] The `this` binding of `customizer`. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'user': 'fred' }; + * var other = { 'user': 'fred' }; + * + * object == other; + * // => false + * + * _.isEqual(object, other); + * // => true + * + * // using a customizer callback + * var array = ['hello', 'goodbye']; + * var other = ['hi', 'goodbye']; + * + * _.isEqual(array, other, function(value, other) { + * if (_.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/)) { + * return true; + * } + * }); + * // => true + */ + function isEqual(value, other, customizer, thisArg) { + customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 3); + if (!customizer && isStrictComparable(value) && isStrictComparable(other)) { + return value === other; + } + var result = customizer ? customizer(value, other) : undefined; + return result === undefined ? baseIsEqual(value, other, customizer) : !!result; + } + + /** + * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, + * `SyntaxError`, `TypeError`, or `URIError` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an error object, else `false`. + * @example + * + * _.isError(new Error); + * // => true + * + * _.isError(Error); + * // => false + */ + function isError(value) { + return isObjectLike(value) && typeof value.message == 'string' && objToString.call(value) == errorTag; + } + + /** + * Checks if `value` is a finite primitive number. + * + * **Note:** This method is based on [`Number.isFinite`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isfinite). + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. + * @example + * + * _.isFinite(10); + * // => true + * + * _.isFinite('10'); + * // => false + * + * _.isFinite(true); + * // => false + * + * _.isFinite(Object(10)); + * // => false + * + * _.isFinite(Infinity); + * // => false + */ + var isFinite = nativeNumIsFinite || function(value) { + return typeof value == 'number' && nativeIsFinite(value); + }; + + /** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ + var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in older versions of Chrome and Safari which return 'function' for regexes + // and Safari 8 equivalents which return 'object' for typed array constructors. + return objToString.call(value) == funcTag; + }; + + /** + * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. + * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(1); + * // => false + */ + function isObject(value) { + // Avoid a V8 JIT bug in Chrome 19-20. + // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. + var type = typeof value; + return type == 'function' || (!!value && type == 'object'); + } + + /** + * Performs a deep comparison between `object` and `source` to determine if + * `object` contains equivalent property values. If `customizer` is provided + * it is invoked to compare values. If `customizer` returns `undefined` + * comparisons are handled by the method instead. The `customizer` is bound + * to `thisArg` and invoked with three arguments: (value, other, index|key). + * + * **Note:** This method supports comparing properties of arrays, booleans, + * `Date` objects, numbers, `Object` objects, regexes, and strings. Functions + * and DOM nodes are **not** supported. Provide a customizer function to extend + * support for comparing other values. + * + * @static + * @memberOf _ + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Function} [customizer] The function to customize value comparisons. + * @param {*} [thisArg] The `this` binding of `customizer`. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * var object = { 'user': 'fred', 'age': 40 }; + * + * _.isMatch(object, { 'age': 40 }); + * // => true + * + * _.isMatch(object, { 'age': 36 }); + * // => false + * + * // using a customizer callback + * var object = { 'greeting': 'hello' }; + * var source = { 'greeting': 'hi' }; + * + * _.isMatch(object, source, function(value, other) { + * return _.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/) || undefined; + * }); + * // => true + */ + function isMatch(object, source, customizer, thisArg) { + var props = keys(source), + length = props.length; + + if (!length) { + return true; + } + if (object == null) { + return false; + } + customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 3); + object = toObject(object); + if (!customizer && length == 1) { + var key = props[0], + value = source[key]; + + if (isStrictComparable(value)) { + return value === object[key] && (value !== undefined || (key in object)); + } + } + var values = Array(length), + strictCompareFlags = Array(length); + + while (length--) { + value = values[length] = source[props[length]]; + strictCompareFlags[length] = isStrictComparable(value); + } + return baseIsMatch(object, props, values, strictCompareFlags, customizer); + } + + /** + * Checks if `value` is `NaN`. + * + * **Note:** This method is not the same as [`isNaN`](https://es5.github.io/#x15.1.2.4) + * which returns `true` for `undefined` and other non-numeric values. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + * @example + * + * _.isNaN(NaN); + * // => true + * + * _.isNaN(new Number(NaN)); + * // => true + * + * isNaN(undefined); + * // => true + * + * _.isNaN(undefined); + * // => false + */ + function isNaN(value) { + // An `NaN` primitive is the only value that is not equal to itself. + // Perform the `toStringTag` check first to avoid errors with some host objects in IE. + return isNumber(value) && value != +value; + } + + /** + * Checks if `value` is a native function. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, else `false`. + * @example + * + * _.isNative(Array.prototype.push); + * // => true + * + * _.isNative(_); + * // => false + */ + function isNative(value) { + if (value == null) { + return false; + } + if (objToString.call(value) == funcTag) { + return reIsNative.test(fnToString.call(value)); + } + return isObjectLike(value) && reIsHostCtor.test(value); + } + + /** + * Checks if `value` is `null`. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `null`, else `false`. + * @example + * + * _.isNull(null); + * // => true + * + * _.isNull(void 0); + * // => false + */ + function isNull(value) { + return value === null; + } + + /** + * Checks if `value` is classified as a `Number` primitive or object. + * + * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified + * as numbers, use the `_.isFinite` method. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isNumber(8.4); + * // => true + * + * _.isNumber(NaN); + * // => true + * + * _.isNumber('8.4'); + * // => false + */ + function isNumber(value) { + return typeof value == 'number' || (isObjectLike(value) && objToString.call(value) == numberTag); + } + + /** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * **Note:** This method assumes objects created by the `Object` constructor + * have no inherited enumerable properties. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ + var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) { + if (!(value && objToString.call(value) == objectTag)) { + return false; + } + var valueOf = value.valueOf, + objProto = isNative(valueOf) && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto); + + return objProto + ? (value == objProto || getPrototypeOf(value) == objProto) + : shimIsPlainObject(value); + }; + + /** + * Checks if `value` is classified as a `RegExp` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isRegExp(/abc/); + * // => true + * + * _.isRegExp('/abc/'); + * // => false + */ + function isRegExp(value) { + return (isObjectLike(value) && objToString.call(value) == regexpTag) || false; + } + + /** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ + function isString(value) { + return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag); + } + + /** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ + function isTypedArray(value) { + return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)]; + } + + /** + * Checks if `value` is `undefined`. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ + function isUndefined(value) { + return value === undefined; + } + + /** + * Converts `value` to an array. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to convert. + * @returns {Array} Returns the converted array. + * @example + * + * (function() { + * return _.toArray(arguments).slice(1); + * }(1, 2, 3)); + * // => [2, 3] + */ + function toArray(value) { + var length = value ? getLength(value) : 0; + if (!isLength(length)) { + return values(value); + } + if (!length) { + return []; + } + return arrayCopy(value); + } + + /** + * Converts `value` to a plain object flattening inherited enumerable + * properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ + function toPlainObject(value) { + return baseCopy(value, keysIn(value)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Assigns own enumerable properties of source object(s) to the destination + * object. Subsequent sources overwrite property assignments of previous sources. + * If `customizer` is provided it is invoked to produce the assigned values. + * The `customizer` is bound to `thisArg` and invoked with five arguments: + * (objectValue, sourceValue, key, object, source). + * + * **Note:** This method mutates `object` and is based on + * [`Object.assign`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign). + * + * + * @static + * @memberOf _ + * @alias extend + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @param {*} [thisArg] The `this` binding of `customizer`. + * @returns {Object} Returns `object`. + * @example + * + * _.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' }); + * // => { 'user': 'fred', 'age': 40 } + * + * // using a customizer callback + * var defaults = _.partialRight(_.assign, function(value, other) { + * return _.isUndefined(value) ? other : value; + * }); + * + * defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' }); + * // => { 'user': 'barney', 'age': 36 } + */ + var assign = createAssigner(function(object, source, customizer) { + return customizer + ? assignWith(object, source, customizer) + : baseAssign(object, source); + }); + + /** + * Creates an object that inherits from the given `prototype` object. If a + * `properties` object is provided its own enumerable properties are assigned + * to the created object. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} prototype The object to inherit from. + * @param {Object} [properties] The properties to assign to the object. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Object} Returns the new object. + * @example + * + * function Shape() { + * this.x = 0; + * this.y = 0; + * } + * + * function Circle() { + * Shape.call(this); + * } + * + * Circle.prototype = _.create(Shape.prototype, { + * 'constructor': Circle + * }); + * + * var circle = new Circle; + * circle instanceof Circle; + * // => true + * + * circle instanceof Shape; + * // => true + */ + function create(prototype, properties, guard) { + var result = baseCreate(prototype); + if (guard && isIterateeCall(prototype, properties, guard)) { + properties = null; + } + return properties ? baseAssign(result, properties) : result; + } + + /** + * Assigns own enumerable properties of source object(s) to the destination + * object for all destination properties that resolve to `undefined`. Once a + * property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * _.defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' }); + * // => { 'user': 'barney', 'age': 36 } + */ + var defaults = restParam(function(args) { + var object = args[0]; + if (object == null) { + return object; + } + args.push(assignDefaults); + return assign.apply(undefined, args); + }); + + /** + * This method is like `_.find` except that it returns the key of the first + * element `predicate` returns truthy for instead of the element itself. + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {string|undefined} Returns the key of the matched element, else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findKey(users, function(chr) { + * return chr.age < 40; + * }); + * // => 'barney' (iteration order is not guaranteed) + * + * // using the `_.matches` callback shorthand + * _.findKey(users, { 'age': 1, 'active': true }); + * // => 'pebbles' + * + * // using the `_.matchesProperty` callback shorthand + * _.findKey(users, 'active', false); + * // => 'fred' + * + * // using the `_.property` callback shorthand + * _.findKey(users, 'active'); + * // => 'barney' + */ + var findKey = createFindKey(baseForOwn); + + /** + * This method is like `_.findKey` except that it iterates over elements of + * a collection in the opposite order. + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {string|undefined} Returns the key of the matched element, else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findLastKey(users, function(chr) { + * return chr.age < 40; + * }); + * // => returns `pebbles` assuming `_.findKey` returns `barney` + * + * // using the `_.matches` callback shorthand + * _.findLastKey(users, { 'age': 36, 'active': true }); + * // => 'barney' + * + * // using the `_.matchesProperty` callback shorthand + * _.findLastKey(users, 'active', false); + * // => 'fred' + * + * // using the `_.property` callback shorthand + * _.findLastKey(users, 'active'); + * // => 'pebbles' + */ + var findLastKey = createFindKey(baseForOwnRight); + + /** + * Iterates over own and inherited enumerable properties of an object invoking + * `iteratee` for each property. The `iteratee` is bound to `thisArg` and invoked + * with three arguments: (value, key, object). Iteratee functions may exit + * iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns `object`. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forIn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => logs 'a', 'b', and 'c' (iteration order is not guaranteed) + */ + var forIn = createForIn(baseFor); + + /** + * This method is like `_.forIn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns `object`. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forInRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => logs 'c', 'b', and 'a' assuming `_.forIn ` logs 'a', 'b', and 'c' + */ + var forInRight = createForIn(baseForRight); + + /** + * Iterates over own enumerable properties of an object invoking `iteratee` + * for each property. The `iteratee` is bound to `thisArg` and invoked with + * three arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns `object`. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => logs 'a' and 'b' (iteration order is not guaranteed) + */ + var forOwn = createForOwn(baseForOwn); + + /** + * This method is like `_.forOwn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns `object`. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwnRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => logs 'b' and 'a' assuming `_.forOwn` logs 'a' and 'b' + */ + var forOwnRight = createForOwn(baseForOwnRight); + + /** + * Creates an array of function property names from all enumerable properties, + * own and inherited, of `object`. + * + * @static + * @memberOf _ + * @alias methods + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the new array of property names. + * @example + * + * _.functions(_); + * // => ['after', 'ary', 'assign', ...] + */ + function functions(object) { + return baseFunctions(object, keysIn(object)); + } + + /** + * Gets the property value of `path` on `object`. If the resolved value is + * `undefined` the `defaultValue` is used in its place. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned if the resolved value is `undefined`. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ + function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, toPath(path), path + ''); + return result === undefined ? defaultValue : result; + } + + /** + * Checks if `path` is a direct property. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` is a direct property, else `false`. + * @example + * + * var object = { 'a': { 'b': { 'c': 3 } } }; + * + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b.c'); + * // => true + * + * _.has(object, ['a', 'b', 'c']); + * // => true + */ + function has(object, path) { + if (object == null) { + return false; + } + var result = hasOwnProperty.call(object, path); + if (!result && !isKey(path)) { + path = toPath(path); + object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); + path = last(path); + result = object != null && hasOwnProperty.call(object, path); + } + return result; + } + + /** + * Creates an object composed of the inverted keys and values of `object`. + * If `object` contains duplicate values, subsequent values overwrite property + * assignments of previous values unless `multiValue` is `true`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to invert. + * @param {boolean} [multiValue] Allow multiple values per key. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invert(object); + * // => { '1': 'c', '2': 'b' } + * + * // with `multiValue` + * _.invert(object, true); + * // => { '1': ['a', 'c'], '2': ['b'] } + */ + function invert(object, multiValue, guard) { + if (guard && isIterateeCall(object, multiValue, guard)) { + multiValue = null; + } + var index = -1, + props = keys(object), + length = props.length, + result = {}; + + while (++index < length) { + var key = props[index], + value = object[key]; + + if (multiValue) { + if (hasOwnProperty.call(result, value)) { + result[value].push(key); + } else { + result[value] = [key]; + } + } + else { + result[value] = key; + } + } + return result; + } + + /** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys) + * for more details. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ + var keys = !nativeKeys ? shimKeys : function(object) { + if (object) { + var Ctor = object.constructor, + length = object.length; + } + if ((typeof Ctor == 'function' && Ctor.prototype === object) || + (typeof object != 'function' && isLength(length))) { + return shimKeys(object); + } + return isObject(object) ? nativeKeys(object) : []; + }; + + /** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ + function keysIn(object) { + if (object == null) { + return []; + } + if (!isObject(object)) { + object = Object(object); + } + var length = object.length; + length = (length && isLength(length) && + (isArray(object) || (support.nonEnumArgs && isArguments(object))) && length) || 0; + + var Ctor = object.constructor, + index = -1, + isProto = typeof Ctor == 'function' && Ctor.prototype === object, + result = Array(length), + skipIndexes = length > 0; + + while (++index < length) { + result[index] = (index + ''); + } + for (var key in object) { + if (!(skipIndexes && isIndex(key, length)) && + !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; + } + + /** + * Creates an object with the same keys as `object` and values generated by + * running each own enumerable property of `object` through `iteratee`. The + * iteratee function is bound to `thisArg` and invoked with three arguments: + * (value, key, object). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns the new mapped object. + * @example + * + * _.mapValues({ 'a': 1, 'b': 2 }, function(n) { + * return n * 3; + * }); + * // => { 'a': 3, 'b': 6 } + * + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; + * + * // using the `_.property` callback shorthand + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + */ + function mapValues(object, iteratee, thisArg) { + var result = {}; + iteratee = getCallback(iteratee, thisArg, 3); + + baseForOwn(object, function(value, key, object) { + result[key] = iteratee(value, key, object); + }); + return result; + } + + /** + * Recursively merges own enumerable properties of the source object(s), that + * don't resolve to `undefined` into the destination object. Subsequent sources + * overwrite property assignments of previous sources. If `customizer` is + * provided it is invoked to produce the merged values of the destination and + * source properties. If `customizer` returns `undefined` merging is handled + * by the method instead. The `customizer` is bound to `thisArg` and invoked + * with five arguments: (objectValue, sourceValue, key, object, source). + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @param {*} [thisArg] The `this` binding of `customizer`. + * @returns {Object} Returns `object`. + * @example + * + * var users = { + * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }] + * }; + * + * var ages = { + * 'data': [{ 'age': 36 }, { 'age': 40 }] + * }; + * + * _.merge(users, ages); + * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] } + * + * // using a customizer callback + * var object = { + * 'fruits': ['apple'], + * 'vegetables': ['beet'] + * }; + * + * var other = { + * 'fruits': ['banana'], + * 'vegetables': ['carrot'] + * }; + * + * _.merge(object, other, function(a, b) { + * if (_.isArray(a)) { + * return a.concat(b); + * } + * }); + * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] } + */ + var merge = createAssigner(baseMerge); + + /** + * The opposite of `_.pick`; this method creates an object composed of the + * own and inherited enumerable properties of `object` that are not omitted. + * Property names may be specified as individual arguments or as arrays of + * property names. If `predicate` is provided it is invoked for each property + * of `object` omitting the properties `predicate` returns truthy for. The + * predicate is bound to `thisArg` and invoked with three arguments: + * (value, key, object). + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {Function|...(string|string[])} [predicate] The function invoked per + * iteration or property names to omit, specified as individual property + * names or arrays of property names. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'user': 'fred', 'age': 40 }; + * + * _.omit(object, 'age'); + * // => { 'user': 'fred' } + * + * _.omit(object, _.isNumber); + * // => { 'user': 'fred' } + */ + var omit = restParam(function(object, props) { + if (object == null) { + return {}; + } + if (typeof props[0] != 'function') { + var props = arrayMap(baseFlatten(props), String); + return pickByArray(object, baseDifference(keysIn(object), props)); + } + var predicate = bindCallback(props[0], props[1], 3); + return pickByCallback(object, function(value, key, object) { + return !predicate(value, key, object); + }); + }); + + /** + * Creates a two dimensional array of the key-value pairs for `object`, + * e.g. `[[key1, value1], [key2, value2]]`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the new array of key-value pairs. + * @example + * + * _.pairs({ 'barney': 36, 'fred': 40 }); + * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed) + */ + function pairs(object) { + var index = -1, + props = keys(object), + length = props.length, + result = Array(length); + + while (++index < length) { + var key = props[index]; + result[index] = [key, object[key]]; + } + return result; + } + + /** + * Creates an object composed of the picked `object` properties. Property + * names may be specified as individual arguments or as arrays of property + * names. If `predicate` is provided it is invoked for each property of `object` + * picking the properties `predicate` returns truthy for. The predicate is + * bound to `thisArg` and invoked with three arguments: (value, key, object). + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {Function|...(string|string[])} [predicate] The function invoked per + * iteration or property names to pick, specified as individual property + * names or arrays of property names. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'user': 'fred', 'age': 40 }; + * + * _.pick(object, 'user'); + * // => { 'user': 'fred' } + * + * _.pick(object, _.isString); + * // => { 'user': 'fred' } + */ + var pick = restParam(function(object, props) { + if (object == null) { + return {}; + } + return typeof props[0] == 'function' + ? pickByCallback(object, bindCallback(props[0], props[1], 3)) + : pickByArray(object, baseFlatten(props)); + }); + + /** + * This method is like `_.get` except that if the resolved value is a function + * it is invoked with the `this` binding of its parent object and its result + * is returned. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to resolve. + * @param {*} [defaultValue] The value returned if the resolved value is `undefined`. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; + * + * _.result(object, 'a[0].b.c1'); + * // => 3 + * + * _.result(object, 'a[0].b.c2'); + * // => 4 + * + * _.result(object, 'a.b.c', 'default'); + * // => 'default' + * + * _.result(object, 'a.b.c', _.constant('default')); + * // => 'default' + */ + function result(object, path, defaultValue) { + var result = object == null ? undefined : object[path]; + if (result === undefined) { + if (object != null && !isKey(path, object)) { + path = toPath(path); + object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); + result = object == null ? undefined : object[last(path)]; + } + result = result === undefined ? defaultValue : result; + } + return isFunction(result) ? result.call(object) : result; + } + + /** + * Sets the property value of `path` on `object`. If a portion of `path` + * does not exist it is created. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to augment. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.set(object, 'a[0].b.c', 4); + * console.log(object.a[0].b.c); + * // => 4 + * + * _.set(object, 'x[0].y.z', 5); + * console.log(object.x[0].y.z); + * // => 5 + */ + function set(object, path, value) { + if (object == null) { + return object; + } + var pathKey = (path + ''); + path = (object[pathKey] != null || isKey(path, object)) ? [pathKey] : toPath(path); + + var index = -1, + length = path.length, + endIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = path[index]; + if (isObject(nested)) { + if (index == endIndex) { + nested[key] = value; + } else if (nested[key] == null) { + nested[key] = isIndex(path[index + 1]) ? [] : {}; + } + } + nested = nested[key]; + } + return object; + } + + /** + * An alternative to `_.reduce`; this method transforms `object` to a new + * `accumulator` object which is the result of running each of its own enumerable + * properties through `iteratee`, with each invocation potentially mutating + * the `accumulator` object. The `iteratee` is bound to `thisArg` and invoked + * with four arguments: (accumulator, value, key, object). Iteratee functions + * may exit iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Array|Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The custom accumulator value. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {*} Returns the accumulated value. + * @example + * + * _.transform([2, 3, 4], function(result, n) { + * result.push(n *= n); + * return n % 2 == 0; + * }); + * // => [4, 9] + * + * _.transform({ 'a': 1, 'b': 2 }, function(result, n, key) { + * result[key] = n * 3; + * }); + * // => { 'a': 3, 'b': 6 } + */ + function transform(object, iteratee, accumulator, thisArg) { + var isArr = isArray(object) || isTypedArray(object); + iteratee = getCallback(iteratee, thisArg, 4); + + if (accumulator == null) { + if (isArr || isObject(object)) { + var Ctor = object.constructor; + if (isArr) { + accumulator = isArray(object) ? new Ctor : []; + } else { + accumulator = baseCreate(isFunction(Ctor) && Ctor.prototype); + } + } else { + accumulator = {}; + } + } + (isArr ? arrayEach : baseForOwn)(object, function(value, index, object) { + return iteratee(accumulator, value, index, object); + }); + return accumulator; + } + + /** + * Creates an array of the own enumerable property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */ + function values(object) { + return baseValues(object, keys(object)); + } + + /** + * Creates an array of the own and inherited enumerable property values + * of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.valuesIn(new Foo); + * // => [1, 2, 3] (iteration order is not guaranteed) + */ + function valuesIn(object) { + return baseValues(object, keysIn(object)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Checks if `n` is between `start` and up to but not including, `end`. If + * `end` is not specified it is set to `start` with `start` then set to `0`. + * + * @static + * @memberOf _ + * @category Number + * @param {number} n The number to check. + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `n` is in the range, else `false`. + * @example + * + * _.inRange(3, 2, 4); + * // => true + * + * _.inRange(4, 8); + * // => true + * + * _.inRange(4, 2); + * // => false + * + * _.inRange(2, 2); + * // => false + * + * _.inRange(1.2, 2); + * // => true + * + * _.inRange(5.2, 4); + * // => false + */ + function inRange(value, start, end) { + start = +start || 0; + if (typeof end === 'undefined') { + end = start; + start = 0; + } else { + end = +end || 0; + } + return value >= nativeMin(start, end) && value < nativeMax(start, end); + } + + /** + * Produces a random number between `min` and `max` (inclusive). If only one + * argument is provided a number between `0` and the given number is returned. + * If `floating` is `true`, or either `min` or `max` are floats, a floating-point + * number is returned instead of an integer. + * + * @static + * @memberOf _ + * @category Number + * @param {number} [min=0] The minimum possible value. + * @param {number} [max=1] The maximum possible value. + * @param {boolean} [floating] Specify returning a floating-point number. + * @returns {number} Returns the random number. + * @example + * + * _.random(0, 5); + * // => an integer between 0 and 5 + * + * _.random(5); + * // => also an integer between 0 and 5 + * + * _.random(5, true); + * // => a floating-point number between 0 and 5 + * + * _.random(1.2, 5.2); + * // => a floating-point number between 1.2 and 5.2 + */ + function random(min, max, floating) { + if (floating && isIterateeCall(min, max, floating)) { + max = floating = null; + } + var noMin = min == null, + noMax = max == null; + + if (floating == null) { + if (noMax && typeof min == 'boolean') { + floating = min; + min = 1; + } + else if (typeof max == 'boolean') { + floating = max; + noMax = true; + } + } + if (noMin && noMax) { + max = 1; + noMax = false; + } + min = +min || 0; + if (noMax) { + max = min; + min = 0; + } else { + max = +max || 0; + } + if (floating || min % 1 || max % 1) { + var rand = nativeRandom(); + return nativeMin(min + (rand * (max - min + parseFloat('1e-' + ((rand + '').length - 1)))), max); + } + return baseRandom(min, max); + } + + /*------------------------------------------------------------------------*/ + + /** + * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the camel cased string. + * @example + * + * _.camelCase('Foo Bar'); + * // => 'fooBar' + * + * _.camelCase('--foo-bar'); + * // => 'fooBar' + * + * _.camelCase('__foo_bar__'); + * // => 'fooBar' + */ + var camelCase = createCompounder(function(result, word, index) { + word = word.toLowerCase(); + return result + (index ? (word.charAt(0).toUpperCase() + word.slice(1)) : word); + }); + + /** + * Capitalizes the first character of `string`. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to capitalize. + * @returns {string} Returns the capitalized string. + * @example + * + * _.capitalize('fred'); + * // => 'Fred' + */ + function capitalize(string) { + string = baseToString(string); + return string && (string.charAt(0).toUpperCase() + string.slice(1)); + } + + /** + * Deburrs `string` by converting [latin-1 supplementary letters](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) + * to basic latin letters and removing [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to deburr. + * @returns {string} Returns the deburred string. + * @example + * + * _.deburr('déjà vu'); + * // => 'deja vu' + */ + function deburr(string) { + string = baseToString(string); + return string && string.replace(reLatin1, deburrLetter).replace(reComboMark, ''); + } + + /** + * Checks if `string` ends with the given target string. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to search. + * @param {string} [target] The string to search for. + * @param {number} [position=string.length] The position to search from. + * @returns {boolean} Returns `true` if `string` ends with `target`, else `false`. + * @example + * + * _.endsWith('abc', 'c'); + * // => true + * + * _.endsWith('abc', 'b'); + * // => false + * + * _.endsWith('abc', 'b', 2); + * // => true + */ + function endsWith(string, target, position) { + string = baseToString(string); + target = (target + ''); + + var length = string.length; + position = position === undefined + ? length + : nativeMin(position < 0 ? 0 : (+position || 0), length); + + position -= target.length; + return position >= 0 && string.indexOf(target, position) == position; + } + + /** + * Converts the characters "&", "<", ">", '"', "'", and "\`", in `string` to + * their corresponding HTML entities. + * + * **Note:** No other characters are escaped. To escape additional characters + * use a third-party library like [_he_](https://mths.be/he). + * + * Though the ">" character is escaped for symmetry, characters like + * ">" and "/" don't require escaping in HTML and have no special meaning + * unless they're part of a tag or unquoted attribute value. + * See [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) + * (under "semi-related fun fact") for more details. + * + * Backticks are escaped because in Internet Explorer < 9, they can break out + * of attribute values or HTML comments. See [#59](https://html5sec.org/#59), + * [#102](https://html5sec.org/#102), [#108](https://html5sec.org/#108), and + * [#133](https://html5sec.org/#133) of the [HTML5 Security Cheatsheet](https://html5sec.org/) + * for more details. + * + * When working with HTML you should always [quote attribute values](http://wonko.com/post/html-escaping) + * to reduce XSS vectors. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ + function escape(string) { + // Reset `lastIndex` because in IE < 9 `String#replace` does not. + string = baseToString(string); + return (string && reHasUnescapedHtml.test(string)) + ? string.replace(reUnescapedHtml, escapeHtmlChar) + : string; + } + + /** + * Escapes the `RegExp` special characters "\", "/", "^", "$", ".", "|", "?", + * "*", "+", "(", ")", "[", "]", "{" and "}" in `string`. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escapeRegExp('[lodash](https://lodash.com/)'); + * // => '\[lodash\]\(https:\/\/lodash\.com\/\)' + */ + function escapeRegExp(string) { + string = baseToString(string); + return (string && reHasRegExpChars.test(string)) + ? string.replace(reRegExpChars, '\\$&') + : string; + } + + /** + * Converts `string` to [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the kebab cased string. + * @example + * + * _.kebabCase('Foo Bar'); + * // => 'foo-bar' + * + * _.kebabCase('fooBar'); + * // => 'foo-bar' + * + * _.kebabCase('__foo_bar__'); + * // => 'foo-bar' + */ + var kebabCase = createCompounder(function(result, word, index) { + return result + (index ? '-' : '') + word.toLowerCase(); + }); + + /** + * Pads `string` on the left and right sides if it is shorter than `length`. + * Padding characters are truncated if they can't be evenly divided by `length`. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.pad('abc', 8); + * // => ' abc ' + * + * _.pad('abc', 8, '_-'); + * // => '_-abc_-_' + * + * _.pad('abc', 3); + * // => 'abc' + */ + function pad(string, length, chars) { + string = baseToString(string); + length = +length; + + var strLength = string.length; + if (strLength >= length || !nativeIsFinite(length)) { + return string; + } + var mid = (length - strLength) / 2, + leftLength = floor(mid), + rightLength = ceil(mid); + + chars = createPadding('', rightLength, chars); + return chars.slice(0, leftLength) + string + chars; + } + + /** + * Pads `string` on the left side if it is shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padLeft('abc', 6); + * // => ' abc' + * + * _.padLeft('abc', 6, '_-'); + * // => '_-_abc' + * + * _.padLeft('abc', 3); + * // => 'abc' + */ + var padLeft = createPadDir(); + + /** + * Pads `string` on the right side if it is shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padRight('abc', 6); + * // => 'abc ' + * + * _.padRight('abc', 6, '_-'); + * // => 'abc_-_' + * + * _.padRight('abc', 3); + * // => 'abc' + */ + var padRight = createPadDir(true); + + /** + * Converts `string` to an integer of the specified radix. If `radix` is + * `undefined` or `0`, a `radix` of `10` is used unless `value` is a hexadecimal, + * in which case a `radix` of `16` is used. + * + * **Note:** This method aligns with the [ES5 implementation](https://es5.github.io/#E) + * of `parseInt`. + * + * @static + * @memberOf _ + * @category String + * @param {string} string The string to convert. + * @param {number} [radix] The radix to interpret `value` by. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {number} Returns the converted integer. + * @example + * + * _.parseInt('08'); + * // => 8 + * + * _.map(['6', '08', '10'], _.parseInt); + * // => [6, 8, 10] + */ + function parseInt(string, radix, guard) { + if (guard && isIterateeCall(string, radix, guard)) { + radix = 0; + } + return nativeParseInt(string, radix); + } + // Fallback for environments with pre-ES5 implementations. + if (nativeParseInt(whitespace + '08') != 8) { + parseInt = function(string, radix, guard) { + // Firefox < 21 and Opera < 15 follow ES3 for `parseInt`. + // Chrome fails to trim leading whitespace characters. + // See https://code.google.com/p/v8/issues/detail?id=3109 for more details. + if (guard ? isIterateeCall(string, radix, guard) : radix == null) { + radix = 0; + } else if (radix) { + radix = +radix; + } + string = trim(string); + return nativeParseInt(string, radix || (reHasHexPrefix.test(string) ? 16 : 10)); + }; + } + + /** + * Repeats the given string `n` times. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to repeat. + * @param {number} [n=0] The number of times to repeat the string. + * @returns {string} Returns the repeated string. + * @example + * + * _.repeat('*', 3); + * // => '***' + * + * _.repeat('abc', 2); + * // => 'abcabc' + * + * _.repeat('abc', 0); + * // => '' + */ + function repeat(string, n) { + var result = ''; + string = baseToString(string); + n = +n; + if (n < 1 || !string || !nativeIsFinite(n)) { + return result; + } + // Leverage the exponentiation by squaring algorithm for a faster repeat. + // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. + do { + if (n % 2) { + result += string; + } + n = floor(n / 2); + string += string; + } while (n); + + return result; + } + + /** + * Converts `string` to [snake case](https://en.wikipedia.org/wiki/Snake_case). + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the snake cased string. + * @example + * + * _.snakeCase('Foo Bar'); + * // => 'foo_bar' + * + * _.snakeCase('fooBar'); + * // => 'foo_bar' + * + * _.snakeCase('--foo-bar'); + * // => 'foo_bar' + */ + var snakeCase = createCompounder(function(result, word, index) { + return result + (index ? '_' : '') + word.toLowerCase(); + }); + + /** + * Converts `string` to [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the start cased string. + * @example + * + * _.startCase('--foo-bar'); + * // => 'Foo Bar' + * + * _.startCase('fooBar'); + * // => 'Foo Bar' + * + * _.startCase('__foo_bar__'); + * // => 'Foo Bar' + */ + var startCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + (word.charAt(0).toUpperCase() + word.slice(1)); + }); + + /** + * Checks if `string` starts with the given target string. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to search. + * @param {string} [target] The string to search for. + * @param {number} [position=0] The position to search from. + * @returns {boolean} Returns `true` if `string` starts with `target`, else `false`. + * @example + * + * _.startsWith('abc', 'a'); + * // => true + * + * _.startsWith('abc', 'b'); + * // => false + * + * _.startsWith('abc', 'b', 1); + * // => true + */ + function startsWith(string, target, position) { + string = baseToString(string); + position = position == null + ? 0 + : nativeMin(position < 0 ? 0 : (+position || 0), string.length); + + return string.lastIndexOf(target, position) == position; + } + + /** + * Creates a compiled template function that can interpolate data properties + * in "interpolate" delimiters, HTML-escape interpolated data properties in + * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data + * properties may be accessed as free variables in the template. If a setting + * object is provided it takes precedence over `_.templateSettings` values. + * + * **Note:** In the development build `_.template` utilizes + * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) + * for easier debugging. + * + * For more information on precompiling templates see + * [lodash's custom builds documentation](https://lodash.com/custom-builds). + * + * For more information on Chrome extension sandboxes see + * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The template string. + * @param {Object} [options] The options object. + * @param {RegExp} [options.escape] The HTML "escape" delimiter. + * @param {RegExp} [options.evaluate] The "evaluate" delimiter. + * @param {Object} [options.imports] An object to import into the template as free variables. + * @param {RegExp} [options.interpolate] The "interpolate" delimiter. + * @param {string} [options.sourceURL] The sourceURL of the template's compiled source. + * @param {string} [options.variable] The data object variable name. + * @param- {Object} [otherOptions] Enables the legacy `options` param signature. + * @returns {Function} Returns the compiled template function. + * @example + * + * // using the "interpolate" delimiter to create a compiled template + * var compiled = _.template('hello <%= user %>!'); + * compiled({ 'user': 'fred' }); + * // => 'hello fred!' + * + * // using the HTML "escape" delimiter to escape data property values + * var compiled = _.template('<%- value %>'); + * compiled({ 'value': ' tag and this tag and this diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/reporters/templates/style.html b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/reporters/templates/style.html new file mode 100644 index 00000000..4c9c37cf --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/reporters/templates/style.html @@ -0,0 +1,324 @@ + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/reporters/xunit.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/reporters/xunit.js new file mode 100644 index 00000000..01d9d878 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/reporters/xunit.js @@ -0,0 +1,174 @@ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var utils = require('../utils'); +var inherits = utils.inherits; +var fs = require('fs'); +var escape = utils.escape; +var mkdirp = require('mkdirp'); +var path = require('path'); + +/** + * Save timer references to avoid Sinon interfering (see GH-237). + */ + +/* eslint-disable no-unused-vars, no-native-reassign */ +var Date = global.Date; +var setTimeout = global.setTimeout; +var setInterval = global.setInterval; +var clearTimeout = global.clearTimeout; +var clearInterval = global.clearInterval; +/* eslint-enable no-unused-vars, no-native-reassign */ + +/** + * Expose `XUnit`. + */ + +exports = module.exports = XUnit; + +/** + * Initialize a new `XUnit` reporter. + * + * @api public + * @param {Runner} runner + */ +function XUnit(runner, options) { + Base.call(this, runner); + + var stats = this.stats; + var tests = []; + var self = this; + + if (options.reporterOptions && options.reporterOptions.output) { + if (!fs.createWriteStream) { + throw new Error('file output not supported in browser'); + } + mkdirp.sync(path.dirname(options.reporterOptions.output)); + self.fileStream = fs.createWriteStream(options.reporterOptions.output); + } + + runner.on('pending', function(test) { + tests.push(test); + }); + + runner.on('pass', function(test) { + tests.push(test); + }); + + runner.on('fail', function(test) { + tests.push(test); + }); + + runner.on('end', function() { + self.write(tag('testsuite', { + name: 'Mocha Tests', + tests: stats.tests, + failures: stats.failures, + errors: stats.failures, + skipped: stats.tests - stats.failures - stats.passes, + timestamp: (new Date()).toUTCString(), + time: (stats.duration / 1000) || 0 + }, false)); + + tests.forEach(function(t) { + self.test(t); + }); + + self.write(''); + }); +} + +/** + * Inherit from `Base.prototype`. + */ +inherits(XUnit, Base); + +/** + * Override done to close the stream (if it's a file). + * + * @param failures + * @param {Function} fn + */ +XUnit.prototype.done = function(failures, fn) { + if (this.fileStream) { + this.fileStream.end(function() { + fn(failures); + }); + } else { + fn(failures); + } +}; + +/** + * Write out the given line. + * + * @param {string} line + */ +XUnit.prototype.write = function(line) { + if (this.fileStream) { + this.fileStream.write(line + '\n'); + } else if (typeof process === 'object' && process.stdout) { + process.stdout.write(line + '\n'); + } else { + console.log(line); + } +}; + +/** + * Output tag for the given `test.` + * + * @param {Test} test + */ +XUnit.prototype.test = function(test) { + var attrs = { + classname: test.parent.fullTitle(), + name: test.title, + time: (test.duration / 1000) || 0 + }; + + if (test.state === 'failed') { + var err = test.err; + this.write(tag('testcase', attrs, false, tag('failure', {}, false, cdata(escape(err.message) + '\n' + err.stack)))); + } else if (test.pending) { + this.write(tag('testcase', attrs, false, tag('skipped', {}, true))); + } else { + this.write(tag('testcase', attrs, true)); + } +}; + +/** + * HTML tag helper. + * + * @param name + * @param attrs + * @param close + * @param content + * @return {string} + */ +function tag(name, attrs, close, content) { + var end = close ? '/>' : '>'; + var pairs = []; + var tag; + + for (var key in attrs) { + if (Object.prototype.hasOwnProperty.call(attrs, key)) { + pairs.push(key + '="' + escape(attrs[key]) + '"'); + } + } + + tag = '<' + name + (pairs.length ? ' ' + pairs.join(' ') : '') + end; + if (content) { + tag += content + ''; +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/runnable.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/runnable.js new file mode 100644 index 00000000..9ac45de3 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/runnable.js @@ -0,0 +1,352 @@ +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter; +var Pending = require('./pending'); +var debug = require('debug')('mocha:runnable'); +var milliseconds = require('./ms'); +var utils = require('./utils'); +var inherits = utils.inherits; + +/** + * Save timer references to avoid Sinon interfering (see GH-237). + */ + +/* eslint-disable no-unused-vars, no-native-reassign */ +var Date = global.Date; +var setTimeout = global.setTimeout; +var setInterval = global.setInterval; +var clearTimeout = global.clearTimeout; +var clearInterval = global.clearInterval; +/* eslint-enable no-unused-vars, no-native-reassign */ + +/** + * Object#toString(). + */ + +var toString = Object.prototype.toString; + +/** + * Expose `Runnable`. + */ + +module.exports = Runnable; + +/** + * Initialize a new `Runnable` with the given `title` and callback `fn`. + * + * @param {String} title + * @param {Function} fn + * @api private + * @param {string} title + * @param {Function} fn + */ +function Runnable(title, fn) { + this.title = title; + this.fn = fn; + this.async = fn && fn.length; + this.sync = !this.async; + this._timeout = 2000; + this._slow = 75; + this._enableTimeouts = true; + this.timedOut = false; + this._trace = new Error('done() called multiple times'); + this._retries = -1; + this._currentRetry = 0; +} + +/** + * Inherit from `EventEmitter.prototype`. + */ +inherits(Runnable, EventEmitter); + +/** + * Set & get timeout `ms`. + * + * @api private + * @param {number|string} ms + * @return {Runnable|number} ms or Runnable instance. + */ +Runnable.prototype.timeout = function(ms) { + if (!arguments.length) { + return this._timeout; + } + if (ms === 0) { + this._enableTimeouts = false; + } + if (typeof ms === 'string') { + ms = milliseconds(ms); + } + debug('timeout %d', ms); + this._timeout = ms; + if (this.timer) { + this.resetTimeout(); + } + return this; +}; + +/** + * Set & get slow `ms`. + * + * @api private + * @param {number|string} ms + * @return {Runnable|number} ms or Runnable instance. + */ +Runnable.prototype.slow = function(ms) { + if (!arguments.length) { + return this._slow; + } + if (typeof ms === 'string') { + ms = milliseconds(ms); + } + debug('timeout %d', ms); + this._slow = ms; + return this; +}; + +/** + * Set and get whether timeout is `enabled`. + * + * @api private + * @param {boolean} enabled + * @return {Runnable|boolean} enabled or Runnable instance. + */ +Runnable.prototype.enableTimeouts = function(enabled) { + if (!arguments.length) { + return this._enableTimeouts; + } + debug('enableTimeouts %s', enabled); + this._enableTimeouts = enabled; + return this; +}; + +/** + * Halt and mark as pending. + * + * @api private + */ +Runnable.prototype.skip = function() { + throw new Pending(); +}; + +/** + * Set number of retries. + * + * @api private + */ +Runnable.prototype.retries = function(n) { + if (!arguments.length) { + return this._retries; + } + this._retries = n; +}; + +/** + * Get current retry + * + * @api private + */ +Runnable.prototype.currentRetry = function(n) { + if (!arguments.length) { + return this._currentRetry; + } + this._currentRetry = n; +}; + +/** + * Return the full title generated by recursively concatenating the parent's + * full title. + * + * @api public + * @return {string} + */ +Runnable.prototype.fullTitle = function() { + return this.parent.fullTitle() + ' ' + this.title; +}; + +/** + * Clear the timeout. + * + * @api private + */ +Runnable.prototype.clearTimeout = function() { + clearTimeout(this.timer); +}; + +/** + * Inspect the runnable void of private properties. + * + * @api private + * @return {string} + */ +Runnable.prototype.inspect = function() { + return JSON.stringify(this, function(key, val) { + if (key[0] === '_') { + return; + } + if (key === 'parent') { + return '#'; + } + if (key === 'ctx') { + return '#'; + } + return val; + }, 2); +}; + +/** + * Reset the timeout. + * + * @api private + */ +Runnable.prototype.resetTimeout = function() { + var self = this; + var ms = this.timeout() || 1e9; + + if (!this._enableTimeouts) { + return; + } + this.clearTimeout(); + this.timer = setTimeout(function() { + if (!self._enableTimeouts) { + return; + } + self.callback(new Error('timeout of ' + ms + 'ms exceeded. Ensure the done() callback is being called in this test.')); + self.timedOut = true; + }, ms); +}; + +/** + * Whitelist a list of globals for this test run. + * + * @api private + * @param {string[]} globals + */ +Runnable.prototype.globals = function(globals) { + if (!arguments.length) { + return this._allowedGlobals; + } + this._allowedGlobals = globals; +}; + +/** + * Run the test and invoke `fn(err)`. + * + * @param {Function} fn + * @api private + */ +Runnable.prototype.run = function(fn) { + var self = this; + var start = new Date(); + var ctx = this.ctx; + var finished; + var emitted; + + // Sometimes the ctx exists, but it is not runnable + if (ctx && ctx.runnable) { + ctx.runnable(this); + } + + // called multiple times + function multiple(err) { + if (emitted) { + return; + } + emitted = true; + self.emit('error', err || new Error('done() called multiple times; stacktrace may be inaccurate')); + } + + // finished + function done(err) { + var ms = self.timeout(); + if (self.timedOut) { + return; + } + if (finished) { + return multiple(err || self._trace); + } + + self.clearTimeout(); + self.duration = new Date() - start; + finished = true; + if (!err && self.duration > ms && self._enableTimeouts) { + err = new Error('timeout of ' + ms + 'ms exceeded. Ensure the done() callback is being called in this test.'); + } + fn(err); + } + + // for .resetTimeout() + this.callback = done; + + // explicit async with `done` argument + if (this.async) { + this.resetTimeout(); + + if (this.allowUncaught) { + return callFnAsync(this.fn); + } + try { + callFnAsync(this.fn); + } catch (err) { + done(utils.getError(err)); + } + return; + } + + if (this.allowUncaught) { + callFn(this.fn); + done(); + return; + } + + // sync or promise-returning + try { + if (this.pending) { + done(); + } else { + callFn(this.fn); + } + } catch (err) { + done(utils.getError(err)); + } + + function callFn(fn) { + var result = fn.call(ctx); + if (result && typeof result.then === 'function') { + self.resetTimeout(); + result + .then(function() { + done(); + // Return null so libraries like bluebird do not warn about + // subsequently constructed Promises. + return null; + }, + function(reason) { + done(reason || new Error('Promise rejected with no or falsy reason')); + }); + } else { + if (self.asyncOnly) { + return done(new Error('--async-only option in use without declaring `done()` or returning a promise')); + } + + done(); + } + } + + function callFnAsync(fn) { + fn.call(ctx, function(err) { + if (err instanceof Error || toString.call(err) === '[object Error]') { + return done(err); + } + if (err) { + if (Object.prototype.toString.call(err) === '[object Object]') { + return done(new Error('done() invoked with non-Error: ' + + JSON.stringify(err))); + } + return done(new Error('done() invoked with non-Error: ' + err)); + } + done(); + }); + } +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/runner.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/runner.js new file mode 100644 index 00000000..e4d935e8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/runner.js @@ -0,0 +1,899 @@ +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter; +var Pending = require('./pending'); +var utils = require('./utils'); +var inherits = utils.inherits; +var debug = require('debug')('mocha:runner'); +var Runnable = require('./runnable'); +var filter = utils.filter; +var indexOf = utils.indexOf; +var keys = utils.keys; +var stackFilter = utils.stackTraceFilter(); +var stringify = utils.stringify; +var type = utils.type; +var undefinedError = utils.undefinedError; +var isArray = utils.isArray; + +/** + * Non-enumerable globals. + */ + +var globals = [ + 'setTimeout', + 'clearTimeout', + 'setInterval', + 'clearInterval', + 'XMLHttpRequest', + 'Date', + 'setImmediate', + 'clearImmediate' +]; + +/** + * Expose `Runner`. + */ + +module.exports = Runner; + +/** + * Initialize a `Runner` for the given `suite`. + * + * Events: + * + * - `start` execution started + * - `end` execution complete + * - `suite` (suite) test suite execution started + * - `suite end` (suite) all tests (and sub-suites) have finished + * - `test` (test) test execution started + * - `test end` (test) test completed + * - `hook` (hook) hook execution started + * - `hook end` (hook) hook complete + * - `pass` (test) test passed + * - `fail` (test, err) test failed + * - `pending` (test) test pending + * + * @api public + * @param {Suite} suite Root suite + * @param {boolean} [delay] Whether or not to delay execution of root suite + * until ready. + */ +function Runner(suite, delay) { + var self = this; + this._globals = []; + this._abort = false; + this._delay = delay; + this.suite = suite; + this.started = false; + this.total = suite.total(); + this.failures = 0; + this.on('test end', function(test) { + self.checkGlobals(test); + }); + this.on('hook end', function(hook) { + self.checkGlobals(hook); + }); + this._defaultGrep = /.*/; + this.grep(this._defaultGrep); + this.globals(this.globalProps().concat(extraGlobals())); +} + +/** + * Wrapper for setImmediate, process.nextTick, or browser polyfill. + * + * @param {Function} fn + * @api private + */ +Runner.immediately = global.setImmediate || process.nextTick; + +/** + * Inherit from `EventEmitter.prototype`. + */ +inherits(Runner, EventEmitter); + +/** + * Run tests with full titles matching `re`. Updates runner.total + * with number of tests matched. + * + * @param {RegExp} re + * @param {Boolean} invert + * @return {Runner} for chaining + * @api public + * @param {RegExp} re + * @param {boolean} invert + * @return {Runner} Runner instance. + */ +Runner.prototype.grep = function(re, invert) { + debug('grep %s', re); + this._grep = re; + this._invert = invert; + this.total = this.grepTotal(this.suite); + return this; +}; + +/** + * Returns the number of tests matching the grep search for the + * given suite. + * + * @param {Suite} suite + * @return {Number} + * @api public + * @param {Suite} suite + * @return {number} + */ +Runner.prototype.grepTotal = function(suite) { + var self = this; + var total = 0; + + suite.eachTest(function(test) { + var match = self._grep.test(test.fullTitle()); + if (self._invert) { + match = !match; + } + if (match) { + total++; + } + }); + + return total; +}; + +/** + * Return a list of global properties. + * + * @return {Array} + * @api private + */ +Runner.prototype.globalProps = function() { + var props = keys(global); + + // non-enumerables + for (var i = 0; i < globals.length; ++i) { + if (~indexOf(props, globals[i])) { + continue; + } + props.push(globals[i]); + } + + return props; +}; + +/** + * Allow the given `arr` of globals. + * + * @param {Array} arr + * @return {Runner} for chaining + * @api public + * @param {Array} arr + * @return {Runner} Runner instance. + */ +Runner.prototype.globals = function(arr) { + if (!arguments.length) { + return this._globals; + } + debug('globals %j', arr); + this._globals = this._globals.concat(arr); + return this; +}; + +/** + * Check for global variable leaks. + * + * @api private + */ +Runner.prototype.checkGlobals = function(test) { + if (this.ignoreLeaks) { + return; + } + var ok = this._globals; + + var globals = this.globalProps(); + var leaks; + + if (test) { + ok = ok.concat(test._allowedGlobals || []); + } + + if (this.prevGlobalsLength === globals.length) { + return; + } + this.prevGlobalsLength = globals.length; + + leaks = filterLeaks(ok, globals); + this._globals = this._globals.concat(leaks); + + if (leaks.length > 1) { + this.fail(test, new Error('global leaks detected: ' + leaks.join(', ') + '')); + } else if (leaks.length) { + this.fail(test, new Error('global leak detected: ' + leaks[0])); + } +}; + +/** + * Fail the given `test`. + * + * @api private + * @param {Test} test + * @param {Error} err + */ +Runner.prototype.fail = function(test, err) { + ++this.failures; + test.state = 'failed'; + + if (!(err instanceof Error || err && typeof err.message === 'string')) { + err = new Error('the ' + type(err) + ' ' + stringify(err) + ' was thrown, throw an Error :)'); + } + + err.stack = (this.fullStackTrace || !err.stack) + ? err.stack + : stackFilter(err.stack); + + this.emit('fail', test, err); +}; + +/** + * Fail the given `hook` with `err`. + * + * Hook failures work in the following pattern: + * - If bail, then exit + * - Failed `before` hook skips all tests in a suite and subsuites, + * but jumps to corresponding `after` hook + * - Failed `before each` hook skips remaining tests in a + * suite and jumps to corresponding `after each` hook, + * which is run only once + * - Failed `after` hook does not alter + * execution order + * - Failed `after each` hook skips remaining tests in a + * suite and subsuites, but executes other `after each` + * hooks + * + * @api private + * @param {Hook} hook + * @param {Error} err + */ +Runner.prototype.failHook = function(hook, err) { + if (hook.ctx && hook.ctx.currentTest) { + hook.originalTitle = hook.originalTitle || hook.title; + hook.title = hook.originalTitle + ' for "' + hook.ctx.currentTest.title + '"'; + } + + this.fail(hook, err); + if (this.suite.bail()) { + this.emit('end'); + } +}; + +/** + * Run hook `name` callbacks and then invoke `fn()`. + * + * @api private + * @param {string} name + * @param {Function} fn + */ + +Runner.prototype.hook = function(name, fn) { + var suite = this.suite; + var hooks = suite['_' + name]; + var self = this; + + function next(i) { + var hook = hooks[i]; + if (!hook) { + return fn(); + } + self.currentRunnable = hook; + + hook.ctx.currentTest = self.test; + + self.emit('hook', hook); + + if (!hook.listeners('error').length) { + hook.on('error', function(err) { + self.failHook(hook, err); + }); + } + + hook.run(function(err) { + var testError = hook.error(); + if (testError) { + self.fail(self.test, testError); + } + if (err) { + if (err instanceof Pending) { + suite.pending = true; + } else { + self.failHook(hook, err); + + // stop executing hooks, notify callee of hook err + return fn(err); + } + } + self.emit('hook end', hook); + delete hook.ctx.currentTest; + next(++i); + }); + } + + Runner.immediately(function() { + next(0); + }); +}; + +/** + * Run hook `name` for the given array of `suites` + * in order, and callback `fn(err, errSuite)`. + * + * @api private + * @param {string} name + * @param {Array} suites + * @param {Function} fn + */ +Runner.prototype.hooks = function(name, suites, fn) { + var self = this; + var orig = this.suite; + + function next(suite) { + self.suite = suite; + + if (!suite) { + self.suite = orig; + return fn(); + } + + self.hook(name, function(err) { + if (err) { + var errSuite = self.suite; + self.suite = orig; + return fn(err, errSuite); + } + + next(suites.pop()); + }); + } + + next(suites.pop()); +}; + +/** + * Run hooks from the top level down. + * + * @param {String} name + * @param {Function} fn + * @api private + */ +Runner.prototype.hookUp = function(name, fn) { + var suites = [this.suite].concat(this.parents()).reverse(); + this.hooks(name, suites, fn); +}; + +/** + * Run hooks from the bottom up. + * + * @param {String} name + * @param {Function} fn + * @api private + */ +Runner.prototype.hookDown = function(name, fn) { + var suites = [this.suite].concat(this.parents()); + this.hooks(name, suites, fn); +}; + +/** + * Return an array of parent Suites from + * closest to furthest. + * + * @return {Array} + * @api private + */ +Runner.prototype.parents = function() { + var suite = this.suite; + var suites = []; + while (suite.parent) { + suite = suite.parent; + suites.push(suite); + } + return suites; +}; + +/** + * Run the current test and callback `fn(err)`. + * + * @param {Function} fn + * @api private + */ +Runner.prototype.runTest = function(fn) { + var self = this; + var test = this.test; + + if (this.asyncOnly) { + test.asyncOnly = true; + } + + if (this.allowUncaught) { + test.allowUncaught = true; + return test.run(fn); + } + try { + test.on('error', function(err) { + self.fail(test, err); + }); + test.run(fn); + } catch (err) { + fn(err); + } +}; + +/** + * Run tests in the given `suite` and invoke the callback `fn()` when complete. + * + * @api private + * @param {Suite} suite + * @param {Function} fn + */ +Runner.prototype.runTests = function(suite, fn) { + var self = this; + var tests = suite.tests.slice(); + var test; + + function hookErr(_, errSuite, after) { + // before/after Each hook for errSuite failed: + var orig = self.suite; + + // for failed 'after each' hook start from errSuite parent, + // otherwise start from errSuite itself + self.suite = after ? errSuite.parent : errSuite; + + if (self.suite) { + // call hookUp afterEach + self.hookUp('afterEach', function(err2, errSuite2) { + self.suite = orig; + // some hooks may fail even now + if (err2) { + return hookErr(err2, errSuite2, true); + } + // report error suite + fn(errSuite); + }); + } else { + // there is no need calling other 'after each' hooks + self.suite = orig; + fn(errSuite); + } + } + + function next(err, errSuite) { + // if we bail after first err + if (self.failures && suite._bail) { + return fn(); + } + + if (self._abort) { + return fn(); + } + + if (err) { + return hookErr(err, errSuite, true); + } + + // next test + test = tests.shift(); + + // all done + if (!test) { + return fn(); + } + + // grep + var match = self._grep.test(test.fullTitle()); + if (self._invert) { + match = !match; + } + if (!match) { + // Run immediately only if we have defined a grep. When we + // define a grep — It can cause maximum callstack error if + // the grep is doing a large recursive loop by neglecting + // all tests. The run immediately function also comes with + // a performance cost. So we don't want to run immediately + // if we run the whole test suite, because running the whole + // test suite don't do any immediate recursive loops. Thus, + // allowing a JS runtime to breathe. + if (self._grep !== self._defaultGrep) { + Runner.immediately(next); + } else { + next(); + } + return; + } + + function parentPending(suite) { + return suite.pending || (suite.parent && parentPending(suite.parent)); + } + + // pending + if (test.pending || parentPending(test.parent)) { + self.emit('pending', test); + self.emit('test end', test); + return next(); + } + + // execute test and hook(s) + self.emit('test', self.test = test); + self.hookDown('beforeEach', function(err, errSuite) { + if (suite.pending) { + self.emit('pending', test); + self.emit('test end', test); + return next(); + } + if (err) { + return hookErr(err, errSuite, false); + } + self.currentRunnable = self.test; + self.runTest(function(err) { + test = self.test; + if (err) { + var retry = test.currentRetry(); + if (err instanceof Pending) { + test.pending = true; + self.emit('pending', test); + } else if (retry < test.retries()) { + var clonedTest = test.clone(); + clonedTest.currentRetry(retry + 1); + tests.unshift(clonedTest); + + // Early return + hook trigger so that it doesn't + // increment the count wrong + return self.hookUp('afterEach', next); + } else { + self.fail(test, err); + } + self.emit('test end', test); + + if (err instanceof Pending) { + return next(); + } + + return self.hookUp('afterEach', next); + } + + test.state = 'passed'; + self.emit('pass', test); + self.emit('test end', test); + self.hookUp('afterEach', next); + }); + }); + } + + this.next = next; + this.hookErr = hookErr; + next(); +}; + +/** + * Run the given `suite` and invoke the callback `fn()` when complete. + * + * @api private + * @param {Suite} suite + * @param {Function} fn + */ +Runner.prototype.runSuite = function(suite, fn) { + var i = 0; + var self = this; + var total = this.grepTotal(suite); + var afterAllHookCalled = false; + + debug('run suite %s', suite.fullTitle()); + + if (!total || (self.failures && suite._bail)) { + return fn(); + } + + this.emit('suite', this.suite = suite); + + function next(errSuite) { + if (errSuite) { + // current suite failed on a hook from errSuite + if (errSuite === suite) { + // if errSuite is current suite + // continue to the next sibling suite + return done(); + } + // errSuite is among the parents of current suite + // stop execution of errSuite and all sub-suites + return done(errSuite); + } + + if (self._abort) { + return done(); + } + + var curr = suite.suites[i++]; + if (!curr) { + return done(); + } + + // Avoid grep neglecting large number of tests causing a + // huge recursive loop and thus a maximum call stack error. + // See comment in `this.runTests()` for more information. + if (self._grep !== self._defaultGrep) { + Runner.immediately(function() { + self.runSuite(curr, next); + }); + } else { + self.runSuite(curr, next); + } + } + + function done(errSuite) { + self.suite = suite; + self.nextSuite = next; + + if (afterAllHookCalled) { + fn(errSuite); + } else { + // mark that the afterAll block has been called once + // and so can be skipped if there is an error in it. + afterAllHookCalled = true; + + // remove reference to test + delete self.test; + + self.hook('afterAll', function() { + self.emit('suite end', suite); + fn(errSuite); + }); + } + } + + this.nextSuite = next; + + this.hook('beforeAll', function(err) { + if (err) { + return done(); + } + self.runTests(suite, next); + }); +}; + +/** + * Handle uncaught exceptions. + * + * @param {Error} err + * @api private + */ +Runner.prototype.uncaught = function(err) { + if (err) { + debug('uncaught exception %s', err !== function() { + return this; + }.call(err) ? err : (err.message || err)); + } else { + debug('uncaught undefined exception'); + err = undefinedError(); + } + err.uncaught = true; + + var runnable = this.currentRunnable; + + if (!runnable) { + runnable = new Runnable('Uncaught error outside test suite'); + runnable.parent = this.suite; + + if (this.started) { + this.fail(runnable, err); + } else { + // Can't recover from this failure + this.emit('start'); + this.fail(runnable, err); + this.emit('end'); + } + + return; + } + + runnable.clearTimeout(); + + // Ignore errors if complete + if (runnable.state) { + return; + } + this.fail(runnable, err); + + // recover from test + if (runnable.type === 'test') { + this.emit('test end', runnable); + this.hookUp('afterEach', this.next); + return; + } + + // recover from hooks + if (runnable.type === 'hook') { + var errSuite = this.suite; + // if hook failure is in afterEach block + if (runnable.fullTitle().indexOf('after each') > -1) { + return this.hookErr(err, errSuite, true); + } + // if hook failure is in beforeEach block + if (runnable.fullTitle().indexOf('before each') > -1) { + return this.hookErr(err, errSuite, false); + } + // if hook failure is in after or before blocks + return this.nextSuite(errSuite); + } + + // bail + this.emit('end'); +}; + +/** + * Cleans up the references to all the deferred functions + * (before/after/beforeEach/afterEach) and tests of a Suite. + * These must be deleted otherwise a memory leak can happen, + * as those functions may reference variables from closures, + * thus those variables can never be garbage collected as long + * as the deferred functions exist. + * + * @param {Suite} suite + */ +function cleanSuiteReferences(suite) { + function cleanArrReferences(arr) { + for (var i = 0; i < arr.length; i++) { + delete arr[i].fn; + } + } + + if (isArray(suite._beforeAll)) { + cleanArrReferences(suite._beforeAll); + } + + if (isArray(suite._beforeEach)) { + cleanArrReferences(suite._beforeEach); + } + + if (isArray(suite._afterAll)) { + cleanArrReferences(suite._afterAll); + } + + if (isArray(suite._afterEach)) { + cleanArrReferences(suite._afterEach); + } + + for (var i = 0; i < suite.tests.length; i++) { + delete suite.tests[i].fn; + } +} + +/** + * Run the root suite and invoke `fn(failures)` + * on completion. + * + * @param {Function} fn + * @return {Runner} for chaining + * @api public + * @param {Function} fn + * @return {Runner} Runner instance. + */ +Runner.prototype.run = function(fn) { + var self = this; + var rootSuite = this.suite; + + fn = fn || function() {}; + + function uncaught(err) { + self.uncaught(err); + } + + function start() { + self.started = true; + self.emit('start'); + self.runSuite(rootSuite, function() { + debug('finished running'); + self.emit('end'); + }); + } + + debug('start'); + + // references cleanup to avoid memory leaks + this.on('suite end', cleanSuiteReferences); + + // callback + this.on('end', function() { + debug('end'); + process.removeListener('uncaughtException', uncaught); + fn(self.failures); + }); + + // uncaught exception + process.on('uncaughtException', uncaught); + + if (this._delay) { + // for reporters, I guess. + // might be nice to debounce some dots while we wait. + this.emit('waiting', rootSuite); + rootSuite.once('run', start); + } else { + start(); + } + + return this; +}; + +/** + * Cleanly abort execution. + * + * @api public + * @return {Runner} Runner instance. + */ +Runner.prototype.abort = function() { + debug('aborting'); + this._abort = true; + + return this; +}; + +/** + * Filter leaks with the given globals flagged as `ok`. + * + * @api private + * @param {Array} ok + * @param {Array} globals + * @return {Array} + */ +function filterLeaks(ok, globals) { + return filter(globals, function(key) { + // Firefox and Chrome exposes iframes as index inside the window object + if (/^d+/.test(key)) { + return false; + } + + // in firefox + // if runner runs in an iframe, this iframe's window.getInterface method not init at first + // it is assigned in some seconds + if (global.navigator && (/^getInterface/).test(key)) { + return false; + } + + // an iframe could be approached by window[iframeIndex] + // in ie6,7,8 and opera, iframeIndex is enumerable, this could cause leak + if (global.navigator && (/^\d+/).test(key)) { + return false; + } + + // Opera and IE expose global variables for HTML element IDs (issue #243) + if (/^mocha-/.test(key)) { + return false; + } + + var matched = filter(ok, function(ok) { + if (~ok.indexOf('*')) { + return key.indexOf(ok.split('*')[0]) === 0; + } + return key === ok; + }); + return !matched.length && (!global.navigator || key !== 'onerror'); + }); +} + +/** + * Array of globals dependent on the environment. + * + * @return {Array} + * @api private + */ +function extraGlobals() { + if (typeof process === 'object' && typeof process.version === 'string') { + var parts = process.version.split('.'); + var nodeVersion = utils.reduce(parts, function(a, v) { + return a << 8 | v; + }); + + // 'errno' was renamed to process._errno in v0.9.11. + + if (nodeVersion < 0x00090B) { + return ['errno']; + } + } + + return []; +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/suite.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/suite.js new file mode 100644 index 00000000..8e6f393e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/suite.js @@ -0,0 +1,389 @@ +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter; +var Hook = require('./hook'); +var utils = require('./utils'); +var inherits = utils.inherits; +var debug = require('debug')('mocha:suite'); +var milliseconds = require('./ms'); + +/** + * Expose `Suite`. + */ + +exports = module.exports = Suite; + +/** + * Create a new `Suite` with the given `title` and parent `Suite`. When a suite + * with the same title is already present, that suite is returned to provide + * nicer reporter and more flexible meta-testing. + * + * @api public + * @param {Suite} parent + * @param {string} title + * @return {Suite} + */ +exports.create = function(parent, title) { + var suite = new Suite(title, parent.ctx); + suite.parent = parent; + if (parent.pending) { + suite.pending = true; + } + title = suite.fullTitle(); + parent.addSuite(suite); + return suite; +}; + +/** + * Initialize a new `Suite` with the given `title` and `ctx`. + * + * @api private + * @param {string} title + * @param {Context} parentContext + */ +function Suite(title, parentContext) { + this.title = title; + function Context() {} + Context.prototype = parentContext; + this.ctx = new Context(); + this.suites = []; + this.tests = []; + this.pending = false; + this._beforeEach = []; + this._beforeAll = []; + this._afterEach = []; + this._afterAll = []; + this.root = !title; + this._timeout = 2000; + this._enableTimeouts = true; + this._slow = 75; + this._bail = false; + this._retries = -1; + this.delayed = false; +} + +/** + * Inherit from `EventEmitter.prototype`. + */ +inherits(Suite, EventEmitter); + +/** + * Return a clone of this `Suite`. + * + * @api private + * @return {Suite} + */ +Suite.prototype.clone = function() { + var suite = new Suite(this.title); + debug('clone'); + suite.ctx = this.ctx; + suite.timeout(this.timeout()); + suite.retries(this.retries()); + suite.enableTimeouts(this.enableTimeouts()); + suite.slow(this.slow()); + suite.bail(this.bail()); + return suite; +}; + +/** + * Set timeout `ms` or short-hand such as "2s". + * + * @api private + * @param {number|string} ms + * @return {Suite|number} for chaining + */ +Suite.prototype.timeout = function(ms) { + if (!arguments.length) { + return this._timeout; + } + if (ms.toString() === '0') { + this._enableTimeouts = false; + } + if (typeof ms === 'string') { + ms = milliseconds(ms); + } + debug('timeout %d', ms); + this._timeout = parseInt(ms, 10); + return this; +}; + +/** + * Set number of times to retry a failed test. + * + * @api private + * @param {number|string} n + * @return {Suite|number} for chaining + */ +Suite.prototype.retries = function(n) { + if (!arguments.length) { + return this._retries; + } + debug('retries %d', n); + this._retries = parseInt(n, 10) || 0; + return this; +}; + +/** + * Set timeout to `enabled`. + * + * @api private + * @param {boolean} enabled + * @return {Suite|boolean} self or enabled + */ +Suite.prototype.enableTimeouts = function(enabled) { + if (!arguments.length) { + return this._enableTimeouts; + } + debug('enableTimeouts %s', enabled); + this._enableTimeouts = enabled; + return this; +}; + +/** + * Set slow `ms` or short-hand such as "2s". + * + * @api private + * @param {number|string} ms + * @return {Suite|number} for chaining + */ +Suite.prototype.slow = function(ms) { + if (!arguments.length) { + return this._slow; + } + if (typeof ms === 'string') { + ms = milliseconds(ms); + } + debug('slow %d', ms); + this._slow = ms; + return this; +}; + +/** + * Sets whether to bail after first error. + * + * @api private + * @param {boolean} bail + * @return {Suite|number} for chaining + */ +Suite.prototype.bail = function(bail) { + if (!arguments.length) { + return this._bail; + } + debug('bail %s', bail); + this._bail = bail; + return this; +}; + +/** + * Run `fn(test[, done])` before running tests. + * + * @api private + * @param {string} title + * @param {Function} fn + * @return {Suite} for chaining + */ +Suite.prototype.beforeAll = function(title, fn) { + if (this.pending) { + return this; + } + if (typeof title === 'function') { + fn = title; + title = fn.name; + } + title = '"before all" hook' + (title ? ': ' + title : ''); + + var hook = new Hook(title, fn); + hook.parent = this; + hook.timeout(this.timeout()); + hook.retries(this.retries()); + hook.enableTimeouts(this.enableTimeouts()); + hook.slow(this.slow()); + hook.ctx = this.ctx; + this._beforeAll.push(hook); + this.emit('beforeAll', hook); + return this; +}; + +/** + * Run `fn(test[, done])` after running tests. + * + * @api private + * @param {string} title + * @param {Function} fn + * @return {Suite} for chaining + */ +Suite.prototype.afterAll = function(title, fn) { + if (this.pending) { + return this; + } + if (typeof title === 'function') { + fn = title; + title = fn.name; + } + title = '"after all" hook' + (title ? ': ' + title : ''); + + var hook = new Hook(title, fn); + hook.parent = this; + hook.timeout(this.timeout()); + hook.retries(this.retries()); + hook.enableTimeouts(this.enableTimeouts()); + hook.slow(this.slow()); + hook.ctx = this.ctx; + this._afterAll.push(hook); + this.emit('afterAll', hook); + return this; +}; + +/** + * Run `fn(test[, done])` before each test case. + * + * @api private + * @param {string} title + * @param {Function} fn + * @return {Suite} for chaining + */ +Suite.prototype.beforeEach = function(title, fn) { + if (this.pending) { + return this; + } + if (typeof title === 'function') { + fn = title; + title = fn.name; + } + title = '"before each" hook' + (title ? ': ' + title : ''); + + var hook = new Hook(title, fn); + hook.parent = this; + hook.timeout(this.timeout()); + hook.retries(this.retries()); + hook.enableTimeouts(this.enableTimeouts()); + hook.slow(this.slow()); + hook.ctx = this.ctx; + this._beforeEach.push(hook); + this.emit('beforeEach', hook); + return this; +}; + +/** + * Run `fn(test[, done])` after each test case. + * + * @api private + * @param {string} title + * @param {Function} fn + * @return {Suite} for chaining + */ +Suite.prototype.afterEach = function(title, fn) { + if (this.pending) { + return this; + } + if (typeof title === 'function') { + fn = title; + title = fn.name; + } + title = '"after each" hook' + (title ? ': ' + title : ''); + + var hook = new Hook(title, fn); + hook.parent = this; + hook.timeout(this.timeout()); + hook.retries(this.retries()); + hook.enableTimeouts(this.enableTimeouts()); + hook.slow(this.slow()); + hook.ctx = this.ctx; + this._afterEach.push(hook); + this.emit('afterEach', hook); + return this; +}; + +/** + * Add a test `suite`. + * + * @api private + * @param {Suite} suite + * @return {Suite} for chaining + */ +Suite.prototype.addSuite = function(suite) { + suite.parent = this; + suite.timeout(this.timeout()); + suite.retries(this.retries()); + suite.enableTimeouts(this.enableTimeouts()); + suite.slow(this.slow()); + suite.bail(this.bail()); + this.suites.push(suite); + this.emit('suite', suite); + return this; +}; + +/** + * Add a `test` to this suite. + * + * @api private + * @param {Test} test + * @return {Suite} for chaining + */ +Suite.prototype.addTest = function(test) { + test.parent = this; + test.timeout(this.timeout()); + test.retries(this.retries()); + test.enableTimeouts(this.enableTimeouts()); + test.slow(this.slow()); + test.ctx = this.ctx; + this.tests.push(test); + this.emit('test', test); + return this; +}; + +/** + * Return the full title generated by recursively concatenating the parent's + * full title. + * + * @api public + * @return {string} + */ +Suite.prototype.fullTitle = function() { + if (this.parent) { + var full = this.parent.fullTitle(); + if (full) { + return full + ' ' + this.title; + } + } + return this.title; +}; + +/** + * Return the total number of tests. + * + * @api public + * @return {number} + */ +Suite.prototype.total = function() { + return utils.reduce(this.suites, function(sum, suite) { + return sum + suite.total(); + }, 0) + this.tests.length; +}; + +/** + * Iterates through each suite recursively to find all tests. Applies a + * function in the format `fn(test)`. + * + * @api private + * @param {Function} fn + * @return {Suite} + */ +Suite.prototype.eachTest = function(fn) { + utils.forEach(this.tests, fn); + utils.forEach(this.suites, function(suite) { + suite.eachTest(fn); + }); + return this; +}; + +/** + * This will run the root suite if we happen to be running in delayed mode. + */ +Suite.prototype.run = function run() { + if (this.root) { + this.emit('run'); + } +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/template.html b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/template.html new file mode 100644 index 00000000..36c5e0b6 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/template.html @@ -0,0 +1,18 @@ + + + + Mocha + + + + + +
+ + + + + + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/test.js new file mode 100644 index 00000000..b39ce42c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/test.js @@ -0,0 +1,45 @@ +/** + * Module dependencies. + */ + +var Runnable = require('./runnable'); +var inherits = require('./utils').inherits; + +/** + * Expose `Test`. + */ + +module.exports = Test; + +/** + * Initialize a new `Test` with the given `title` and callback `fn`. + * + * @api private + * @param {String} title + * @param {Function} fn + */ +function Test(title, fn) { + Runnable.call(this, title, fn); + this.pending = !fn; + this.type = 'test'; + this.body = (fn || '').toString(); +} + +/** + * Inherit from `Runnable.prototype`. + */ +inherits(Test, Runnable); + +Test.prototype.clone = function() { + var test = new Test(this.title, this.fn); + test.timeout(this.timeout()); + test.slow(this.slow()); + test.enableTimeouts(this.enableTimeouts()); + test.retries(this.retries()); + test.currentRetry(this.currentRetry()); + test.globals(this.globals()); + test.parent = this.parent; + test.file = this.file; + test.ctx = this.ctx; + return test; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/utils.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/utils.js new file mode 100644 index 00000000..7a65f92e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/lib/utils.js @@ -0,0 +1,740 @@ +/* eslint-env browser */ + +/** + * Module dependencies. + */ + +var basename = require('path').basename; +var debug = require('debug')('mocha:watch'); +var exists = require('fs').existsSync || require('path').existsSync; +var glob = require('glob'); +var join = require('path').join; +var readdirSync = require('fs').readdirSync; +var statSync = require('fs').statSync; +var watchFile = require('fs').watchFile; + +/** + * Ignored directories. + */ + +var ignore = ['node_modules', '.git']; + +exports.inherits = require('util').inherits; + +/** + * Escape special characters in the given string of html. + * + * @api private + * @param {string} html + * @return {string} + */ +exports.escape = function(html) { + return String(html) + .replace(/&/g, '&') + .replace(/"/g, '"') + .replace(//g, '>'); +}; + +/** + * Array#forEach (<=IE8) + * + * @api private + * @param {Array} arr + * @param {Function} fn + * @param {Object} scope + */ +exports.forEach = function(arr, fn, scope) { + for (var i = 0, l = arr.length; i < l; i++) { + fn.call(scope, arr[i], i); + } +}; + +/** + * Test if the given obj is type of string. + * + * @api private + * @param {Object} obj + * @return {boolean} + */ +exports.isString = function(obj) { + return typeof obj === 'string'; +}; + +/** + * Array#map (<=IE8) + * + * @api private + * @param {Array} arr + * @param {Function} fn + * @param {Object} scope + * @return {Array} + */ +exports.map = function(arr, fn, scope) { + var result = []; + for (var i = 0, l = arr.length; i < l; i++) { + result.push(fn.call(scope, arr[i], i, arr)); + } + return result; +}; + +/** + * Array#indexOf (<=IE8) + * + * @api private + * @param {Array} arr + * @param {Object} obj to find index of + * @param {number} start + * @return {number} + */ +exports.indexOf = function(arr, obj, start) { + for (var i = start || 0, l = arr.length; i < l; i++) { + if (arr[i] === obj) { + return i; + } + } + return -1; +}; + +/** + * Array#reduce (<=IE8) + * + * @api private + * @param {Array} arr + * @param {Function} fn + * @param {Object} val Initial value. + * @return {*} + */ +exports.reduce = function(arr, fn, val) { + var rval = val; + + for (var i = 0, l = arr.length; i < l; i++) { + rval = fn(rval, arr[i], i, arr); + } + + return rval; +}; + +/** + * Array#filter (<=IE8) + * + * @api private + * @param {Array} arr + * @param {Function} fn + * @return {Array} + */ +exports.filter = function(arr, fn) { + var ret = []; + + for (var i = 0, l = arr.length; i < l; i++) { + var val = arr[i]; + if (fn(val, i, arr)) { + ret.push(val); + } + } + + return ret; +}; + +/** + * Object.keys (<=IE8) + * + * @api private + * @param {Object} obj + * @return {Array} keys + */ +exports.keys = typeof Object.keys === 'function' ? Object.keys : function(obj) { + var keys = []; + var has = Object.prototype.hasOwnProperty; // for `window` on <=IE8 + + for (var key in obj) { + if (has.call(obj, key)) { + keys.push(key); + } + } + + return keys; +}; + +/** + * Watch the given `files` for changes + * and invoke `fn(file)` on modification. + * + * @api private + * @param {Array} files + * @param {Function} fn + */ +exports.watch = function(files, fn) { + var options = { interval: 100 }; + files.forEach(function(file) { + debug('file %s', file); + watchFile(file, options, function(curr, prev) { + if (prev.mtime < curr.mtime) { + fn(file); + } + }); + }); +}; + +/** + * Array.isArray (<=IE8) + * + * @api private + * @param {Object} obj + * @return {Boolean} + */ +var isArray = typeof Array.isArray === 'function' ? Array.isArray : function(obj) { + return Object.prototype.toString.call(obj) === '[object Array]'; +}; + +exports.isArray = isArray; + +/** + * Buffer.prototype.toJSON polyfill. + * + * @type {Function} + */ +if (typeof Buffer !== 'undefined' && Buffer.prototype) { + Buffer.prototype.toJSON = Buffer.prototype.toJSON || function() { + return Array.prototype.slice.call(this, 0); + }; +} + +/** + * Ignored files. + * + * @api private + * @param {string} path + * @return {boolean} + */ +function ignored(path) { + return !~ignore.indexOf(path); +} + +/** + * Lookup files in the given `dir`. + * + * @api private + * @param {string} dir + * @param {string[]} [ext=['.js']] + * @param {Array} [ret=[]] + * @return {Array} + */ +exports.files = function(dir, ext, ret) { + ret = ret || []; + ext = ext || ['js']; + + var re = new RegExp('\\.(' + ext.join('|') + ')$'); + + readdirSync(dir) + .filter(ignored) + .forEach(function(path) { + path = join(dir, path); + if (statSync(path).isDirectory()) { + exports.files(path, ext, ret); + } else if (path.match(re)) { + ret.push(path); + } + }); + + return ret; +}; + +/** + * Compute a slug from the given `str`. + * + * @api private + * @param {string} str + * @return {string} + */ +exports.slug = function(str) { + return str + .toLowerCase() + .replace(/ +/g, '-') + .replace(/[^-\w]/g, ''); +}; + +/** + * Strip the function definition from `str`, and re-indent for pre whitespace. + * + * @param {string} str + * @return {string} + */ +exports.clean = function(str) { + str = str + .replace(/\r\n?|[\n\u2028\u2029]/g, '\n').replace(/^\uFEFF/, '') + .replace(/^function *\(.*\)\s*\{|\(.*\) *=> *\{?/, '') + .replace(/\s+\}$/, ''); + + var spaces = str.match(/^\n?( *)/)[1].length; + var tabs = str.match(/^\n?(\t*)/)[1].length; + var re = new RegExp('^\n?' + (tabs ? '\t' : ' ') + '{' + (tabs ? tabs : spaces) + '}', 'gm'); + + str = str.replace(re, ''); + + return exports.trim(str); +}; + +/** + * Trim the given `str`. + * + * @api private + * @param {string} str + * @return {string} + */ +exports.trim = function(str) { + return str.replace(/^\s+|\s+$/g, ''); +}; + +/** + * Parse the given `qs`. + * + * @api private + * @param {string} qs + * @return {Object} + */ +exports.parseQuery = function(qs) { + return exports.reduce(qs.replace('?', '').split('&'), function(obj, pair) { + var i = pair.indexOf('='); + var key = pair.slice(0, i); + var val = pair.slice(++i); + + obj[key] = decodeURIComponent(val); + return obj; + }, {}); +}; + +/** + * Highlight the given string of `js`. + * + * @api private + * @param {string} js + * @return {string} + */ +function highlight(js) { + return js + .replace(//g, '>') + .replace(/\/\/(.*)/gm, '//$1') + .replace(/('.*?')/gm, '$1') + .replace(/(\d+\.\d+)/gm, '$1') + .replace(/(\d+)/gm, '$1') + .replace(/\bnew[ \t]+(\w+)/gm, 'new $1') + .replace(/\b(function|new|throw|return|var|if|else)\b/gm, '$1'); +} + +/** + * Highlight the contents of tag `name`. + * + * @api private + * @param {string} name + */ +exports.highlightTags = function(name) { + var code = document.getElementById('mocha').getElementsByTagName(name); + for (var i = 0, len = code.length; i < len; ++i) { + code[i].innerHTML = highlight(code[i].innerHTML); + } +}; + +/** + * If a value could have properties, and has none, this function is called, + * which returns a string representation of the empty value. + * + * Functions w/ no properties return `'[Function]'` + * Arrays w/ length === 0 return `'[]'` + * Objects w/ no properties return `'{}'` + * All else: return result of `value.toString()` + * + * @api private + * @param {*} value The value to inspect. + * @param {string} [type] The type of the value, if known. + * @returns {string} + */ +function emptyRepresentation(value, type) { + type = type || exports.type(value); + + switch (type) { + case 'function': + return '[Function]'; + case 'object': + return '{}'; + case 'array': + return '[]'; + default: + return value.toString(); + } +} + +/** + * Takes some variable and asks `Object.prototype.toString()` what it thinks it + * is. + * + * @api private + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString + * @param {*} value The value to test. + * @returns {string} + * @example + * type({}) // 'object' + * type([]) // 'array' + * type(1) // 'number' + * type(false) // 'boolean' + * type(Infinity) // 'number' + * type(null) // 'null' + * type(new Date()) // 'date' + * type(/foo/) // 'regexp' + * type('type') // 'string' + * type(global) // 'global' + */ +exports.type = function type(value) { + if (value === undefined) { + return 'undefined'; + } else if (value === null) { + return 'null'; + } else if (typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) { + return 'buffer'; + } + return Object.prototype.toString.call(value) + .replace(/^\[.+\s(.+?)\]$/, '$1') + .toLowerCase(); +}; + +/** + * Stringify `value`. Different behavior depending on type of value: + * + * - If `value` is undefined or null, return `'[undefined]'` or `'[null]'`, respectively. + * - If `value` is not an object, function or array, return result of `value.toString()` wrapped in double-quotes. + * - If `value` is an *empty* object, function, or array, return result of function + * {@link emptyRepresentation}. + * - If `value` has properties, call {@link exports.canonicalize} on it, then return result of + * JSON.stringify(). + * + * @api private + * @see exports.type + * @param {*} value + * @return {string} + */ +exports.stringify = function(value) { + var type = exports.type(value); + + if (!~exports.indexOf(['object', 'array', 'function'], type)) { + if (type !== 'buffer') { + return jsonStringify(value); + } + var json = value.toJSON(); + // Based on the toJSON result + return jsonStringify(json.data && json.type ? json.data : json, 2) + .replace(/,(\n|$)/g, '$1'); + } + + for (var prop in value) { + if (Object.prototype.hasOwnProperty.call(value, prop)) { + return jsonStringify(exports.canonicalize(value), 2).replace(/,(\n|$)/g, '$1'); + } + } + + return emptyRepresentation(value, type); +}; + +/** + * like JSON.stringify but more sense. + * + * @api private + * @param {Object} object + * @param {number=} spaces + * @param {number=} depth + * @returns {*} + */ +function jsonStringify(object, spaces, depth) { + if (typeof spaces === 'undefined') { + // primitive types + return _stringify(object); + } + + depth = depth || 1; + var space = spaces * depth; + var str = isArray(object) ? '[' : '{'; + var end = isArray(object) ? ']' : '}'; + var length = object.length || exports.keys(object).length; + // `.repeat()` polyfill + function repeat(s, n) { + return new Array(n).join(s); + } + + function _stringify(val) { + switch (exports.type(val)) { + case 'null': + case 'undefined': + val = '[' + val + ']'; + break; + case 'array': + case 'object': + val = jsonStringify(val, spaces, depth + 1); + break; + case 'boolean': + case 'regexp': + case 'number': + val = val === 0 && (1 / val) === -Infinity // `-0` + ? '-0' + : val.toString(); + break; + case 'date': + var sDate = isNaN(val.getTime()) // Invalid date + ? val.toString() + : val.toISOString(); + val = '[Date: ' + sDate + ']'; + break; + case 'buffer': + var json = val.toJSON(); + // Based on the toJSON result + json = json.data && json.type ? json.data : json; + val = '[Buffer: ' + jsonStringify(json, 2, depth + 1) + ']'; + break; + default: + val = (val === '[Function]' || val === '[Circular]') + ? val + : JSON.stringify(val); // string + } + return val; + } + + for (var i in object) { + if (!object.hasOwnProperty(i)) { + continue; // not my business + } + --length; + str += '\n ' + repeat(' ', space) + + (isArray(object) ? '' : '"' + i + '": ') // key + + _stringify(object[i]) // value + + (length ? ',' : ''); // comma + } + + return str + // [], {} + + (str.length !== 1 ? '\n' + repeat(' ', --space) + end : end); +} + +/** + * Test if a value is a buffer. + * + * @api private + * @param {*} value The value to test. + * @return {boolean} True if `value` is a buffer, otherwise false + */ +exports.isBuffer = function(value) { + return typeof Buffer !== 'undefined' && Buffer.isBuffer(value); +}; + +/** + * Return a new Thing that has the keys in sorted order. Recursive. + * + * If the Thing... + * - has already been seen, return string `'[Circular]'` + * - is `undefined`, return string `'[undefined]'` + * - is `null`, return value `null` + * - is some other primitive, return the value + * - is not a primitive or an `Array`, `Object`, or `Function`, return the value of the Thing's `toString()` method + * - is a non-empty `Array`, `Object`, or `Function`, return the result of calling this function again. + * - is an empty `Array`, `Object`, or `Function`, return the result of calling `emptyRepresentation()` + * + * @api private + * @see {@link exports.stringify} + * @param {*} value Thing to inspect. May or may not have properties. + * @param {Array} [stack=[]] Stack of seen values + * @return {(Object|Array|Function|string|undefined)} + */ +exports.canonicalize = function(value, stack) { + var canonicalizedObj; + /* eslint-disable no-unused-vars */ + var prop; + /* eslint-enable no-unused-vars */ + var type = exports.type(value); + function withStack(value, fn) { + stack.push(value); + fn(); + stack.pop(); + } + + stack = stack || []; + + if (exports.indexOf(stack, value) !== -1) { + return '[Circular]'; + } + + switch (type) { + case 'undefined': + case 'buffer': + case 'null': + canonicalizedObj = value; + break; + case 'array': + withStack(value, function() { + canonicalizedObj = exports.map(value, function(item) { + return exports.canonicalize(item, stack); + }); + }); + break; + case 'function': + /* eslint-disable guard-for-in */ + for (prop in value) { + canonicalizedObj = {}; + break; + } + /* eslint-enable guard-for-in */ + if (!canonicalizedObj) { + canonicalizedObj = emptyRepresentation(value, type); + break; + } + /* falls through */ + case 'object': + canonicalizedObj = canonicalizedObj || {}; + withStack(value, function() { + exports.forEach(exports.keys(value).sort(), function(key) { + canonicalizedObj[key] = exports.canonicalize(value[key], stack); + }); + }); + break; + case 'date': + case 'number': + case 'regexp': + case 'boolean': + canonicalizedObj = value; + break; + default: + canonicalizedObj = value + ''; + } + + return canonicalizedObj; +}; + +/** + * Lookup file names at the given `path`. + * + * @api public + * @param {string} path Base path to start searching from. + * @param {string[]} extensions File extensions to look for. + * @param {boolean} recursive Whether or not to recurse into subdirectories. + * @return {string[]} An array of paths. + */ +exports.lookupFiles = function lookupFiles(path, extensions, recursive) { + var files = []; + var re = new RegExp('\\.(' + extensions.join('|') + ')$'); + + if (!exists(path)) { + if (exists(path + '.js')) { + path += '.js'; + } else { + files = glob.sync(path); + if (!files.length) { + throw new Error("cannot resolve path (or pattern) '" + path + "'"); + } + return files; + } + } + + try { + var stat = statSync(path); + if (stat.isFile()) { + return path; + } + } catch (err) { + // ignore error + return; + } + + readdirSync(path).forEach(function(file) { + file = join(path, file); + try { + var stat = statSync(file); + if (stat.isDirectory()) { + if (recursive) { + files = files.concat(lookupFiles(file, extensions, recursive)); + } + return; + } + } catch (err) { + // ignore error + return; + } + if (!stat.isFile() || !re.test(file) || basename(file)[0] === '.') { + return; + } + files.push(file); + }); + + return files; +}; + +/** + * Generate an undefined error with a message warning the user. + * + * @return {Error} + */ + +exports.undefinedError = function() { + return new Error('Caught undefined error, did you throw without specifying what?'); +}; + +/** + * Generate an undefined error if `err` is not defined. + * + * @param {Error} err + * @return {Error} + */ + +exports.getError = function(err) { + return err || exports.undefinedError(); +}; + +/** + * @summary + * This Filter based on `mocha-clean` module.(see: `github.com/rstacruz/mocha-clean`) + * @description + * When invoking this function you get a filter function that get the Error.stack as an input, + * and return a prettify output. + * (i.e: strip Mocha and internal node functions from stack trace). + * @returns {Function} + */ +exports.stackTraceFilter = function() { + // TODO: Replace with `process.browser` + var slash = '/'; + var is = typeof document === 'undefined' ? { node: true } : { browser: true }; + var cwd = is.node + ? process.cwd() + slash + : (typeof location === 'undefined' ? window.location : location).href.replace(/\/[^\/]*$/, '/'); + + function isMochaInternal(line) { + return (~line.indexOf('node_modules' + slash + 'mocha' + slash)) + || (~line.indexOf('components' + slash + 'mochajs' + slash)) + || (~line.indexOf('components' + slash + 'mocha' + slash)) + || (~line.indexOf(slash + 'mocha.js')); + } + + function isNodeInternal(line) { + return (~line.indexOf('(timers.js:')) + || (~line.indexOf('(events.js:')) + || (~line.indexOf('(node.js:')) + || (~line.indexOf('(module.js:')) + || (~line.indexOf('GeneratorFunctionPrototype.next (native)')) + || false; + } + + return function(stack) { + stack = stack.split('\n'); + + stack = exports.reduce(stack, function(list, line) { + if (isMochaInternal(line)) { + return list; + } + + if (is.node && isNodeInternal(line)) { + return list; + } + + // Clean up cwd(absolute) + list.push(line.replace(cwd, '')); + return list; + }, []); + + return stack.join('\n'); + }; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/mocha.css b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/mocha.css new file mode 100644 index 00000000..3b82ae91 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/mocha.css @@ -0,0 +1,305 @@ +@charset "utf-8"; + +body { + margin:0; +} + +#mocha { + font: 20px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif; + margin: 60px 50px; +} + +#mocha ul, +#mocha li { + margin: 0; + padding: 0; +} + +#mocha ul { + list-style: none; +} + +#mocha h1, +#mocha h2 { + margin: 0; +} + +#mocha h1 { + margin-top: 15px; + font-size: 1em; + font-weight: 200; +} + +#mocha h1 a { + text-decoration: none; + color: inherit; +} + +#mocha h1 a:hover { + text-decoration: underline; +} + +#mocha .suite .suite h1 { + margin-top: 0; + font-size: .8em; +} + +#mocha .hidden { + display: none; +} + +#mocha h2 { + font-size: 12px; + font-weight: normal; + cursor: pointer; +} + +#mocha .suite { + margin-left: 15px; +} + +#mocha .test { + margin-left: 15px; + overflow: hidden; +} + +#mocha .test.pending:hover h2::after { + content: '(pending)'; + font-family: arial, sans-serif; +} + +#mocha .test.pass.medium .duration { + background: #c09853; +} + +#mocha .test.pass.slow .duration { + background: #b94a48; +} + +#mocha .test.pass::before { + content: '✓'; + font-size: 12px; + display: block; + float: left; + margin-right: 5px; + color: #00d6b2; +} + +#mocha .test.pass .duration { + font-size: 9px; + margin-left: 5px; + padding: 2px 5px; + color: #fff; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.2); + -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.2); + box-shadow: inset 0 1px 1px rgba(0,0,0,.2); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} + +#mocha .test.pass.fast .duration { + display: none; +} + +#mocha .test.pending { + color: #0b97c4; +} + +#mocha .test.pending::before { + content: '◦'; + color: #0b97c4; +} + +#mocha .test.fail { + color: #c00; +} + +#mocha .test.fail pre { + color: black; +} + +#mocha .test.fail::before { + content: '✖'; + font-size: 12px; + display: block; + float: left; + margin-right: 5px; + color: #c00; +} + +#mocha .test pre.error { + color: #c00; + max-height: 300px; + overflow: auto; +} + +#mocha .test .html-error { + overflow: auto; + color: black; + line-height: 1.5; + display: block; + float: left; + clear: left; + font: 12px/1.5 monaco, monospace; + margin: 5px; + padding: 15px; + border: 1px solid #eee; + max-width: 85%; /*(1)*/ + max-width: calc(100% - 42px); /*(2)*/ + max-height: 300px; + word-wrap: break-word; + border-bottom-color: #ddd; + -webkit-border-radius: 3px; + -webkit-box-shadow: 0 1px 3px #eee; + -moz-border-radius: 3px; + -moz-box-shadow: 0 1px 3px #eee; + border-radius: 3px; +} + +#mocha .test .html-error pre.error { + border: none; + -webkit-border-radius: none; + -webkit-box-shadow: none; + -moz-border-radius: none; + -moz-box-shadow: none; + padding: 0; + margin: 0; + margin-top: 18px; + max-height: none; +} + +/** + * (1): approximate for browsers not supporting calc + * (2): 42 = 2*15 + 2*10 + 2*1 (padding + margin + border) + * ^^ seriously + */ +#mocha .test pre { + display: block; + float: left; + clear: left; + font: 12px/1.5 monaco, monospace; + margin: 5px; + padding: 15px; + border: 1px solid #eee; + max-width: 85%; /*(1)*/ + max-width: calc(100% - 42px); /*(2)*/ + word-wrap: break-word; + border-bottom-color: #ddd; + -webkit-border-radius: 3px; + -webkit-box-shadow: 0 1px 3px #eee; + -moz-border-radius: 3px; + -moz-box-shadow: 0 1px 3px #eee; + border-radius: 3px; +} + +#mocha .test h2 { + position: relative; +} + +#mocha .test a.replay { + position: absolute; + top: 3px; + right: 0; + text-decoration: none; + vertical-align: middle; + display: block; + width: 15px; + height: 15px; + line-height: 15px; + text-align: center; + background: #eee; + font-size: 15px; + -moz-border-radius: 15px; + border-radius: 15px; + -webkit-transition: opacity 200ms; + -moz-transition: opacity 200ms; + transition: opacity 200ms; + opacity: 0.3; + color: #888; +} + +#mocha .test:hover a.replay { + opacity: 1; +} + +#mocha-report.pass .test.fail { + display: none; +} + +#mocha-report.fail .test.pass { + display: none; +} + +#mocha-report.pending .test.pass, +#mocha-report.pending .test.fail { + display: none; +} +#mocha-report.pending .test.pass.pending { + display: block; +} + +#mocha-error { + color: #c00; + font-size: 1.5em; + font-weight: 100; + letter-spacing: 1px; +} + +#mocha-stats { + position: fixed; + top: 15px; + right: 10px; + font-size: 12px; + margin: 0; + color: #888; + z-index: 1; +} + +#mocha-stats .progress { + float: right; + padding-top: 0; +} + +#mocha-stats em { + color: black; +} + +#mocha-stats a { + text-decoration: none; + color: inherit; +} + +#mocha-stats a:hover { + border-bottom: 1px solid #eee; +} + +#mocha-stats li { + display: inline-block; + margin: 0 5px; + list-style: none; + padding-top: 11px; +} + +#mocha-stats canvas { + width: 40px; + height: 40px; +} + +#mocha code .comment { color: #ddd; } +#mocha code .init { color: #2f6fad; } +#mocha code .string { color: #5890ad; } +#mocha code .keyword { color: #8a6343; } +#mocha code .number { color: #2f6fad; } + +@media screen and (max-device-width: 480px) { + #mocha { + margin: 60px 0px; + } + + #mocha #stats { + position: absolute; + } +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/mocha.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/mocha.js new file mode 100644 index 00000000..19561978 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/mocha.js @@ -0,0 +1,12710 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 1) { + suites.shift(); + } + var suite = Suite.create(suites[0], title); + suite.file = file; + suites.unshift(suite); + return suite; + }; + + /** + * Exclusive test-case. + */ + + context.suite.only = function(title, fn) { + var suite = context.suite(title, fn); + mocha.grep(suite.fullTitle()); + }; + + /** + * Describe a specification or test-case + * with the given `title` and callback `fn` + * acting as a thunk. + */ + + context.test = function(title, fn) { + var test = new Test(title, fn); + test.file = file; + suites[0].addTest(test); + return test; + }; + + /** + * Exclusive test-case. + */ + + context.test.only = function(title, fn) { + var test = context.test(title, fn); + var reString = '^' + escapeRe(test.fullTitle()) + '$'; + mocha.grep(new RegExp(reString)); + }; + + context.test.skip = common.test.skip; + context.test.retries = common.test.retries; + }); +}; + +},{"../suite":37,"../test":38,"./common":9,"escape-string-regexp":68}],13:[function(require,module,exports){ +/** + * Module dependencies. + */ + +var Suite = require('../suite'); +var Test = require('../test'); +var escapeRe = require('escape-string-regexp'); + +/** + * TDD-style interface: + * + * suite('Array', function() { + * suite('#indexOf()', function() { + * suiteSetup(function() { + * + * }); + * + * test('should return -1 when not present', function() { + * + * }); + * + * test('should return the index when present', function() { + * + * }); + * + * suiteTeardown(function() { + * + * }); + * }); + * }); + * + * @param {Suite} suite Root suite. + */ +module.exports = function(suite) { + var suites = [suite]; + + suite.on('pre-require', function(context, file, mocha) { + var common = require('./common')(suites, context); + + context.setup = common.beforeEach; + context.teardown = common.afterEach; + context.suiteSetup = common.before; + context.suiteTeardown = common.after; + context.run = mocha.options.delay && common.runWithSuite(suite); + + /** + * Describe a "suite" with the given `title` and callback `fn` containing + * nested suites and/or tests. + */ + context.suite = function(title, fn) { + var suite = Suite.create(suites[0], title); + suite.file = file; + suites.unshift(suite); + fn.call(suite); + suites.shift(); + return suite; + }; + + /** + * Pending suite. + */ + context.suite.skip = function(title, fn) { + var suite = Suite.create(suites[0], title); + suite.pending = true; + suites.unshift(suite); + fn.call(suite); + suites.shift(); + }; + + /** + * Exclusive test-case. + */ + context.suite.only = function(title, fn) { + var suite = context.suite(title, fn); + mocha.grep(suite.fullTitle()); + }; + + /** + * Describe a specification or test-case with the given `title` and + * callback `fn` acting as a thunk. + */ + context.test = function(title, fn) { + var suite = suites[0]; + if (suite.pending) { + fn = null; + } + var test = new Test(title, fn); + test.file = file; + suite.addTest(test); + return test; + }; + + /** + * Exclusive test-case. + */ + + context.test.only = function(title, fn) { + var test = context.test(title, fn); + var reString = '^' + escapeRe(test.fullTitle()) + '$'; + mocha.grep(new RegExp(reString)); + }; + + context.test.skip = common.test.skip; + context.test.retries = common.test.retries; + }); +}; + +},{"../suite":37,"../test":38,"./common":9,"escape-string-regexp":68}],14:[function(require,module,exports){ +(function (process,global,__dirname){ +/*! + * mocha + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var escapeRe = require('escape-string-regexp'); +var path = require('path'); +var reporters = require('./reporters'); +var utils = require('./utils'); + +/** + * Expose `Mocha`. + */ + +exports = module.exports = Mocha; + +/** + * To require local UIs and reporters when running in node. + */ + +if (!process.browser) { + var cwd = process.cwd(); + module.paths.push(cwd, path.join(cwd, 'node_modules')); +} + +/** + * Expose internals. + */ + +exports.utils = utils; +exports.interfaces = require('./interfaces'); +exports.reporters = reporters; +exports.Runnable = require('./runnable'); +exports.Context = require('./context'); +exports.Runner = require('./runner'); +exports.Suite = require('./suite'); +exports.Hook = require('./hook'); +exports.Test = require('./test'); + +/** + * Return image `name` path. + * + * @api private + * @param {string} name + * @return {string} + */ +function image(name) { + return path.join(__dirname, '../images', name + '.png'); +} + +/** + * Set up mocha with `options`. + * + * Options: + * + * - `ui` name "bdd", "tdd", "exports" etc + * - `reporter` reporter instance, defaults to `mocha.reporters.spec` + * - `globals` array of accepted globals + * - `timeout` timeout in milliseconds + * - `retries` number of times to retry failed tests + * - `bail` bail on the first test failure + * - `slow` milliseconds to wait before considering a test slow + * - `ignoreLeaks` ignore global leaks + * - `fullTrace` display the full stack-trace on failing + * - `grep` string or regexp to filter tests with + * + * @param {Object} options + * @api public + */ +function Mocha(options) { + options = options || {}; + this.files = []; + this.options = options; + if (options.grep) { + this.grep(new RegExp(options.grep)); + } + if (options.fgrep) { + this.grep(options.fgrep); + } + this.suite = new exports.Suite('', new exports.Context()); + this.ui(options.ui); + this.bail(options.bail); + this.reporter(options.reporter, options.reporterOptions); + if (typeof options.timeout !== 'undefined' && options.timeout !== null) { + this.timeout(options.timeout); + } + if (typeof options.retries !== 'undefined' && options.retries !== null) { + this.retries(options.retries); + } + this.useColors(options.useColors); + if (options.enableTimeouts !== null) { + this.enableTimeouts(options.enableTimeouts); + } + if (options.slow) { + this.slow(options.slow); + } + + this.suite.on('pre-require', function(context) { + exports.afterEach = context.afterEach || context.teardown; + exports.after = context.after || context.suiteTeardown; + exports.beforeEach = context.beforeEach || context.setup; + exports.before = context.before || context.suiteSetup; + exports.describe = context.describe || context.suite; + exports.it = context.it || context.test; + exports.setup = context.setup || context.beforeEach; + exports.suiteSetup = context.suiteSetup || context.before; + exports.suiteTeardown = context.suiteTeardown || context.after; + exports.suite = context.suite || context.describe; + exports.teardown = context.teardown || context.afterEach; + exports.test = context.test || context.it; + exports.run = context.run; + }); +} + +/** + * Enable or disable bailing on the first failure. + * + * @api public + * @param {boolean} [bail] + */ +Mocha.prototype.bail = function(bail) { + if (!arguments.length) { + bail = true; + } + this.suite.bail(bail); + return this; +}; + +/** + * Add test `file`. + * + * @api public + * @param {string} file + */ +Mocha.prototype.addFile = function(file) { + this.files.push(file); + return this; +}; + +/** + * Set reporter to `reporter`, defaults to "spec". + * + * @param {String|Function} reporter name or constructor + * @param {Object} reporterOptions optional options + * @api public + * @param {string|Function} reporter name or constructor + * @param {Object} reporterOptions optional options + */ +Mocha.prototype.reporter = function(reporter, reporterOptions) { + if (typeof reporter === 'function') { + this._reporter = reporter; + } else { + reporter = reporter || 'spec'; + var _reporter; + // Try to load a built-in reporter. + if (reporters[reporter]) { + _reporter = reporters[reporter]; + } + // Try to load reporters from process.cwd() and node_modules + if (!_reporter) { + try { + _reporter = require(reporter); + } catch (err) { + err.message.indexOf('Cannot find module') !== -1 + ? console.warn('"' + reporter + '" reporter not found') + : console.warn('"' + reporter + '" reporter blew up with error:\n' + err.stack); + } + } + if (!_reporter && reporter === 'teamcity') { + console.warn('The Teamcity reporter was moved to a package named ' + + 'mocha-teamcity-reporter ' + + '(https://npmjs.org/package/mocha-teamcity-reporter).'); + } + if (!_reporter) { + throw new Error('invalid reporter "' + reporter + '"'); + } + this._reporter = _reporter; + } + this.options.reporterOptions = reporterOptions; + return this; +}; + +/** + * Set test UI `name`, defaults to "bdd". + * + * @api public + * @param {string} bdd + */ +Mocha.prototype.ui = function(name) { + name = name || 'bdd'; + this._ui = exports.interfaces[name]; + if (!this._ui) { + try { + this._ui = require(name); + } catch (err) { + throw new Error('invalid interface "' + name + '"'); + } + } + this._ui = this._ui(this.suite); + return this; +}; + +/** + * Load registered files. + * + * @api private + */ +Mocha.prototype.loadFiles = function(fn) { + var self = this; + var suite = this.suite; + this.files.forEach(function(file) { + file = path.resolve(file); + suite.emit('pre-require', global, file, self); + suite.emit('require', require(file), file, self); + suite.emit('post-require', global, file, self); + }); + fn && fn(); +}; + +/** + * Enable growl support. + * + * @api private + */ +Mocha.prototype._growl = function(runner, reporter) { + var notify = require('growl'); + + runner.on('end', function() { + var stats = reporter.stats; + if (stats.failures) { + var msg = stats.failures + ' of ' + runner.total + ' tests failed'; + notify(msg, { name: 'mocha', title: 'Failed', image: image('error') }); + } else { + notify(stats.passes + ' tests passed in ' + stats.duration + 'ms', { + name: 'mocha', + title: 'Passed', + image: image('ok') + }); + } + }); +}; + +/** + * Add regexp to grep, if `re` is a string it is escaped. + * + * @param {RegExp|String} re + * @return {Mocha} + * @api public + * @param {RegExp|string} re + * @return {Mocha} + */ +Mocha.prototype.grep = function(re) { + this.options.grep = typeof re === 'string' ? new RegExp(escapeRe(re)) : re; + return this; +}; + +/** + * Invert `.grep()` matches. + * + * @return {Mocha} + * @api public + */ +Mocha.prototype.invert = function() { + this.options.invert = true; + return this; +}; + +/** + * Ignore global leaks. + * + * @param {Boolean} ignore + * @return {Mocha} + * @api public + * @param {boolean} ignore + * @return {Mocha} + */ +Mocha.prototype.ignoreLeaks = function(ignore) { + this.options.ignoreLeaks = Boolean(ignore); + return this; +}; + +/** + * Enable global leak checking. + * + * @return {Mocha} + * @api public + */ +Mocha.prototype.checkLeaks = function() { + this.options.ignoreLeaks = false; + return this; +}; + +/** + * Display long stack-trace on failing + * + * @return {Mocha} + * @api public + */ +Mocha.prototype.fullTrace = function() { + this.options.fullStackTrace = true; + return this; +}; + +/** + * Enable growl support. + * + * @return {Mocha} + * @api public + */ +Mocha.prototype.growl = function() { + this.options.growl = true; + return this; +}; + +/** + * Ignore `globals` array or string. + * + * @param {Array|String} globals + * @return {Mocha} + * @api public + * @param {Array|string} globals + * @return {Mocha} + */ +Mocha.prototype.globals = function(globals) { + this.options.globals = (this.options.globals || []).concat(globals); + return this; +}; + +/** + * Emit color output. + * + * @param {Boolean} colors + * @return {Mocha} + * @api public + * @param {boolean} colors + * @return {Mocha} + */ +Mocha.prototype.useColors = function(colors) { + if (colors !== undefined) { + this.options.useColors = colors; + } + return this; +}; + +/** + * Use inline diffs rather than +/-. + * + * @param {Boolean} inlineDiffs + * @return {Mocha} + * @api public + * @param {boolean} inlineDiffs + * @return {Mocha} + */ +Mocha.prototype.useInlineDiffs = function(inlineDiffs) { + this.options.useInlineDiffs = inlineDiffs !== undefined && inlineDiffs; + return this; +}; + +/** + * Set the timeout in milliseconds. + * + * @param {Number} timeout + * @return {Mocha} + * @api public + * @param {number} timeout + * @return {Mocha} + */ +Mocha.prototype.timeout = function(timeout) { + this.suite.timeout(timeout); + return this; +}; + +/** + * Set the number of times to retry failed tests. + * + * @param {Number} retry times + * @return {Mocha} + * @api public + */ +Mocha.prototype.retries = function(n) { + this.suite.retries(n); + return this; +}; + +/** + * Set slowness threshold in milliseconds. + * + * @param {Number} slow + * @return {Mocha} + * @api public + * @param {number} slow + * @return {Mocha} + */ +Mocha.prototype.slow = function(slow) { + this.suite.slow(slow); + return this; +}; + +/** + * Enable timeouts. + * + * @param {Boolean} enabled + * @return {Mocha} + * @api public + * @param {boolean} enabled + * @return {Mocha} + */ +Mocha.prototype.enableTimeouts = function(enabled) { + this.suite.enableTimeouts(arguments.length && enabled !== undefined ? enabled : true); + return this; +}; + +/** + * Makes all tests async (accepting a callback) + * + * @return {Mocha} + * @api public + */ +Mocha.prototype.asyncOnly = function() { + this.options.asyncOnly = true; + return this; +}; + +/** + * Disable syntax highlighting (in browser). + * + * @api public + */ +Mocha.prototype.noHighlighting = function() { + this.options.noHighlighting = true; + return this; +}; + +/** + * Enable uncaught errors to propagate (in browser). + * + * @return {Mocha} + * @api public + */ +Mocha.prototype.allowUncaught = function() { + this.options.allowUncaught = true; + return this; +}; + +/** + * Delay root suite execution. + * @returns {Mocha} + */ +Mocha.prototype.delay = function delay() { + this.options.delay = true; + return this; +}; + +/** + * Run tests and invoke `fn()` when complete. + * + * @api public + * @param {Function} fn + * @return {Runner} + */ +Mocha.prototype.run = function(fn) { + if (this.files.length) { + this.loadFiles(); + } + var suite = this.suite; + var options = this.options; + options.files = this.files; + var runner = new exports.Runner(suite, options.delay); + var reporter = new this._reporter(runner, options); + runner.ignoreLeaks = options.ignoreLeaks !== false; + runner.fullStackTrace = options.fullStackTrace; + runner.asyncOnly = options.asyncOnly; + runner.allowUncaught = options.allowUncaught; + if (options.grep) { + runner.grep(options.grep, options.invert); + } + if (options.globals) { + runner.globals(options.globals); + } + if (options.growl) { + this._growl(runner, reporter); + } + if (options.useColors !== undefined) { + exports.reporters.Base.useColors = options.useColors; + } + exports.reporters.Base.inlineDiffs = options.useInlineDiffs; + + function done(failures) { + if (reporter.done) { + reporter.done(failures, fn); + } else { + fn && fn(failures); + } + } + + return runner.run(done); +}; + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},"/lib") +},{"./context":6,"./hook":7,"./interfaces":11,"./reporters":22,"./runnable":35,"./runner":36,"./suite":37,"./test":38,"./utils":39,"_process":51,"escape-string-regexp":68,"growl":69,"path":41}],15:[function(require,module,exports){ +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @api public + * @param {string|number} val + * @param {Object} options + * @return {string|number} + */ +module.exports = function(val, options) { + options = options || {}; + if (typeof val === 'string') { + return parse(val); + } + // https://github.com/mochajs/mocha/pull/1035 + return options['long'] ? longFormat(val) : shortFormat(val); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @api private + * @param {string} str + * @return {number} + */ +function parse(str) { + var match = (/^((?:\d+)?\.?\d+) *(ms|seconds?|s|minutes?|m|hours?|h|days?|d|years?|y)?$/i).exec(str); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'y': + return n * y; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 's': + return n * s; + case 'ms': + return n; + default: + // No default case + } +} + +/** + * Short format for `ms`. + * + * @api private + * @param {number} ms + * @return {string} + */ +function shortFormat(ms) { + if (ms >= d) { + return Math.round(ms / d) + 'd'; + } + if (ms >= h) { + return Math.round(ms / h) + 'h'; + } + if (ms >= m) { + return Math.round(ms / m) + 'm'; + } + if (ms >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @api private + * @param {number} ms + * @return {string} + */ +function longFormat(ms) { + return plural(ms, d, 'day') + || plural(ms, h, 'hour') + || plural(ms, m, 'minute') + || plural(ms, s, 'second') + || ms + ' ms'; +} + +/** + * Pluralization helper. + * + * @api private + * @param {number} ms + * @param {number} n + * @param {string} name + */ +function plural(ms, n, name) { + if (ms < n) { + return; + } + if (ms < n * 1.5) { + return Math.floor(ms / n) + ' ' + name; + } + return Math.ceil(ms / n) + ' ' + name + 's'; +} + +},{}],16:[function(require,module,exports){ + +/** + * Expose `Pending`. + */ + +module.exports = Pending; + +/** + * Initialize a new `Pending` error with the given message. + * + * @param {string} message + */ +function Pending(message) { + this.message = message; +} + +},{}],17:[function(require,module,exports){ +(function (process,global){ +/** + * Module dependencies. + */ + +var tty = require('tty'); +var diff = require('diff'); +var ms = require('../ms'); +var utils = require('../utils'); +var supportsColor = process.browser ? null : require('supports-color'); + +/** + * Expose `Base`. + */ + +exports = module.exports = Base; + +/** + * Save timer references to avoid Sinon interfering. + * See: https://github.com/mochajs/mocha/issues/237 + */ + +/* eslint-disable no-unused-vars, no-native-reassign */ +var Date = global.Date; +var setTimeout = global.setTimeout; +var setInterval = global.setInterval; +var clearTimeout = global.clearTimeout; +var clearInterval = global.clearInterval; +/* eslint-enable no-unused-vars, no-native-reassign */ + +/** + * Check if both stdio streams are associated with a tty. + */ + +var isatty = tty.isatty(1) && tty.isatty(2); + +/** + * Enable coloring by default, except in the browser interface. + */ + +exports.useColors = !process.browser && (supportsColor || (process.env.MOCHA_COLORS !== undefined)); + +/** + * Inline diffs instead of +/- + */ + +exports.inlineDiffs = false; + +/** + * Default color map. + */ + +exports.colors = { + pass: 90, + fail: 31, + 'bright pass': 92, + 'bright fail': 91, + 'bright yellow': 93, + pending: 36, + suite: 0, + 'error title': 0, + 'error message': 31, + 'error stack': 90, + checkmark: 32, + fast: 90, + medium: 33, + slow: 31, + green: 32, + light: 90, + 'diff gutter': 90, + 'diff added': 32, + 'diff removed': 31 +}; + +/** + * Default symbol map. + */ + +exports.symbols = { + ok: '✓', + err: '✖', + dot: '․' +}; + +// With node.js on Windows: use symbols available in terminal default fonts +if (process.platform === 'win32') { + exports.symbols.ok = '\u221A'; + exports.symbols.err = '\u00D7'; + exports.symbols.dot = '.'; +} + +/** + * Color `str` with the given `type`, + * allowing colors to be disabled, + * as well as user-defined color + * schemes. + * + * @param {string} type + * @param {string} str + * @return {string} + * @api private + */ +var color = exports.color = function(type, str) { + if (!exports.useColors) { + return String(str); + } + return '\u001b[' + exports.colors[type] + 'm' + str + '\u001b[0m'; +}; + +/** + * Expose term window size, with some defaults for when stderr is not a tty. + */ + +exports.window = { + width: 75 +}; + +if (isatty) { + exports.window.width = process.stdout.getWindowSize + ? process.stdout.getWindowSize(1)[0] + : tty.getWindowSize()[1]; +} + +/** + * Expose some basic cursor interactions that are common among reporters. + */ + +exports.cursor = { + hide: function() { + isatty && process.stdout.write('\u001b[?25l'); + }, + + show: function() { + isatty && process.stdout.write('\u001b[?25h'); + }, + + deleteLine: function() { + isatty && process.stdout.write('\u001b[2K'); + }, + + beginningOfLine: function() { + isatty && process.stdout.write('\u001b[0G'); + }, + + CR: function() { + if (isatty) { + exports.cursor.deleteLine(); + exports.cursor.beginningOfLine(); + } else { + process.stdout.write('\r'); + } + } +}; + +/** + * Outut the given `failures` as a list. + * + * @param {Array} failures + * @api public + */ + +exports.list = function(failures) { + console.log(); + failures.forEach(function(test, i) { + // format + var fmt = color('error title', ' %s) %s:\n') + + color('error message', ' %s') + + color('error stack', '\n%s\n'); + + // msg + var msg; + var err = test.err; + var message; + if (err.message) { + message = err.message; + } else if (typeof err.inspect === 'function') { + message = err.inspect() + ''; + } else { + message = ''; + } + var stack = err.stack || message; + var index = stack.indexOf(message); + var actual = err.actual; + var expected = err.expected; + var escape = true; + + if (index === -1) { + msg = message; + } else { + index += message.length; + msg = stack.slice(0, index); + // remove msg from stack + stack = stack.slice(index + 1); + } + + // uncaught + if (err.uncaught) { + msg = 'Uncaught ' + msg; + } + // explicitly show diff + if (err.showDiff !== false && sameType(actual, expected) && expected !== undefined) { + escape = false; + if (!(utils.isString(actual) && utils.isString(expected))) { + err.actual = actual = utils.stringify(actual); + err.expected = expected = utils.stringify(expected); + } + + fmt = color('error title', ' %s) %s:\n%s') + color('error stack', '\n%s\n'); + var match = message.match(/^([^:]+): expected/); + msg = '\n ' + color('error message', match ? match[1] : msg); + + if (exports.inlineDiffs) { + msg += inlineDiff(err, escape); + } else { + msg += unifiedDiff(err, escape); + } + } + + // indent stack trace + stack = stack.replace(/^/gm, ' '); + + console.log(fmt, (i + 1), test.fullTitle(), msg, stack); + }); +}; + +/** + * Initialize a new `Base` reporter. + * + * All other reporters generally + * inherit from this reporter, providing + * stats such as test duration, number + * of tests passed / failed etc. + * + * @param {Runner} runner + * @api public + */ + +function Base(runner) { + var stats = this.stats = { suites: 0, tests: 0, passes: 0, pending: 0, failures: 0 }; + var failures = this.failures = []; + + if (!runner) { + return; + } + this.runner = runner; + + runner.stats = stats; + + runner.on('start', function() { + stats.start = new Date(); + }); + + runner.on('suite', function(suite) { + stats.suites = stats.suites || 0; + suite.root || stats.suites++; + }); + + runner.on('test end', function() { + stats.tests = stats.tests || 0; + stats.tests++; + }); + + runner.on('pass', function(test) { + stats.passes = stats.passes || 0; + + if (test.duration > test.slow()) { + test.speed = 'slow'; + } else if (test.duration > test.slow() / 2) { + test.speed = 'medium'; + } else { + test.speed = 'fast'; + } + + stats.passes++; + }); + + runner.on('fail', function(test, err) { + stats.failures = stats.failures || 0; + stats.failures++; + test.err = err; + failures.push(test); + }); + + runner.on('end', function() { + stats.end = new Date(); + stats.duration = new Date() - stats.start; + }); + + runner.on('pending', function() { + stats.pending++; + }); +} + +/** + * Output common epilogue used by many of + * the bundled reporters. + * + * @api public + */ +Base.prototype.epilogue = function() { + var stats = this.stats; + var fmt; + + console.log(); + + // passes + fmt = color('bright pass', ' ') + + color('green', ' %d passing') + + color('light', ' (%s)'); + + console.log(fmt, + stats.passes || 0, + ms(stats.duration)); + + // pending + if (stats.pending) { + fmt = color('pending', ' ') + + color('pending', ' %d pending'); + + console.log(fmt, stats.pending); + } + + // failures + if (stats.failures) { + fmt = color('fail', ' %d failing'); + + console.log(fmt, stats.failures); + + Base.list(this.failures); + console.log(); + } + + console.log(); +}; + +/** + * Pad the given `str` to `len`. + * + * @api private + * @param {string} str + * @param {string} len + * @return {string} + */ +function pad(str, len) { + str = String(str); + return Array(len - str.length + 1).join(' ') + str; +} + +/** + * Returns an inline diff between 2 strings with coloured ANSI output + * + * @api private + * @param {Error} err with actual/expected + * @param {boolean} escape + * @return {string} Diff + */ +function inlineDiff(err, escape) { + var msg = errorDiff(err, 'WordsWithSpace', escape); + + // linenos + var lines = msg.split('\n'); + if (lines.length > 4) { + var width = String(lines.length).length; + msg = lines.map(function(str, i) { + return pad(++i, width) + ' |' + ' ' + str; + }).join('\n'); + } + + // legend + msg = '\n' + + color('diff removed', 'actual') + + ' ' + + color('diff added', 'expected') + + '\n\n' + + msg + + '\n'; + + // indent + msg = msg.replace(/^/gm, ' '); + return msg; +} + +/** + * Returns a unified diff between two strings. + * + * @api private + * @param {Error} err with actual/expected + * @param {boolean} escape + * @return {string} The diff. + */ +function unifiedDiff(err, escape) { + var indent = ' '; + function cleanUp(line) { + if (escape) { + line = escapeInvisibles(line); + } + if (line[0] === '+') { + return indent + colorLines('diff added', line); + } + if (line[0] === '-') { + return indent + colorLines('diff removed', line); + } + if (line.match(/\@\@/)) { + return null; + } + if (line.match(/\\ No newline/)) { + return null; + } + return indent + line; + } + function notBlank(line) { + return typeof line !== 'undefined' && line !== null; + } + var msg = diff.createPatch('string', err.actual, err.expected); + var lines = msg.split('\n').splice(4); + return '\n ' + + colorLines('diff added', '+ expected') + ' ' + + colorLines('diff removed', '- actual') + + '\n\n' + + lines.map(cleanUp).filter(notBlank).join('\n'); +} + +/** + * Return a character diff for `err`. + * + * @api private + * @param {Error} err + * @param {string} type + * @param {boolean} escape + * @return {string} + */ +function errorDiff(err, type, escape) { + var actual = escape ? escapeInvisibles(err.actual) : err.actual; + var expected = escape ? escapeInvisibles(err.expected) : err.expected; + return diff['diff' + type](actual, expected).map(function(str) { + if (str.added) { + return colorLines('diff added', str.value); + } + if (str.removed) { + return colorLines('diff removed', str.value); + } + return str.value; + }).join(''); +} + +/** + * Returns a string with all invisible characters in plain text + * + * @api private + * @param {string} line + * @return {string} + */ +function escapeInvisibles(line) { + return line.replace(/\t/g, '') + .replace(/\r/g, '') + .replace(/\n/g, '\n'); +} + +/** + * Color lines for `str`, using the color `name`. + * + * @api private + * @param {string} name + * @param {string} str + * @return {string} + */ +function colorLines(name, str) { + return str.split('\n').map(function(str) { + return color(name, str); + }).join('\n'); +} + +/** + * Object#toString reference. + */ +var objToString = Object.prototype.toString; + +/** + * Check that a / b have the same type. + * + * @api private + * @param {Object} a + * @param {Object} b + * @return {boolean} + */ +function sameType(a, b) { + return objToString.call(a) === objToString.call(b); +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../ms":15,"../utils":39,"_process":51,"diff":67,"supports-color":41,"tty":5}],18:[function(require,module,exports){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var utils = require('../utils'); + +/** + * Expose `Doc`. + */ + +exports = module.exports = Doc; + +/** + * Initialize a new `Doc` reporter. + * + * @param {Runner} runner + * @api public + */ +function Doc(runner) { + Base.call(this, runner); + + var indents = 2; + + function indent() { + return Array(indents).join(' '); + } + + runner.on('suite', function(suite) { + if (suite.root) { + return; + } + ++indents; + console.log('%s
', indent()); + ++indents; + console.log('%s

%s

', indent(), utils.escape(suite.title)); + console.log('%s
', indent()); + }); + + runner.on('suite end', function(suite) { + if (suite.root) { + return; + } + console.log('%s
', indent()); + --indents; + console.log('%s
', indent()); + --indents; + }); + + runner.on('pass', function(test) { + console.log('%s
%s
', indent(), utils.escape(test.title)); + var code = utils.escape(utils.clean(test.body)); + console.log('%s
%s
', indent(), code); + }); + + runner.on('fail', function(test, err) { + console.log('%s
%s
', indent(), utils.escape(test.title)); + var code = utils.escape(utils.clean(test.fn.body)); + console.log('%s
%s
', indent(), code); + console.log('%s
%s
', indent(), utils.escape(err)); + }); +} + +},{"../utils":39,"./base":17}],19:[function(require,module,exports){ +(function (process){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var inherits = require('../utils').inherits; +var color = Base.color; + +/** + * Expose `Dot`. + */ + +exports = module.exports = Dot; + +/** + * Initialize a new `Dot` matrix test reporter. + * + * @api public + * @param {Runner} runner + */ +function Dot(runner) { + Base.call(this, runner); + + var self = this; + var width = Base.window.width * .75 | 0; + var n = -1; + + runner.on('start', function() { + process.stdout.write('\n'); + }); + + runner.on('pending', function() { + if (++n % width === 0) { + process.stdout.write('\n '); + } + process.stdout.write(color('pending', Base.symbols.dot)); + }); + + runner.on('pass', function(test) { + if (++n % width === 0) { + process.stdout.write('\n '); + } + if (test.speed === 'slow') { + process.stdout.write(color('bright yellow', Base.symbols.dot)); + } else { + process.stdout.write(color(test.speed, Base.symbols.dot)); + } + }); + + runner.on('fail', function() { + if (++n % width === 0) { + process.stdout.write('\n '); + } + process.stdout.write(color('fail', Base.symbols.dot)); + }); + + runner.on('end', function() { + console.log(); + self.epilogue(); + }); +} + +/** + * Inherit from `Base.prototype`. + */ +inherits(Dot, Base); + +}).call(this,require('_process')) +},{"../utils":39,"./base":17,"_process":51}],20:[function(require,module,exports){ +(function (process,__dirname){ +/** + * Module dependencies. + */ + +var JSONCov = require('./json-cov'); +var readFileSync = require('fs').readFileSync; +var join = require('path').join; + +/** + * Expose `HTMLCov`. + */ + +exports = module.exports = HTMLCov; + +/** + * Initialize a new `JsCoverage` reporter. + * + * @api public + * @param {Runner} runner + */ +function HTMLCov(runner) { + var jade = require('jade'); + var file = join(__dirname, '/templates/coverage.jade'); + var str = readFileSync(file, 'utf8'); + var fn = jade.compile(str, { filename: file }); + var self = this; + + JSONCov.call(this, runner, false); + + runner.on('end', function() { + process.stdout.write(fn({ + cov: self.cov, + coverageClass: coverageClass + })); + }); +} + +/** + * Return coverage class for a given coverage percentage. + * + * @api private + * @param {number} coveragePctg + * @return {string} + */ +function coverageClass(coveragePctg) { + if (coveragePctg >= 75) { + return 'high'; + } + if (coveragePctg >= 50) { + return 'medium'; + } + if (coveragePctg >= 25) { + return 'low'; + } + return 'terrible'; +} + +}).call(this,require('_process'),"/lib/reporters") +},{"./json-cov":23,"_process":51,"fs":41,"jade":41,"path":41}],21:[function(require,module,exports){ +(function (global){ +/* eslint-env browser */ + +/** + * Module dependencies. + */ + +var Base = require('./base'); +var utils = require('../utils'); +var Progress = require('../browser/progress'); +var escapeRe = require('escape-string-regexp'); +var escape = utils.escape; + +/** + * Save timer references to avoid Sinon interfering (see GH-237). + */ + +/* eslint-disable no-unused-vars, no-native-reassign */ +var Date = global.Date; +var setTimeout = global.setTimeout; +var setInterval = global.setInterval; +var clearTimeout = global.clearTimeout; +var clearInterval = global.clearInterval; +/* eslint-enable no-unused-vars, no-native-reassign */ + +/** + * Expose `HTML`. + */ + +exports = module.exports = HTML; + +/** + * Stats template. + */ + +var statsTemplate = ''; + +/** + * Initialize a new `HTML` reporter. + * + * @api public + * @param {Runner} runner + */ +function HTML(runner) { + Base.call(this, runner); + + var self = this; + var stats = this.stats; + var stat = fragment(statsTemplate); + var items = stat.getElementsByTagName('li'); + var passes = items[1].getElementsByTagName('em')[0]; + var passesLink = items[1].getElementsByTagName('a')[0]; + var failures = items[2].getElementsByTagName('em')[0]; + var failuresLink = items[2].getElementsByTagName('a')[0]; + var duration = items[3].getElementsByTagName('em')[0]; + var canvas = stat.getElementsByTagName('canvas')[0]; + var report = fragment('
    '); + var stack = [report]; + var progress; + var ctx; + var root = document.getElementById('mocha'); + + if (canvas.getContext) { + var ratio = window.devicePixelRatio || 1; + canvas.style.width = canvas.width; + canvas.style.height = canvas.height; + canvas.width *= ratio; + canvas.height *= ratio; + ctx = canvas.getContext('2d'); + ctx.scale(ratio, ratio); + progress = new Progress(); + } + + if (!root) { + return error('#mocha div missing, add it to your document'); + } + + // pass toggle + on(passesLink, 'click', function() { + unhide(); + var name = (/pass/).test(report.className) ? '' : ' pass'; + report.className = report.className.replace(/fail|pass/g, '') + name; + if (report.className.trim()) { + hideSuitesWithout('test pass'); + } + }); + + // failure toggle + on(failuresLink, 'click', function() { + unhide(); + var name = (/fail/).test(report.className) ? '' : ' fail'; + report.className = report.className.replace(/fail|pass/g, '') + name; + if (report.className.trim()) { + hideSuitesWithout('test fail'); + } + }); + + root.appendChild(stat); + root.appendChild(report); + + if (progress) { + progress.size(40); + } + + runner.on('suite', function(suite) { + if (suite.root) { + return; + } + + // suite + var url = self.suiteURL(suite); + var el = fragment('
  • %s

  • ', url, escape(suite.title)); + + // container + stack[0].appendChild(el); + stack.unshift(document.createElement('ul')); + el.appendChild(stack[0]); + }); + + runner.on('suite end', function(suite) { + if (suite.root) { + return; + } + stack.shift(); + }); + + runner.on('fail', function(test) { + // For type = 'test' its possible that the test failed due to multiple + // done() calls. So report the issue here. + if (test.type === 'hook' + || test.type === 'test') { + runner.emit('test end', test); + } + }); + + runner.on('test end', function(test) { + // TODO: add to stats + var percent = stats.tests / this.total * 100 | 0; + if (progress) { + progress.update(percent).draw(ctx); + } + + // update stats + var ms = new Date() - stats.start; + text(passes, stats.passes); + text(failures, stats.failures); + text(duration, (ms / 1000).toFixed(2)); + + // test + var el; + if (test.state === 'passed') { + var url = self.testURL(test); + el = fragment('
  • %e%ems

  • ', test.speed, test.title, test.duration, url); + } else if (test.pending) { + el = fragment('
  • %e

  • ', test.title); + } else { + el = fragment('
  • %e

  • ', test.title, self.testURL(test)); + var stackString; // Note: Includes leading newline + var message = test.err.toString(); + + // <=IE7 stringifies to [Object Error]. Since it can be overloaded, we + // check for the result of the stringifying. + if (message === '[object Error]') { + message = test.err.message; + } + + if (test.err.stack) { + var indexOfMessage = test.err.stack.indexOf(test.err.message); + if (indexOfMessage === -1) { + stackString = test.err.stack; + } else { + stackString = test.err.stack.substr(test.err.message.length + indexOfMessage); + } + } else if (test.err.sourceURL && test.err.line !== undefined) { + // Safari doesn't give you a stack. Let's at least provide a source line. + stackString = '\n(' + test.err.sourceURL + ':' + test.err.line + ')'; + } + + stackString = stackString || ''; + + if (test.err.htmlMessage && stackString) { + el.appendChild(fragment('
    %s\n
    %e
    ', test.err.htmlMessage, stackString)); + } else if (test.err.htmlMessage) { + el.appendChild(fragment('
    %s
    ', test.err.htmlMessage)); + } else { + el.appendChild(fragment('
    %e%e
    ', message, stackString)); + } + } + + // toggle code + // TODO: defer + if (!test.pending) { + var h2 = el.getElementsByTagName('h2')[0]; + + on(h2, 'click', function() { + pre.style.display = pre.style.display === 'none' ? 'block' : 'none'; + }); + + var pre = fragment('
    %e
    ', utils.clean(test.body)); + el.appendChild(pre); + pre.style.display = 'none'; + } + + // Don't call .appendChild if #mocha-report was already .shift()'ed off the stack. + if (stack[0]) { + stack[0].appendChild(el); + } + }); +} + +/** + * Makes a URL, preserving querystring ("search") parameters. + * + * @param {string} s + * @return {string} A new URL. + */ +function makeUrl(s) { + var search = window.location.search; + + // Remove previous grep query parameter if present + if (search) { + search = search.replace(/[?&]grep=[^&\s]*/g, '').replace(/^&/, '?'); + } + + return window.location.pathname + (search ? search + '&' : '?') + 'grep=' + encodeURIComponent(escapeRe(s)); +} + +/** + * Provide suite URL. + * + * @param {Object} [suite] + */ +HTML.prototype.suiteURL = function(suite) { + return makeUrl(suite.fullTitle()); +}; + +/** + * Provide test URL. + * + * @param {Object} [test] + */ +HTML.prototype.testURL = function(test) { + return makeUrl(test.fullTitle()); +}; + +/** + * Display error `msg`. + * + * @param {string} msg + */ +function error(msg) { + document.body.appendChild(fragment('
    %s
    ', msg)); +} + +/** + * Return a DOM fragment from `html`. + * + * @param {string} html + */ +function fragment(html) { + var args = arguments; + var div = document.createElement('div'); + var i = 1; + + div.innerHTML = html.replace(/%([se])/g, function(_, type) { + switch (type) { + case 's': return String(args[i++]); + case 'e': return escape(args[i++]); + // no default + } + }); + + return div.firstChild; +} + +/** + * Check for suites that do not have elements + * with `classname`, and hide them. + * + * @param {text} classname + */ +function hideSuitesWithout(classname) { + var suites = document.getElementsByClassName('suite'); + for (var i = 0; i < suites.length; i++) { + var els = suites[i].getElementsByClassName(classname); + if (!els.length) { + suites[i].className += ' hidden'; + } + } +} + +/** + * Unhide .hidden suites. + */ +function unhide() { + var els = document.getElementsByClassName('suite hidden'); + for (var i = 0; i < els.length; ++i) { + els[i].className = els[i].className.replace('suite hidden', 'suite'); + } +} + +/** + * Set an element's text contents. + * + * @param {HTMLElement} el + * @param {string} contents + */ +function text(el, contents) { + if (el.textContent) { + el.textContent = contents; + } else { + el.innerText = contents; + } +} + +/** + * Listen on `event` with callback `fn`. + */ +function on(el, event, fn) { + if (el.addEventListener) { + el.addEventListener(event, fn, false); + } else { + el.attachEvent('on' + event, fn); + } +} + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../browser/progress":4,"../utils":39,"./base":17,"escape-string-regexp":68}],22:[function(require,module,exports){ +// Alias exports to a their normalized format Mocha#reporter to prevent a need +// for dynamic (try/catch) requires, which Browserify doesn't handle. +exports.Base = exports.base = require('./base'); +exports.Dot = exports.dot = require('./dot'); +exports.Doc = exports.doc = require('./doc'); +exports.TAP = exports.tap = require('./tap'); +exports.JSON = exports.json = require('./json'); +exports.HTML = exports.html = require('./html'); +exports.List = exports.list = require('./list'); +exports.Min = exports.min = require('./min'); +exports.Spec = exports.spec = require('./spec'); +exports.Nyan = exports.nyan = require('./nyan'); +exports.XUnit = exports.xunit = require('./xunit'); +exports.Markdown = exports.markdown = require('./markdown'); +exports.Progress = exports.progress = require('./progress'); +exports.Landing = exports.landing = require('./landing'); +exports.JSONCov = exports['json-cov'] = require('./json-cov'); +exports.HTMLCov = exports['html-cov'] = require('./html-cov'); +exports.JSONStream = exports['json-stream'] = require('./json-stream'); + +},{"./base":17,"./doc":18,"./dot":19,"./html":21,"./html-cov":20,"./json":25,"./json-cov":23,"./json-stream":24,"./landing":26,"./list":27,"./markdown":28,"./min":29,"./nyan":30,"./progress":31,"./spec":32,"./tap":33,"./xunit":34}],23:[function(require,module,exports){ +(function (process,global){ +/** + * Module dependencies. + */ + +var Base = require('./base'); + +/** + * Expose `JSONCov`. + */ + +exports = module.exports = JSONCov; + +/** + * Initialize a new `JsCoverage` reporter. + * + * @api public + * @param {Runner} runner + * @param {boolean} output + */ +function JSONCov(runner, output) { + Base.call(this, runner); + + output = arguments.length === 1 || output; + var self = this; + var tests = []; + var failures = []; + var passes = []; + + runner.on('test end', function(test) { + tests.push(test); + }); + + runner.on('pass', function(test) { + passes.push(test); + }); + + runner.on('fail', function(test) { + failures.push(test); + }); + + runner.on('end', function() { + var cov = global._$jscoverage || {}; + var result = self.cov = map(cov); + result.stats = self.stats; + result.tests = tests.map(clean); + result.failures = failures.map(clean); + result.passes = passes.map(clean); + if (!output) { + return; + } + process.stdout.write(JSON.stringify(result, null, 2)); + }); +} + +/** + * Map jscoverage data to a JSON structure + * suitable for reporting. + * + * @api private + * @param {Object} cov + * @return {Object} + */ + +function map(cov) { + var ret = { + instrumentation: 'node-jscoverage', + sloc: 0, + hits: 0, + misses: 0, + coverage: 0, + files: [] + }; + + for (var filename in cov) { + if (Object.prototype.hasOwnProperty.call(cov, filename)) { + var data = coverage(filename, cov[filename]); + ret.files.push(data); + ret.hits += data.hits; + ret.misses += data.misses; + ret.sloc += data.sloc; + } + } + + ret.files.sort(function(a, b) { + return a.filename.localeCompare(b.filename); + }); + + if (ret.sloc > 0) { + ret.coverage = (ret.hits / ret.sloc) * 100; + } + + return ret; +} + +/** + * Map jscoverage data for a single source file + * to a JSON structure suitable for reporting. + * + * @api private + * @param {string} filename name of the source file + * @param {Object} data jscoverage coverage data + * @return {Object} + */ +function coverage(filename, data) { + var ret = { + filename: filename, + coverage: 0, + hits: 0, + misses: 0, + sloc: 0, + source: {} + }; + + data.source.forEach(function(line, num) { + num++; + + if (data[num] === 0) { + ret.misses++; + ret.sloc++; + } else if (data[num] !== undefined) { + ret.hits++; + ret.sloc++; + } + + ret.source[num] = { + source: line, + coverage: data[num] === undefined ? '' : data[num] + }; + }); + + ret.coverage = ret.hits / ret.sloc * 100; + + return ret; +} + +/** + * Return a plain-object representation of `test` + * free of cyclic properties etc. + * + * @api private + * @param {Object} test + * @return {Object} + */ +function clean(test) { + return { + duration: test.duration, + currentRetry: test.currentRetry(), + fullTitle: test.fullTitle(), + title: test.title + }; +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./base":17,"_process":51}],24:[function(require,module,exports){ +(function (process){ +/** + * Module dependencies. + */ + +var Base = require('./base'); + +/** + * Expose `List`. + */ + +exports = module.exports = List; + +/** + * Initialize a new `List` test reporter. + * + * @api public + * @param {Runner} runner + */ +function List(runner) { + Base.call(this, runner); + + var self = this; + var total = runner.total; + + runner.on('start', function() { + console.log(JSON.stringify(['start', { total: total }])); + }); + + runner.on('pass', function(test) { + console.log(JSON.stringify(['pass', clean(test)])); + }); + + runner.on('fail', function(test, err) { + test = clean(test); + test.err = err.message; + test.stack = err.stack || null; + console.log(JSON.stringify(['fail', test])); + }); + + runner.on('end', function() { + process.stdout.write(JSON.stringify(['end', self.stats])); + }); +} + +/** + * Return a plain-object representation of `test` + * free of cyclic properties etc. + * + * @api private + * @param {Object} test + * @return {Object} + */ +function clean(test) { + return { + title: test.title, + fullTitle: test.fullTitle(), + duration: test.duration, + currentRetry: test.currentRetry() + }; +} + +}).call(this,require('_process')) +},{"./base":17,"_process":51}],25:[function(require,module,exports){ +(function (process){ +/** + * Module dependencies. + */ + +var Base = require('./base'); + +/** + * Expose `JSON`. + */ + +exports = module.exports = JSONReporter; + +/** + * Initialize a new `JSON` reporter. + * + * @api public + * @param {Runner} runner + */ +function JSONReporter(runner) { + Base.call(this, runner); + + var self = this; + var tests = []; + var pending = []; + var failures = []; + var passes = []; + + runner.on('test end', function(test) { + tests.push(test); + }); + + runner.on('pass', function(test) { + passes.push(test); + }); + + runner.on('fail', function(test) { + failures.push(test); + }); + + runner.on('pending', function(test) { + pending.push(test); + }); + + runner.on('end', function() { + var obj = { + stats: self.stats, + tests: tests.map(clean), + pending: pending.map(clean), + failures: failures.map(clean), + passes: passes.map(clean) + }; + + runner.testResults = obj; + + process.stdout.write(JSON.stringify(obj, null, 2)); + }); +} + +/** + * Return a plain-object representation of `test` + * free of cyclic properties etc. + * + * @api private + * @param {Object} test + * @return {Object} + */ +function clean(test) { + return { + title: test.title, + fullTitle: test.fullTitle(), + duration: test.duration, + currentRetry: test.currentRetry(), + err: errorJSON(test.err || {}) + }; +} + +/** + * Transform `error` into a JSON object. + * + * @api private + * @param {Error} err + * @return {Object} + */ +function errorJSON(err) { + var res = {}; + Object.getOwnPropertyNames(err).forEach(function(key) { + res[key] = err[key]; + }, err); + return res; +} + +}).call(this,require('_process')) +},{"./base":17,"_process":51}],26:[function(require,module,exports){ +(function (process){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var inherits = require('../utils').inherits; +var cursor = Base.cursor; +var color = Base.color; + +/** + * Expose `Landing`. + */ + +exports = module.exports = Landing; + +/** + * Airplane color. + */ + +Base.colors.plane = 0; + +/** + * Airplane crash color. + */ + +Base.colors['plane crash'] = 31; + +/** + * Runway color. + */ + +Base.colors.runway = 90; + +/** + * Initialize a new `Landing` reporter. + * + * @api public + * @param {Runner} runner + */ +function Landing(runner) { + Base.call(this, runner); + + var self = this; + var width = Base.window.width * .75 | 0; + var total = runner.total; + var stream = process.stdout; + var plane = color('plane', '✈'); + var crashed = -1; + var n = 0; + + function runway() { + var buf = Array(width).join('-'); + return ' ' + color('runway', buf); + } + + runner.on('start', function() { + stream.write('\n\n\n '); + cursor.hide(); + }); + + runner.on('test end', function(test) { + // check if the plane crashed + var col = crashed === -1 ? width * ++n / total | 0 : crashed; + + // show the crash + if (test.state === 'failed') { + plane = color('plane crash', '✈'); + crashed = col; + } + + // render landing strip + stream.write('\u001b[' + (width + 1) + 'D\u001b[2A'); + stream.write(runway()); + stream.write('\n '); + stream.write(color('runway', Array(col).join('⋅'))); + stream.write(plane); + stream.write(color('runway', Array(width - col).join('⋅') + '\n')); + stream.write(runway()); + stream.write('\u001b[0m'); + }); + + runner.on('end', function() { + cursor.show(); + console.log(); + self.epilogue(); + }); +} + +/** + * Inherit from `Base.prototype`. + */ +inherits(Landing, Base); + +}).call(this,require('_process')) +},{"../utils":39,"./base":17,"_process":51}],27:[function(require,module,exports){ +(function (process){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var inherits = require('../utils').inherits; +var color = Base.color; +var cursor = Base.cursor; + +/** + * Expose `List`. + */ + +exports = module.exports = List; + +/** + * Initialize a new `List` test reporter. + * + * @api public + * @param {Runner} runner + */ +function List(runner) { + Base.call(this, runner); + + var self = this; + var n = 0; + + runner.on('start', function() { + console.log(); + }); + + runner.on('test', function(test) { + process.stdout.write(color('pass', ' ' + test.fullTitle() + ': ')); + }); + + runner.on('pending', function(test) { + var fmt = color('checkmark', ' -') + + color('pending', ' %s'); + console.log(fmt, test.fullTitle()); + }); + + runner.on('pass', function(test) { + var fmt = color('checkmark', ' ' + Base.symbols.dot) + + color('pass', ' %s: ') + + color(test.speed, '%dms'); + cursor.CR(); + console.log(fmt, test.fullTitle(), test.duration); + }); + + runner.on('fail', function(test) { + cursor.CR(); + console.log(color('fail', ' %d) %s'), ++n, test.fullTitle()); + }); + + runner.on('end', self.epilogue.bind(self)); +} + +/** + * Inherit from `Base.prototype`. + */ +inherits(List, Base); + +}).call(this,require('_process')) +},{"../utils":39,"./base":17,"_process":51}],28:[function(require,module,exports){ +(function (process){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var utils = require('../utils'); + +/** + * Constants + */ + +var SUITE_PREFIX = '$'; + +/** + * Expose `Markdown`. + */ + +exports = module.exports = Markdown; + +/** + * Initialize a new `Markdown` reporter. + * + * @api public + * @param {Runner} runner + */ +function Markdown(runner) { + Base.call(this, runner); + + var level = 0; + var buf = ''; + + function title(str) { + return Array(level).join('#') + ' ' + str; + } + + function mapTOC(suite, obj) { + var ret = obj; + var key = SUITE_PREFIX + suite.title; + + obj = obj[key] = obj[key] || { suite: suite }; + suite.suites.forEach(function(suite) { + mapTOC(suite, obj); + }); + + return ret; + } + + function stringifyTOC(obj, level) { + ++level; + var buf = ''; + var link; + for (var key in obj) { + if (key === 'suite') { + continue; + } + if (key !== SUITE_PREFIX) { + link = ' - [' + key.substring(1) + ']'; + link += '(#' + utils.slug(obj[key].suite.fullTitle()) + ')\n'; + buf += Array(level).join(' ') + link; + } + buf += stringifyTOC(obj[key], level); + } + return buf; + } + + function generateTOC(suite) { + var obj = mapTOC(suite, {}); + return stringifyTOC(obj, 0); + } + + generateTOC(runner.suite); + + runner.on('suite', function(suite) { + ++level; + var slug = utils.slug(suite.fullTitle()); + buf += '' + '\n'; + buf += title(suite.title) + '\n'; + }); + + runner.on('suite end', function() { + --level; + }); + + runner.on('pass', function(test) { + var code = utils.clean(test.body); + buf += test.title + '.\n'; + buf += '\n```js\n'; + buf += code + '\n'; + buf += '```\n\n'; + }); + + runner.on('end', function() { + process.stdout.write('# TOC\n'); + process.stdout.write(generateTOC(runner.suite)); + process.stdout.write(buf); + }); +} + +}).call(this,require('_process')) +},{"../utils":39,"./base":17,"_process":51}],29:[function(require,module,exports){ +(function (process){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var inherits = require('../utils').inherits; + +/** + * Expose `Min`. + */ + +exports = module.exports = Min; + +/** + * Initialize a new `Min` minimal test reporter (best used with --watch). + * + * @api public + * @param {Runner} runner + */ +function Min(runner) { + Base.call(this, runner); + + runner.on('start', function() { + // clear screen + process.stdout.write('\u001b[2J'); + // set cursor position + process.stdout.write('\u001b[1;3H'); + }); + + runner.on('end', this.epilogue.bind(this)); +} + +/** + * Inherit from `Base.prototype`. + */ +inherits(Min, Base); + +}).call(this,require('_process')) +},{"../utils":39,"./base":17,"_process":51}],30:[function(require,module,exports){ +(function (process){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var inherits = require('../utils').inherits; + +/** + * Expose `Dot`. + */ + +exports = module.exports = NyanCat; + +/** + * Initialize a new `Dot` matrix test reporter. + * + * @param {Runner} runner + * @api public + */ + +function NyanCat(runner) { + Base.call(this, runner); + + var self = this; + var width = Base.window.width * .75 | 0; + var nyanCatWidth = this.nyanCatWidth = 11; + + this.colorIndex = 0; + this.numberOfLines = 4; + this.rainbowColors = self.generateColors(); + this.scoreboardWidth = 5; + this.tick = 0; + this.trajectories = [[], [], [], []]; + this.trajectoryWidthMax = (width - nyanCatWidth); + + runner.on('start', function() { + Base.cursor.hide(); + self.draw(); + }); + + runner.on('pending', function() { + self.draw(); + }); + + runner.on('pass', function() { + self.draw(); + }); + + runner.on('fail', function() { + self.draw(); + }); + + runner.on('end', function() { + Base.cursor.show(); + for (var i = 0; i < self.numberOfLines; i++) { + write('\n'); + } + self.epilogue(); + }); +} + +/** + * Inherit from `Base.prototype`. + */ +inherits(NyanCat, Base); + +/** + * Draw the nyan cat + * + * @api private + */ + +NyanCat.prototype.draw = function() { + this.appendRainbow(); + this.drawScoreboard(); + this.drawRainbow(); + this.drawNyanCat(); + this.tick = !this.tick; +}; + +/** + * Draw the "scoreboard" showing the number + * of passes, failures and pending tests. + * + * @api private + */ + +NyanCat.prototype.drawScoreboard = function() { + var stats = this.stats; + + function draw(type, n) { + write(' '); + write(Base.color(type, n)); + write('\n'); + } + + draw('green', stats.passes); + draw('fail', stats.failures); + draw('pending', stats.pending); + write('\n'); + + this.cursorUp(this.numberOfLines); +}; + +/** + * Append the rainbow. + * + * @api private + */ + +NyanCat.prototype.appendRainbow = function() { + var segment = this.tick ? '_' : '-'; + var rainbowified = this.rainbowify(segment); + + for (var index = 0; index < this.numberOfLines; index++) { + var trajectory = this.trajectories[index]; + if (trajectory.length >= this.trajectoryWidthMax) { + trajectory.shift(); + } + trajectory.push(rainbowified); + } +}; + +/** + * Draw the rainbow. + * + * @api private + */ + +NyanCat.prototype.drawRainbow = function() { + var self = this; + + this.trajectories.forEach(function(line) { + write('\u001b[' + self.scoreboardWidth + 'C'); + write(line.join('')); + write('\n'); + }); + + this.cursorUp(this.numberOfLines); +}; + +/** + * Draw the nyan cat + * + * @api private + */ +NyanCat.prototype.drawNyanCat = function() { + var self = this; + var startWidth = this.scoreboardWidth + this.trajectories[0].length; + var dist = '\u001b[' + startWidth + 'C'; + var padding = ''; + + write(dist); + write('_,------,'); + write('\n'); + + write(dist); + padding = self.tick ? ' ' : ' '; + write('_|' + padding + '/\\_/\\ '); + write('\n'); + + write(dist); + padding = self.tick ? '_' : '__'; + var tail = self.tick ? '~' : '^'; + write(tail + '|' + padding + this.face() + ' '); + write('\n'); + + write(dist); + padding = self.tick ? ' ' : ' '; + write(padding + '"" "" '); + write('\n'); + + this.cursorUp(this.numberOfLines); +}; + +/** + * Draw nyan cat face. + * + * @api private + * @return {string} + */ + +NyanCat.prototype.face = function() { + var stats = this.stats; + if (stats.failures) { + return '( x .x)'; + } else if (stats.pending) { + return '( o .o)'; + } else if (stats.passes) { + return '( ^ .^)'; + } + return '( - .-)'; +}; + +/** + * Move cursor up `n`. + * + * @api private + * @param {number} n + */ + +NyanCat.prototype.cursorUp = function(n) { + write('\u001b[' + n + 'A'); +}; + +/** + * Move cursor down `n`. + * + * @api private + * @param {number} n + */ + +NyanCat.prototype.cursorDown = function(n) { + write('\u001b[' + n + 'B'); +}; + +/** + * Generate rainbow colors. + * + * @api private + * @return {Array} + */ +NyanCat.prototype.generateColors = function() { + var colors = []; + + for (var i = 0; i < (6 * 7); i++) { + var pi3 = Math.floor(Math.PI / 3); + var n = (i * (1.0 / 6)); + var r = Math.floor(3 * Math.sin(n) + 3); + var g = Math.floor(3 * Math.sin(n + 2 * pi3) + 3); + var b = Math.floor(3 * Math.sin(n + 4 * pi3) + 3); + colors.push(36 * r + 6 * g + b + 16); + } + + return colors; +}; + +/** + * Apply rainbow to the given `str`. + * + * @api private + * @param {string} str + * @return {string} + */ +NyanCat.prototype.rainbowify = function(str) { + if (!Base.useColors) { + return str; + } + var color = this.rainbowColors[this.colorIndex % this.rainbowColors.length]; + this.colorIndex += 1; + return '\u001b[38;5;' + color + 'm' + str + '\u001b[0m'; +}; + +/** + * Stdout helper. + * + * @param {string} string A message to write to stdout. + */ +function write(string) { + process.stdout.write(string); +} + +}).call(this,require('_process')) +},{"../utils":39,"./base":17,"_process":51}],31:[function(require,module,exports){ +(function (process){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var inherits = require('../utils').inherits; +var color = Base.color; +var cursor = Base.cursor; + +/** + * Expose `Progress`. + */ + +exports = module.exports = Progress; + +/** + * General progress bar color. + */ + +Base.colors.progress = 90; + +/** + * Initialize a new `Progress` bar test reporter. + * + * @api public + * @param {Runner} runner + * @param {Object} options + */ +function Progress(runner, options) { + Base.call(this, runner); + + var self = this; + var width = Base.window.width * .50 | 0; + var total = runner.total; + var complete = 0; + var lastN = -1; + + // default chars + options = options || {}; + options.open = options.open || '['; + options.complete = options.complete || '▬'; + options.incomplete = options.incomplete || Base.symbols.dot; + options.close = options.close || ']'; + options.verbose = false; + + // tests started + runner.on('start', function() { + console.log(); + cursor.hide(); + }); + + // tests complete + runner.on('test end', function() { + complete++; + + var percent = complete / total; + var n = width * percent | 0; + var i = width - n; + + if (n === lastN && !options.verbose) { + // Don't re-render the line if it hasn't changed + return; + } + lastN = n; + + cursor.CR(); + process.stdout.write('\u001b[J'); + process.stdout.write(color('progress', ' ' + options.open)); + process.stdout.write(Array(n).join(options.complete)); + process.stdout.write(Array(i).join(options.incomplete)); + process.stdout.write(color('progress', options.close)); + if (options.verbose) { + process.stdout.write(color('progress', ' ' + complete + ' of ' + total)); + } + }); + + // tests are complete, output some stats + // and the failures if any + runner.on('end', function() { + cursor.show(); + console.log(); + self.epilogue(); + }); +} + +/** + * Inherit from `Base.prototype`. + */ +inherits(Progress, Base); + +}).call(this,require('_process')) +},{"../utils":39,"./base":17,"_process":51}],32:[function(require,module,exports){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var inherits = require('../utils').inherits; +var color = Base.color; +var cursor = Base.cursor; + +/** + * Expose `Spec`. + */ + +exports = module.exports = Spec; + +/** + * Initialize a new `Spec` test reporter. + * + * @api public + * @param {Runner} runner + */ +function Spec(runner) { + Base.call(this, runner); + + var self = this; + var indents = 0; + var n = 0; + + function indent() { + return Array(indents).join(' '); + } + + runner.on('start', function() { + console.log(); + }); + + runner.on('suite', function(suite) { + ++indents; + console.log(color('suite', '%s%s'), indent(), suite.title); + }); + + runner.on('suite end', function() { + --indents; + if (indents === 1) { + console.log(); + } + }); + + runner.on('pending', function(test) { + var fmt = indent() + color('pending', ' - %s'); + console.log(fmt, test.title); + }); + + runner.on('pass', function(test) { + var fmt; + if (test.speed === 'fast') { + fmt = indent() + + color('checkmark', ' ' + Base.symbols.ok) + + color('pass', ' %s'); + cursor.CR(); + console.log(fmt, test.title); + } else { + fmt = indent() + + color('checkmark', ' ' + Base.symbols.ok) + + color('pass', ' %s') + + color(test.speed, ' (%dms)'); + cursor.CR(); + console.log(fmt, test.title, test.duration); + } + }); + + runner.on('fail', function(test) { + cursor.CR(); + console.log(indent() + color('fail', ' %d) %s'), ++n, test.title); + }); + + runner.on('end', self.epilogue.bind(self)); +} + +/** + * Inherit from `Base.prototype`. + */ +inherits(Spec, Base); + +},{"../utils":39,"./base":17}],33:[function(require,module,exports){ +/** + * Module dependencies. + */ + +var Base = require('./base'); + +/** + * Expose `TAP`. + */ + +exports = module.exports = TAP; + +/** + * Initialize a new `TAP` reporter. + * + * @api public + * @param {Runner} runner + */ +function TAP(runner) { + Base.call(this, runner); + + var n = 1; + var passes = 0; + var failures = 0; + + runner.on('start', function() { + var total = runner.grepTotal(runner.suite); + console.log('%d..%d', 1, total); + }); + + runner.on('test end', function() { + ++n; + }); + + runner.on('pending', function(test) { + console.log('ok %d %s # SKIP -', n, title(test)); + }); + + runner.on('pass', function(test) { + passes++; + console.log('ok %d %s', n, title(test)); + }); + + runner.on('fail', function(test, err) { + failures++; + console.log('not ok %d %s', n, title(test)); + if (err.stack) { + console.log(err.stack.replace(/^/gm, ' ')); + } + }); + + runner.on('end', function() { + console.log('# tests ' + (passes + failures)); + console.log('# pass ' + passes); + console.log('# fail ' + failures); + }); +} + +/** + * Return a TAP-safe title of `test` + * + * @api private + * @param {Object} test + * @return {String} + */ +function title(test) { + return test.fullTitle().replace(/#/g, ''); +} + +},{"./base":17}],34:[function(require,module,exports){ +(function (process,global){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var utils = require('../utils'); +var inherits = utils.inherits; +var fs = require('fs'); +var escape = utils.escape; +var mkdirp = require('mkdirp'); +var path = require('path'); + +/** + * Save timer references to avoid Sinon interfering (see GH-237). + */ + +/* eslint-disable no-unused-vars, no-native-reassign */ +var Date = global.Date; +var setTimeout = global.setTimeout; +var setInterval = global.setInterval; +var clearTimeout = global.clearTimeout; +var clearInterval = global.clearInterval; +/* eslint-enable no-unused-vars, no-native-reassign */ + +/** + * Expose `XUnit`. + */ + +exports = module.exports = XUnit; + +/** + * Initialize a new `XUnit` reporter. + * + * @api public + * @param {Runner} runner + */ +function XUnit(runner, options) { + Base.call(this, runner); + + var stats = this.stats; + var tests = []; + var self = this; + + if (options.reporterOptions && options.reporterOptions.output) { + if (!fs.createWriteStream) { + throw new Error('file output not supported in browser'); + } + mkdirp.sync(path.dirname(options.reporterOptions.output)); + self.fileStream = fs.createWriteStream(options.reporterOptions.output); + } + + runner.on('pending', function(test) { + tests.push(test); + }); + + runner.on('pass', function(test) { + tests.push(test); + }); + + runner.on('fail', function(test) { + tests.push(test); + }); + + runner.on('end', function() { + self.write(tag('testsuite', { + name: 'Mocha Tests', + tests: stats.tests, + failures: stats.failures, + errors: stats.failures, + skipped: stats.tests - stats.failures - stats.passes, + timestamp: (new Date()).toUTCString(), + time: (stats.duration / 1000) || 0 + }, false)); + + tests.forEach(function(t) { + self.test(t); + }); + + self.write(''); + }); +} + +/** + * Inherit from `Base.prototype`. + */ +inherits(XUnit, Base); + +/** + * Override done to close the stream (if it's a file). + * + * @param failures + * @param {Function} fn + */ +XUnit.prototype.done = function(failures, fn) { + if (this.fileStream) { + this.fileStream.end(function() { + fn(failures); + }); + } else { + fn(failures); + } +}; + +/** + * Write out the given line. + * + * @param {string} line + */ +XUnit.prototype.write = function(line) { + if (this.fileStream) { + this.fileStream.write(line + '\n'); + } else if (typeof process === 'object' && process.stdout) { + process.stdout.write(line + '\n'); + } else { + console.log(line); + } +}; + +/** + * Output tag for the given `test.` + * + * @param {Test} test + */ +XUnit.prototype.test = function(test) { + var attrs = { + classname: test.parent.fullTitle(), + name: test.title, + time: (test.duration / 1000) || 0 + }; + + if (test.state === 'failed') { + var err = test.err; + this.write(tag('testcase', attrs, false, tag('failure', {}, false, cdata(escape(err.message) + '\n' + err.stack)))); + } else if (test.pending) { + this.write(tag('testcase', attrs, false, tag('skipped', {}, true))); + } else { + this.write(tag('testcase', attrs, true)); + } +}; + +/** + * HTML tag helper. + * + * @param name + * @param attrs + * @param close + * @param content + * @return {string} + */ +function tag(name, attrs, close, content) { + var end = close ? '/>' : '>'; + var pairs = []; + var tag; + + for (var key in attrs) { + if (Object.prototype.hasOwnProperty.call(attrs, key)) { + pairs.push(key + '="' + escape(attrs[key]) + '"'); + } + } + + tag = '<' + name + (pairs.length ? ' ' + pairs.join(' ') : '') + end; + if (content) { + tag += content + ''; +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../utils":39,"./base":17,"_process":51,"fs":41,"mkdirp":70,"path":41}],35:[function(require,module,exports){ +(function (global){ +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter; +var Pending = require('./pending'); +var debug = require('debug')('mocha:runnable'); +var milliseconds = require('./ms'); +var utils = require('./utils'); +var inherits = utils.inherits; + +/** + * Save timer references to avoid Sinon interfering (see GH-237). + */ + +/* eslint-disable no-unused-vars, no-native-reassign */ +var Date = global.Date; +var setTimeout = global.setTimeout; +var setInterval = global.setInterval; +var clearTimeout = global.clearTimeout; +var clearInterval = global.clearInterval; +/* eslint-enable no-unused-vars, no-native-reassign */ + +/** + * Object#toString(). + */ + +var toString = Object.prototype.toString; + +/** + * Expose `Runnable`. + */ + +module.exports = Runnable; + +/** + * Initialize a new `Runnable` with the given `title` and callback `fn`. + * + * @param {String} title + * @param {Function} fn + * @api private + * @param {string} title + * @param {Function} fn + */ +function Runnable(title, fn) { + this.title = title; + this.fn = fn; + this.async = fn && fn.length; + this.sync = !this.async; + this._timeout = 2000; + this._slow = 75; + this._enableTimeouts = true; + this.timedOut = false; + this._trace = new Error('done() called multiple times'); + this._retries = -1; + this._currentRetry = 0; +} + +/** + * Inherit from `EventEmitter.prototype`. + */ +inherits(Runnable, EventEmitter); + +/** + * Set & get timeout `ms`. + * + * @api private + * @param {number|string} ms + * @return {Runnable|number} ms or Runnable instance. + */ +Runnable.prototype.timeout = function(ms) { + if (!arguments.length) { + return this._timeout; + } + if (ms === 0) { + this._enableTimeouts = false; + } + if (typeof ms === 'string') { + ms = milliseconds(ms); + } + debug('timeout %d', ms); + this._timeout = ms; + if (this.timer) { + this.resetTimeout(); + } + return this; +}; + +/** + * Set & get slow `ms`. + * + * @api private + * @param {number|string} ms + * @return {Runnable|number} ms or Runnable instance. + */ +Runnable.prototype.slow = function(ms) { + if (!arguments.length) { + return this._slow; + } + if (typeof ms === 'string') { + ms = milliseconds(ms); + } + debug('timeout %d', ms); + this._slow = ms; + return this; +}; + +/** + * Set and get whether timeout is `enabled`. + * + * @api private + * @param {boolean} enabled + * @return {Runnable|boolean} enabled or Runnable instance. + */ +Runnable.prototype.enableTimeouts = function(enabled) { + if (!arguments.length) { + return this._enableTimeouts; + } + debug('enableTimeouts %s', enabled); + this._enableTimeouts = enabled; + return this; +}; + +/** + * Halt and mark as pending. + * + * @api private + */ +Runnable.prototype.skip = function() { + throw new Pending(); +}; + +/** + * Set number of retries. + * + * @api private + */ +Runnable.prototype.retries = function(n) { + if (!arguments.length) { + return this._retries; + } + this._retries = n; +}; + +/** + * Get current retry + * + * @api private + */ +Runnable.prototype.currentRetry = function(n) { + if (!arguments.length) { + return this._currentRetry; + } + this._currentRetry = n; +}; + +/** + * Return the full title generated by recursively concatenating the parent's + * full title. + * + * @api public + * @return {string} + */ +Runnable.prototype.fullTitle = function() { + return this.parent.fullTitle() + ' ' + this.title; +}; + +/** + * Clear the timeout. + * + * @api private + */ +Runnable.prototype.clearTimeout = function() { + clearTimeout(this.timer); +}; + +/** + * Inspect the runnable void of private properties. + * + * @api private + * @return {string} + */ +Runnable.prototype.inspect = function() { + return JSON.stringify(this, function(key, val) { + if (key[0] === '_') { + return; + } + if (key === 'parent') { + return '#'; + } + if (key === 'ctx') { + return '#'; + } + return val; + }, 2); +}; + +/** + * Reset the timeout. + * + * @api private + */ +Runnable.prototype.resetTimeout = function() { + var self = this; + var ms = this.timeout() || 1e9; + + if (!this._enableTimeouts) { + return; + } + this.clearTimeout(); + this.timer = setTimeout(function() { + if (!self._enableTimeouts) { + return; + } + self.callback(new Error('timeout of ' + ms + 'ms exceeded. Ensure the done() callback is being called in this test.')); + self.timedOut = true; + }, ms); +}; + +/** + * Whitelist a list of globals for this test run. + * + * @api private + * @param {string[]} globals + */ +Runnable.prototype.globals = function(globals) { + if (!arguments.length) { + return this._allowedGlobals; + } + this._allowedGlobals = globals; +}; + +/** + * Run the test and invoke `fn(err)`. + * + * @param {Function} fn + * @api private + */ +Runnable.prototype.run = function(fn) { + var self = this; + var start = new Date(); + var ctx = this.ctx; + var finished; + var emitted; + + // Sometimes the ctx exists, but it is not runnable + if (ctx && ctx.runnable) { + ctx.runnable(this); + } + + // called multiple times + function multiple(err) { + if (emitted) { + return; + } + emitted = true; + self.emit('error', err || new Error('done() called multiple times; stacktrace may be inaccurate')); + } + + // finished + function done(err) { + var ms = self.timeout(); + if (self.timedOut) { + return; + } + if (finished) { + return multiple(err || self._trace); + } + + self.clearTimeout(); + self.duration = new Date() - start; + finished = true; + if (!err && self.duration > ms && self._enableTimeouts) { + err = new Error('timeout of ' + ms + 'ms exceeded. Ensure the done() callback is being called in this test.'); + } + fn(err); + } + + // for .resetTimeout() + this.callback = done; + + // explicit async with `done` argument + if (this.async) { + this.resetTimeout(); + + if (this.allowUncaught) { + return callFnAsync(this.fn); + } + try { + callFnAsync(this.fn); + } catch (err) { + done(utils.getError(err)); + } + return; + } + + if (this.allowUncaught) { + callFn(this.fn); + done(); + return; + } + + // sync or promise-returning + try { + if (this.pending) { + done(); + } else { + callFn(this.fn); + } + } catch (err) { + done(utils.getError(err)); + } + + function callFn(fn) { + var result = fn.call(ctx); + if (result && typeof result.then === 'function') { + self.resetTimeout(); + result + .then(function() { + done(); + // Return null so libraries like bluebird do not warn about + // subsequently constructed Promises. + return null; + }, + function(reason) { + done(reason || new Error('Promise rejected with no or falsy reason')); + }); + } else { + if (self.asyncOnly) { + return done(new Error('--async-only option in use without declaring `done()` or returning a promise')); + } + + done(); + } + } + + function callFnAsync(fn) { + fn.call(ctx, function(err) { + if (err instanceof Error || toString.call(err) === '[object Error]') { + return done(err); + } + if (err) { + if (Object.prototype.toString.call(err) === '[object Object]') { + return done(new Error('done() invoked with non-Error: ' + + JSON.stringify(err))); + } + return done(new Error('done() invoked with non-Error: ' + err)); + } + done(); + }); + } +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./ms":15,"./pending":16,"./utils":39,"debug":2,"events":3}],36:[function(require,module,exports){ +(function (process,global){ +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter; +var Pending = require('./pending'); +var utils = require('./utils'); +var inherits = utils.inherits; +var debug = require('debug')('mocha:runner'); +var Runnable = require('./runnable'); +var filter = utils.filter; +var indexOf = utils.indexOf; +var keys = utils.keys; +var stackFilter = utils.stackTraceFilter(); +var stringify = utils.stringify; +var type = utils.type; +var undefinedError = utils.undefinedError; +var isArray = utils.isArray; + +/** + * Non-enumerable globals. + */ + +var globals = [ + 'setTimeout', + 'clearTimeout', + 'setInterval', + 'clearInterval', + 'XMLHttpRequest', + 'Date', + 'setImmediate', + 'clearImmediate' +]; + +/** + * Expose `Runner`. + */ + +module.exports = Runner; + +/** + * Initialize a `Runner` for the given `suite`. + * + * Events: + * + * - `start` execution started + * - `end` execution complete + * - `suite` (suite) test suite execution started + * - `suite end` (suite) all tests (and sub-suites) have finished + * - `test` (test) test execution started + * - `test end` (test) test completed + * - `hook` (hook) hook execution started + * - `hook end` (hook) hook complete + * - `pass` (test) test passed + * - `fail` (test, err) test failed + * - `pending` (test) test pending + * + * @api public + * @param {Suite} suite Root suite + * @param {boolean} [delay] Whether or not to delay execution of root suite + * until ready. + */ +function Runner(suite, delay) { + var self = this; + this._globals = []; + this._abort = false; + this._delay = delay; + this.suite = suite; + this.started = false; + this.total = suite.total(); + this.failures = 0; + this.on('test end', function(test) { + self.checkGlobals(test); + }); + this.on('hook end', function(hook) { + self.checkGlobals(hook); + }); + this._defaultGrep = /.*/; + this.grep(this._defaultGrep); + this.globals(this.globalProps().concat(extraGlobals())); +} + +/** + * Wrapper for setImmediate, process.nextTick, or browser polyfill. + * + * @param {Function} fn + * @api private + */ +Runner.immediately = global.setImmediate || process.nextTick; + +/** + * Inherit from `EventEmitter.prototype`. + */ +inherits(Runner, EventEmitter); + +/** + * Run tests with full titles matching `re`. Updates runner.total + * with number of tests matched. + * + * @param {RegExp} re + * @param {Boolean} invert + * @return {Runner} for chaining + * @api public + * @param {RegExp} re + * @param {boolean} invert + * @return {Runner} Runner instance. + */ +Runner.prototype.grep = function(re, invert) { + debug('grep %s', re); + this._grep = re; + this._invert = invert; + this.total = this.grepTotal(this.suite); + return this; +}; + +/** + * Returns the number of tests matching the grep search for the + * given suite. + * + * @param {Suite} suite + * @return {Number} + * @api public + * @param {Suite} suite + * @return {number} + */ +Runner.prototype.grepTotal = function(suite) { + var self = this; + var total = 0; + + suite.eachTest(function(test) { + var match = self._grep.test(test.fullTitle()); + if (self._invert) { + match = !match; + } + if (match) { + total++; + } + }); + + return total; +}; + +/** + * Return a list of global properties. + * + * @return {Array} + * @api private + */ +Runner.prototype.globalProps = function() { + var props = keys(global); + + // non-enumerables + for (var i = 0; i < globals.length; ++i) { + if (~indexOf(props, globals[i])) { + continue; + } + props.push(globals[i]); + } + + return props; +}; + +/** + * Allow the given `arr` of globals. + * + * @param {Array} arr + * @return {Runner} for chaining + * @api public + * @param {Array} arr + * @return {Runner} Runner instance. + */ +Runner.prototype.globals = function(arr) { + if (!arguments.length) { + return this._globals; + } + debug('globals %j', arr); + this._globals = this._globals.concat(arr); + return this; +}; + +/** + * Check for global variable leaks. + * + * @api private + */ +Runner.prototype.checkGlobals = function(test) { + if (this.ignoreLeaks) { + return; + } + var ok = this._globals; + + var globals = this.globalProps(); + var leaks; + + if (test) { + ok = ok.concat(test._allowedGlobals || []); + } + + if (this.prevGlobalsLength === globals.length) { + return; + } + this.prevGlobalsLength = globals.length; + + leaks = filterLeaks(ok, globals); + this._globals = this._globals.concat(leaks); + + if (leaks.length > 1) { + this.fail(test, new Error('global leaks detected: ' + leaks.join(', ') + '')); + } else if (leaks.length) { + this.fail(test, new Error('global leak detected: ' + leaks[0])); + } +}; + +/** + * Fail the given `test`. + * + * @api private + * @param {Test} test + * @param {Error} err + */ +Runner.prototype.fail = function(test, err) { + ++this.failures; + test.state = 'failed'; + + if (!(err instanceof Error || err && typeof err.message === 'string')) { + err = new Error('the ' + type(err) + ' ' + stringify(err) + ' was thrown, throw an Error :)'); + } + + err.stack = (this.fullStackTrace || !err.stack) + ? err.stack + : stackFilter(err.stack); + + this.emit('fail', test, err); +}; + +/** + * Fail the given `hook` with `err`. + * + * Hook failures work in the following pattern: + * - If bail, then exit + * - Failed `before` hook skips all tests in a suite and subsuites, + * but jumps to corresponding `after` hook + * - Failed `before each` hook skips remaining tests in a + * suite and jumps to corresponding `after each` hook, + * which is run only once + * - Failed `after` hook does not alter + * execution order + * - Failed `after each` hook skips remaining tests in a + * suite and subsuites, but executes other `after each` + * hooks + * + * @api private + * @param {Hook} hook + * @param {Error} err + */ +Runner.prototype.failHook = function(hook, err) { + if (hook.ctx && hook.ctx.currentTest) { + hook.originalTitle = hook.originalTitle || hook.title; + hook.title = hook.originalTitle + ' for "' + hook.ctx.currentTest.title + '"'; + } + + this.fail(hook, err); + if (this.suite.bail()) { + this.emit('end'); + } +}; + +/** + * Run hook `name` callbacks and then invoke `fn()`. + * + * @api private + * @param {string} name + * @param {Function} fn + */ + +Runner.prototype.hook = function(name, fn) { + var suite = this.suite; + var hooks = suite['_' + name]; + var self = this; + + function next(i) { + var hook = hooks[i]; + if (!hook) { + return fn(); + } + self.currentRunnable = hook; + + hook.ctx.currentTest = self.test; + + self.emit('hook', hook); + + if (!hook.listeners('error').length) { + hook.on('error', function(err) { + self.failHook(hook, err); + }); + } + + hook.run(function(err) { + var testError = hook.error(); + if (testError) { + self.fail(self.test, testError); + } + if (err) { + if (err instanceof Pending) { + suite.pending = true; + } else { + self.failHook(hook, err); + + // stop executing hooks, notify callee of hook err + return fn(err); + } + } + self.emit('hook end', hook); + delete hook.ctx.currentTest; + next(++i); + }); + } + + Runner.immediately(function() { + next(0); + }); +}; + +/** + * Run hook `name` for the given array of `suites` + * in order, and callback `fn(err, errSuite)`. + * + * @api private + * @param {string} name + * @param {Array} suites + * @param {Function} fn + */ +Runner.prototype.hooks = function(name, suites, fn) { + var self = this; + var orig = this.suite; + + function next(suite) { + self.suite = suite; + + if (!suite) { + self.suite = orig; + return fn(); + } + + self.hook(name, function(err) { + if (err) { + var errSuite = self.suite; + self.suite = orig; + return fn(err, errSuite); + } + + next(suites.pop()); + }); + } + + next(suites.pop()); +}; + +/** + * Run hooks from the top level down. + * + * @param {String} name + * @param {Function} fn + * @api private + */ +Runner.prototype.hookUp = function(name, fn) { + var suites = [this.suite].concat(this.parents()).reverse(); + this.hooks(name, suites, fn); +}; + +/** + * Run hooks from the bottom up. + * + * @param {String} name + * @param {Function} fn + * @api private + */ +Runner.prototype.hookDown = function(name, fn) { + var suites = [this.suite].concat(this.parents()); + this.hooks(name, suites, fn); +}; + +/** + * Return an array of parent Suites from + * closest to furthest. + * + * @return {Array} + * @api private + */ +Runner.prototype.parents = function() { + var suite = this.suite; + var suites = []; + while (suite.parent) { + suite = suite.parent; + suites.push(suite); + } + return suites; +}; + +/** + * Run the current test and callback `fn(err)`. + * + * @param {Function} fn + * @api private + */ +Runner.prototype.runTest = function(fn) { + var self = this; + var test = this.test; + + if (this.asyncOnly) { + test.asyncOnly = true; + } + + if (this.allowUncaught) { + test.allowUncaught = true; + return test.run(fn); + } + try { + test.on('error', function(err) { + self.fail(test, err); + }); + test.run(fn); + } catch (err) { + fn(err); + } +}; + +/** + * Run tests in the given `suite` and invoke the callback `fn()` when complete. + * + * @api private + * @param {Suite} suite + * @param {Function} fn + */ +Runner.prototype.runTests = function(suite, fn) { + var self = this; + var tests = suite.tests.slice(); + var test; + + function hookErr(_, errSuite, after) { + // before/after Each hook for errSuite failed: + var orig = self.suite; + + // for failed 'after each' hook start from errSuite parent, + // otherwise start from errSuite itself + self.suite = after ? errSuite.parent : errSuite; + + if (self.suite) { + // call hookUp afterEach + self.hookUp('afterEach', function(err2, errSuite2) { + self.suite = orig; + // some hooks may fail even now + if (err2) { + return hookErr(err2, errSuite2, true); + } + // report error suite + fn(errSuite); + }); + } else { + // there is no need calling other 'after each' hooks + self.suite = orig; + fn(errSuite); + } + } + + function next(err, errSuite) { + // if we bail after first err + if (self.failures && suite._bail) { + return fn(); + } + + if (self._abort) { + return fn(); + } + + if (err) { + return hookErr(err, errSuite, true); + } + + // next test + test = tests.shift(); + + // all done + if (!test) { + return fn(); + } + + // grep + var match = self._grep.test(test.fullTitle()); + if (self._invert) { + match = !match; + } + if (!match) { + // Run immediately only if we have defined a grep. When we + // define a grep — It can cause maximum callstack error if + // the grep is doing a large recursive loop by neglecting + // all tests. The run immediately function also comes with + // a performance cost. So we don't want to run immediately + // if we run the whole test suite, because running the whole + // test suite don't do any immediate recursive loops. Thus, + // allowing a JS runtime to breathe. + if (self._grep !== self._defaultGrep) { + Runner.immediately(next); + } else { + next(); + } + return; + } + + function parentPending(suite) { + return suite.pending || (suite.parent && parentPending(suite.parent)); + } + + // pending + if (test.pending || parentPending(test.parent)) { + self.emit('pending', test); + self.emit('test end', test); + return next(); + } + + // execute test and hook(s) + self.emit('test', self.test = test); + self.hookDown('beforeEach', function(err, errSuite) { + if (suite.pending) { + self.emit('pending', test); + self.emit('test end', test); + return next(); + } + if (err) { + return hookErr(err, errSuite, false); + } + self.currentRunnable = self.test; + self.runTest(function(err) { + test = self.test; + if (err) { + var retry = test.currentRetry(); + if (err instanceof Pending) { + test.pending = true; + self.emit('pending', test); + } else if (retry < test.retries()) { + var clonedTest = test.clone(); + clonedTest.currentRetry(retry + 1); + tests.unshift(clonedTest); + + // Early return + hook trigger so that it doesn't + // increment the count wrong + return self.hookUp('afterEach', next); + } else { + self.fail(test, err); + } + self.emit('test end', test); + + if (err instanceof Pending) { + return next(); + } + + return self.hookUp('afterEach', next); + } + + test.state = 'passed'; + self.emit('pass', test); + self.emit('test end', test); + self.hookUp('afterEach', next); + }); + }); + } + + this.next = next; + this.hookErr = hookErr; + next(); +}; + +/** + * Run the given `suite` and invoke the callback `fn()` when complete. + * + * @api private + * @param {Suite} suite + * @param {Function} fn + */ +Runner.prototype.runSuite = function(suite, fn) { + var i = 0; + var self = this; + var total = this.grepTotal(suite); + var afterAllHookCalled = false; + + debug('run suite %s', suite.fullTitle()); + + if (!total || (self.failures && suite._bail)) { + return fn(); + } + + this.emit('suite', this.suite = suite); + + function next(errSuite) { + if (errSuite) { + // current suite failed on a hook from errSuite + if (errSuite === suite) { + // if errSuite is current suite + // continue to the next sibling suite + return done(); + } + // errSuite is among the parents of current suite + // stop execution of errSuite and all sub-suites + return done(errSuite); + } + + if (self._abort) { + return done(); + } + + var curr = suite.suites[i++]; + if (!curr) { + return done(); + } + + // Avoid grep neglecting large number of tests causing a + // huge recursive loop and thus a maximum call stack error. + // See comment in `this.runTests()` for more information. + if (self._grep !== self._defaultGrep) { + Runner.immediately(function() { + self.runSuite(curr, next); + }); + } else { + self.runSuite(curr, next); + } + } + + function done(errSuite) { + self.suite = suite; + self.nextSuite = next; + + if (afterAllHookCalled) { + fn(errSuite); + } else { + // mark that the afterAll block has been called once + // and so can be skipped if there is an error in it. + afterAllHookCalled = true; + + // remove reference to test + delete self.test; + + self.hook('afterAll', function() { + self.emit('suite end', suite); + fn(errSuite); + }); + } + } + + this.nextSuite = next; + + this.hook('beforeAll', function(err) { + if (err) { + return done(); + } + self.runTests(suite, next); + }); +}; + +/** + * Handle uncaught exceptions. + * + * @param {Error} err + * @api private + */ +Runner.prototype.uncaught = function(err) { + if (err) { + debug('uncaught exception %s', err !== function() { + return this; + }.call(err) ? err : (err.message || err)); + } else { + debug('uncaught undefined exception'); + err = undefinedError(); + } + err.uncaught = true; + + var runnable = this.currentRunnable; + + if (!runnable) { + runnable = new Runnable('Uncaught error outside test suite'); + runnable.parent = this.suite; + + if (this.started) { + this.fail(runnable, err); + } else { + // Can't recover from this failure + this.emit('start'); + this.fail(runnable, err); + this.emit('end'); + } + + return; + } + + runnable.clearTimeout(); + + // Ignore errors if complete + if (runnable.state) { + return; + } + this.fail(runnable, err); + + // recover from test + if (runnable.type === 'test') { + this.emit('test end', runnable); + this.hookUp('afterEach', this.next); + return; + } + + // recover from hooks + if (runnable.type === 'hook') { + var errSuite = this.suite; + // if hook failure is in afterEach block + if (runnable.fullTitle().indexOf('after each') > -1) { + return this.hookErr(err, errSuite, true); + } + // if hook failure is in beforeEach block + if (runnable.fullTitle().indexOf('before each') > -1) { + return this.hookErr(err, errSuite, false); + } + // if hook failure is in after or before blocks + return this.nextSuite(errSuite); + } + + // bail + this.emit('end'); +}; + +/** + * Cleans up the references to all the deferred functions + * (before/after/beforeEach/afterEach) and tests of a Suite. + * These must be deleted otherwise a memory leak can happen, + * as those functions may reference variables from closures, + * thus those variables can never be garbage collected as long + * as the deferred functions exist. + * + * @param {Suite} suite + */ +function cleanSuiteReferences(suite) { + function cleanArrReferences(arr) { + for (var i = 0; i < arr.length; i++) { + delete arr[i].fn; + } + } + + if (isArray(suite._beforeAll)) { + cleanArrReferences(suite._beforeAll); + } + + if (isArray(suite._beforeEach)) { + cleanArrReferences(suite._beforeEach); + } + + if (isArray(suite._afterAll)) { + cleanArrReferences(suite._afterAll); + } + + if (isArray(suite._afterEach)) { + cleanArrReferences(suite._afterEach); + } + + for (var i = 0; i < suite.tests.length; i++) { + delete suite.tests[i].fn; + } +} + +/** + * Run the root suite and invoke `fn(failures)` + * on completion. + * + * @param {Function} fn + * @return {Runner} for chaining + * @api public + * @param {Function} fn + * @return {Runner} Runner instance. + */ +Runner.prototype.run = function(fn) { + var self = this; + var rootSuite = this.suite; + + fn = fn || function() {}; + + function uncaught(err) { + self.uncaught(err); + } + + function start() { + self.started = true; + self.emit('start'); + self.runSuite(rootSuite, function() { + debug('finished running'); + self.emit('end'); + }); + } + + debug('start'); + + // references cleanup to avoid memory leaks + this.on('suite end', cleanSuiteReferences); + + // callback + this.on('end', function() { + debug('end'); + process.removeListener('uncaughtException', uncaught); + fn(self.failures); + }); + + // uncaught exception + process.on('uncaughtException', uncaught); + + if (this._delay) { + // for reporters, I guess. + // might be nice to debounce some dots while we wait. + this.emit('waiting', rootSuite); + rootSuite.once('run', start); + } else { + start(); + } + + return this; +}; + +/** + * Cleanly abort execution. + * + * @api public + * @return {Runner} Runner instance. + */ +Runner.prototype.abort = function() { + debug('aborting'); + this._abort = true; + + return this; +}; + +/** + * Filter leaks with the given globals flagged as `ok`. + * + * @api private + * @param {Array} ok + * @param {Array} globals + * @return {Array} + */ +function filterLeaks(ok, globals) { + return filter(globals, function(key) { + // Firefox and Chrome exposes iframes as index inside the window object + if (/^d+/.test(key)) { + return false; + } + + // in firefox + // if runner runs in an iframe, this iframe's window.getInterface method not init at first + // it is assigned in some seconds + if (global.navigator && (/^getInterface/).test(key)) { + return false; + } + + // an iframe could be approached by window[iframeIndex] + // in ie6,7,8 and opera, iframeIndex is enumerable, this could cause leak + if (global.navigator && (/^\d+/).test(key)) { + return false; + } + + // Opera and IE expose global variables for HTML element IDs (issue #243) + if (/^mocha-/.test(key)) { + return false; + } + + var matched = filter(ok, function(ok) { + if (~ok.indexOf('*')) { + return key.indexOf(ok.split('*')[0]) === 0; + } + return key === ok; + }); + return !matched.length && (!global.navigator || key !== 'onerror'); + }); +} + +/** + * Array of globals dependent on the environment. + * + * @return {Array} + * @api private + */ +function extraGlobals() { + if (typeof process === 'object' && typeof process.version === 'string') { + var parts = process.version.split('.'); + var nodeVersion = utils.reduce(parts, function(a, v) { + return a << 8 | v; + }); + + // 'errno' was renamed to process._errno in v0.9.11. + + if (nodeVersion < 0x00090B) { + return ['errno']; + } + } + + return []; +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./pending":16,"./runnable":35,"./utils":39,"_process":51,"debug":2,"events":3}],37:[function(require,module,exports){ +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter; +var Hook = require('./hook'); +var utils = require('./utils'); +var inherits = utils.inherits; +var debug = require('debug')('mocha:suite'); +var milliseconds = require('./ms'); + +/** + * Expose `Suite`. + */ + +exports = module.exports = Suite; + +/** + * Create a new `Suite` with the given `title` and parent `Suite`. When a suite + * with the same title is already present, that suite is returned to provide + * nicer reporter and more flexible meta-testing. + * + * @api public + * @param {Suite} parent + * @param {string} title + * @return {Suite} + */ +exports.create = function(parent, title) { + var suite = new Suite(title, parent.ctx); + suite.parent = parent; + if (parent.pending) { + suite.pending = true; + } + title = suite.fullTitle(); + parent.addSuite(suite); + return suite; +}; + +/** + * Initialize a new `Suite` with the given `title` and `ctx`. + * + * @api private + * @param {string} title + * @param {Context} parentContext + */ +function Suite(title, parentContext) { + this.title = title; + function Context() {} + Context.prototype = parentContext; + this.ctx = new Context(); + this.suites = []; + this.tests = []; + this.pending = false; + this._beforeEach = []; + this._beforeAll = []; + this._afterEach = []; + this._afterAll = []; + this.root = !title; + this._timeout = 2000; + this._enableTimeouts = true; + this._slow = 75; + this._bail = false; + this._retries = -1; + this.delayed = false; +} + +/** + * Inherit from `EventEmitter.prototype`. + */ +inherits(Suite, EventEmitter); + +/** + * Return a clone of this `Suite`. + * + * @api private + * @return {Suite} + */ +Suite.prototype.clone = function() { + var suite = new Suite(this.title); + debug('clone'); + suite.ctx = this.ctx; + suite.timeout(this.timeout()); + suite.retries(this.retries()); + suite.enableTimeouts(this.enableTimeouts()); + suite.slow(this.slow()); + suite.bail(this.bail()); + return suite; +}; + +/** + * Set timeout `ms` or short-hand such as "2s". + * + * @api private + * @param {number|string} ms + * @return {Suite|number} for chaining + */ +Suite.prototype.timeout = function(ms) { + if (!arguments.length) { + return this._timeout; + } + if (ms.toString() === '0') { + this._enableTimeouts = false; + } + if (typeof ms === 'string') { + ms = milliseconds(ms); + } + debug('timeout %d', ms); + this._timeout = parseInt(ms, 10); + return this; +}; + +/** + * Set number of times to retry a failed test. + * + * @api private + * @param {number|string} n + * @return {Suite|number} for chaining + */ +Suite.prototype.retries = function(n) { + if (!arguments.length) { + return this._retries; + } + debug('retries %d', n); + this._retries = parseInt(n, 10) || 0; + return this; +}; + +/** + * Set timeout to `enabled`. + * + * @api private + * @param {boolean} enabled + * @return {Suite|boolean} self or enabled + */ +Suite.prototype.enableTimeouts = function(enabled) { + if (!arguments.length) { + return this._enableTimeouts; + } + debug('enableTimeouts %s', enabled); + this._enableTimeouts = enabled; + return this; +}; + +/** + * Set slow `ms` or short-hand such as "2s". + * + * @api private + * @param {number|string} ms + * @return {Suite|number} for chaining + */ +Suite.prototype.slow = function(ms) { + if (!arguments.length) { + return this._slow; + } + if (typeof ms === 'string') { + ms = milliseconds(ms); + } + debug('slow %d', ms); + this._slow = ms; + return this; +}; + +/** + * Sets whether to bail after first error. + * + * @api private + * @param {boolean} bail + * @return {Suite|number} for chaining + */ +Suite.prototype.bail = function(bail) { + if (!arguments.length) { + return this._bail; + } + debug('bail %s', bail); + this._bail = bail; + return this; +}; + +/** + * Run `fn(test[, done])` before running tests. + * + * @api private + * @param {string} title + * @param {Function} fn + * @return {Suite} for chaining + */ +Suite.prototype.beforeAll = function(title, fn) { + if (this.pending) { + return this; + } + if (typeof title === 'function') { + fn = title; + title = fn.name; + } + title = '"before all" hook' + (title ? ': ' + title : ''); + + var hook = new Hook(title, fn); + hook.parent = this; + hook.timeout(this.timeout()); + hook.retries(this.retries()); + hook.enableTimeouts(this.enableTimeouts()); + hook.slow(this.slow()); + hook.ctx = this.ctx; + this._beforeAll.push(hook); + this.emit('beforeAll', hook); + return this; +}; + +/** + * Run `fn(test[, done])` after running tests. + * + * @api private + * @param {string} title + * @param {Function} fn + * @return {Suite} for chaining + */ +Suite.prototype.afterAll = function(title, fn) { + if (this.pending) { + return this; + } + if (typeof title === 'function') { + fn = title; + title = fn.name; + } + title = '"after all" hook' + (title ? ': ' + title : ''); + + var hook = new Hook(title, fn); + hook.parent = this; + hook.timeout(this.timeout()); + hook.retries(this.retries()); + hook.enableTimeouts(this.enableTimeouts()); + hook.slow(this.slow()); + hook.ctx = this.ctx; + this._afterAll.push(hook); + this.emit('afterAll', hook); + return this; +}; + +/** + * Run `fn(test[, done])` before each test case. + * + * @api private + * @param {string} title + * @param {Function} fn + * @return {Suite} for chaining + */ +Suite.prototype.beforeEach = function(title, fn) { + if (this.pending) { + return this; + } + if (typeof title === 'function') { + fn = title; + title = fn.name; + } + title = '"before each" hook' + (title ? ': ' + title : ''); + + var hook = new Hook(title, fn); + hook.parent = this; + hook.timeout(this.timeout()); + hook.retries(this.retries()); + hook.enableTimeouts(this.enableTimeouts()); + hook.slow(this.slow()); + hook.ctx = this.ctx; + this._beforeEach.push(hook); + this.emit('beforeEach', hook); + return this; +}; + +/** + * Run `fn(test[, done])` after each test case. + * + * @api private + * @param {string} title + * @param {Function} fn + * @return {Suite} for chaining + */ +Suite.prototype.afterEach = function(title, fn) { + if (this.pending) { + return this; + } + if (typeof title === 'function') { + fn = title; + title = fn.name; + } + title = '"after each" hook' + (title ? ': ' + title : ''); + + var hook = new Hook(title, fn); + hook.parent = this; + hook.timeout(this.timeout()); + hook.retries(this.retries()); + hook.enableTimeouts(this.enableTimeouts()); + hook.slow(this.slow()); + hook.ctx = this.ctx; + this._afterEach.push(hook); + this.emit('afterEach', hook); + return this; +}; + +/** + * Add a test `suite`. + * + * @api private + * @param {Suite} suite + * @return {Suite} for chaining + */ +Suite.prototype.addSuite = function(suite) { + suite.parent = this; + suite.timeout(this.timeout()); + suite.retries(this.retries()); + suite.enableTimeouts(this.enableTimeouts()); + suite.slow(this.slow()); + suite.bail(this.bail()); + this.suites.push(suite); + this.emit('suite', suite); + return this; +}; + +/** + * Add a `test` to this suite. + * + * @api private + * @param {Test} test + * @return {Suite} for chaining + */ +Suite.prototype.addTest = function(test) { + test.parent = this; + test.timeout(this.timeout()); + test.retries(this.retries()); + test.enableTimeouts(this.enableTimeouts()); + test.slow(this.slow()); + test.ctx = this.ctx; + this.tests.push(test); + this.emit('test', test); + return this; +}; + +/** + * Return the full title generated by recursively concatenating the parent's + * full title. + * + * @api public + * @return {string} + */ +Suite.prototype.fullTitle = function() { + if (this.parent) { + var full = this.parent.fullTitle(); + if (full) { + return full + ' ' + this.title; + } + } + return this.title; +}; + +/** + * Return the total number of tests. + * + * @api public + * @return {number} + */ +Suite.prototype.total = function() { + return utils.reduce(this.suites, function(sum, suite) { + return sum + suite.total(); + }, 0) + this.tests.length; +}; + +/** + * Iterates through each suite recursively to find all tests. Applies a + * function in the format `fn(test)`. + * + * @api private + * @param {Function} fn + * @return {Suite} + */ +Suite.prototype.eachTest = function(fn) { + utils.forEach(this.tests, fn); + utils.forEach(this.suites, function(suite) { + suite.eachTest(fn); + }); + return this; +}; + +/** + * This will run the root suite if we happen to be running in delayed mode. + */ +Suite.prototype.run = function run() { + if (this.root) { + this.emit('run'); + } +}; + +},{"./hook":7,"./ms":15,"./utils":39,"debug":2,"events":3}],38:[function(require,module,exports){ +/** + * Module dependencies. + */ + +var Runnable = require('./runnable'); +var inherits = require('./utils').inherits; + +/** + * Expose `Test`. + */ + +module.exports = Test; + +/** + * Initialize a new `Test` with the given `title` and callback `fn`. + * + * @api private + * @param {String} title + * @param {Function} fn + */ +function Test(title, fn) { + Runnable.call(this, title, fn); + this.pending = !fn; + this.type = 'test'; + this.body = (fn || '').toString(); +} + +/** + * Inherit from `Runnable.prototype`. + */ +inherits(Test, Runnable); + +Test.prototype.clone = function() { + var test = new Test(this.title, this.fn); + test.timeout(this.timeout()); + test.slow(this.slow()); + test.enableTimeouts(this.enableTimeouts()); + test.retries(this.retries()); + test.currentRetry(this.currentRetry()); + test.globals(this.globals()); + test.parent = this.parent; + test.file = this.file; + test.ctx = this.ctx; + return test; +}; + +},{"./runnable":35,"./utils":39}],39:[function(require,module,exports){ +(function (process,Buffer){ +/* eslint-env browser */ + +/** + * Module dependencies. + */ + +var basename = require('path').basename; +var debug = require('debug')('mocha:watch'); +var exists = require('fs').existsSync || require('path').existsSync; +var glob = require('glob'); +var join = require('path').join; +var readdirSync = require('fs').readdirSync; +var statSync = require('fs').statSync; +var watchFile = require('fs').watchFile; + +/** + * Ignored directories. + */ + +var ignore = ['node_modules', '.git']; + +exports.inherits = require('util').inherits; + +/** + * Escape special characters in the given string of html. + * + * @api private + * @param {string} html + * @return {string} + */ +exports.escape = function(html) { + return String(html) + .replace(/&/g, '&') + .replace(/"/g, '"') + .replace(//g, '>'); +}; + +/** + * Array#forEach (<=IE8) + * + * @api private + * @param {Array} arr + * @param {Function} fn + * @param {Object} scope + */ +exports.forEach = function(arr, fn, scope) { + for (var i = 0, l = arr.length; i < l; i++) { + fn.call(scope, arr[i], i); + } +}; + +/** + * Test if the given obj is type of string. + * + * @api private + * @param {Object} obj + * @return {boolean} + */ +exports.isString = function(obj) { + return typeof obj === 'string'; +}; + +/** + * Array#map (<=IE8) + * + * @api private + * @param {Array} arr + * @param {Function} fn + * @param {Object} scope + * @return {Array} + */ +exports.map = function(arr, fn, scope) { + var result = []; + for (var i = 0, l = arr.length; i < l; i++) { + result.push(fn.call(scope, arr[i], i, arr)); + } + return result; +}; + +/** + * Array#indexOf (<=IE8) + * + * @api private + * @param {Array} arr + * @param {Object} obj to find index of + * @param {number} start + * @return {number} + */ +exports.indexOf = function(arr, obj, start) { + for (var i = start || 0, l = arr.length; i < l; i++) { + if (arr[i] === obj) { + return i; + } + } + return -1; +}; + +/** + * Array#reduce (<=IE8) + * + * @api private + * @param {Array} arr + * @param {Function} fn + * @param {Object} val Initial value. + * @return {*} + */ +exports.reduce = function(arr, fn, val) { + var rval = val; + + for (var i = 0, l = arr.length; i < l; i++) { + rval = fn(rval, arr[i], i, arr); + } + + return rval; +}; + +/** + * Array#filter (<=IE8) + * + * @api private + * @param {Array} arr + * @param {Function} fn + * @return {Array} + */ +exports.filter = function(arr, fn) { + var ret = []; + + for (var i = 0, l = arr.length; i < l; i++) { + var val = arr[i]; + if (fn(val, i, arr)) { + ret.push(val); + } + } + + return ret; +}; + +/** + * Object.keys (<=IE8) + * + * @api private + * @param {Object} obj + * @return {Array} keys + */ +exports.keys = typeof Object.keys === 'function' ? Object.keys : function(obj) { + var keys = []; + var has = Object.prototype.hasOwnProperty; // for `window` on <=IE8 + + for (var key in obj) { + if (has.call(obj, key)) { + keys.push(key); + } + } + + return keys; +}; + +/** + * Watch the given `files` for changes + * and invoke `fn(file)` on modification. + * + * @api private + * @param {Array} files + * @param {Function} fn + */ +exports.watch = function(files, fn) { + var options = { interval: 100 }; + files.forEach(function(file) { + debug('file %s', file); + watchFile(file, options, function(curr, prev) { + if (prev.mtime < curr.mtime) { + fn(file); + } + }); + }); +}; + +/** + * Array.isArray (<=IE8) + * + * @api private + * @param {Object} obj + * @return {Boolean} + */ +var isArray = typeof Array.isArray === 'function' ? Array.isArray : function(obj) { + return Object.prototype.toString.call(obj) === '[object Array]'; +}; + +exports.isArray = isArray; + +/** + * Buffer.prototype.toJSON polyfill. + * + * @type {Function} + */ +if (typeof Buffer !== 'undefined' && Buffer.prototype) { + Buffer.prototype.toJSON = Buffer.prototype.toJSON || function() { + return Array.prototype.slice.call(this, 0); + }; +} + +/** + * Ignored files. + * + * @api private + * @param {string} path + * @return {boolean} + */ +function ignored(path) { + return !~ignore.indexOf(path); +} + +/** + * Lookup files in the given `dir`. + * + * @api private + * @param {string} dir + * @param {string[]} [ext=['.js']] + * @param {Array} [ret=[]] + * @return {Array} + */ +exports.files = function(dir, ext, ret) { + ret = ret || []; + ext = ext || ['js']; + + var re = new RegExp('\\.(' + ext.join('|') + ')$'); + + readdirSync(dir) + .filter(ignored) + .forEach(function(path) { + path = join(dir, path); + if (statSync(path).isDirectory()) { + exports.files(path, ext, ret); + } else if (path.match(re)) { + ret.push(path); + } + }); + + return ret; +}; + +/** + * Compute a slug from the given `str`. + * + * @api private + * @param {string} str + * @return {string} + */ +exports.slug = function(str) { + return str + .toLowerCase() + .replace(/ +/g, '-') + .replace(/[^-\w]/g, ''); +}; + +/** + * Strip the function definition from `str`, and re-indent for pre whitespace. + * + * @param {string} str + * @return {string} + */ +exports.clean = function(str) { + str = str + .replace(/\r\n?|[\n\u2028\u2029]/g, '\n').replace(/^\uFEFF/, '') + .replace(/^function *\(.*\)\s*\{|\(.*\) *=> *\{?/, '') + .replace(/\s+\}$/, ''); + + var spaces = str.match(/^\n?( *)/)[1].length; + var tabs = str.match(/^\n?(\t*)/)[1].length; + var re = new RegExp('^\n?' + (tabs ? '\t' : ' ') + '{' + (tabs ? tabs : spaces) + '}', 'gm'); + + str = str.replace(re, ''); + + return exports.trim(str); +}; + +/** + * Trim the given `str`. + * + * @api private + * @param {string} str + * @return {string} + */ +exports.trim = function(str) { + return str.replace(/^\s+|\s+$/g, ''); +}; + +/** + * Parse the given `qs`. + * + * @api private + * @param {string} qs + * @return {Object} + */ +exports.parseQuery = function(qs) { + return exports.reduce(qs.replace('?', '').split('&'), function(obj, pair) { + var i = pair.indexOf('='); + var key = pair.slice(0, i); + var val = pair.slice(++i); + + obj[key] = decodeURIComponent(val); + return obj; + }, {}); +}; + +/** + * Highlight the given string of `js`. + * + * @api private + * @param {string} js + * @return {string} + */ +function highlight(js) { + return js + .replace(//g, '>') + .replace(/\/\/(.*)/gm, '//$1') + .replace(/('.*?')/gm, '$1') + .replace(/(\d+\.\d+)/gm, '$1') + .replace(/(\d+)/gm, '$1') + .replace(/\bnew[ \t]+(\w+)/gm, 'new $1') + .replace(/\b(function|new|throw|return|var|if|else)\b/gm, '$1'); +} + +/** + * Highlight the contents of tag `name`. + * + * @api private + * @param {string} name + */ +exports.highlightTags = function(name) { + var code = document.getElementById('mocha').getElementsByTagName(name); + for (var i = 0, len = code.length; i < len; ++i) { + code[i].innerHTML = highlight(code[i].innerHTML); + } +}; + +/** + * If a value could have properties, and has none, this function is called, + * which returns a string representation of the empty value. + * + * Functions w/ no properties return `'[Function]'` + * Arrays w/ length === 0 return `'[]'` + * Objects w/ no properties return `'{}'` + * All else: return result of `value.toString()` + * + * @api private + * @param {*} value The value to inspect. + * @param {string} [type] The type of the value, if known. + * @returns {string} + */ +function emptyRepresentation(value, type) { + type = type || exports.type(value); + + switch (type) { + case 'function': + return '[Function]'; + case 'object': + return '{}'; + case 'array': + return '[]'; + default: + return value.toString(); + } +} + +/** + * Takes some variable and asks `Object.prototype.toString()` what it thinks it + * is. + * + * @api private + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString + * @param {*} value The value to test. + * @returns {string} + * @example + * type({}) // 'object' + * type([]) // 'array' + * type(1) // 'number' + * type(false) // 'boolean' + * type(Infinity) // 'number' + * type(null) // 'null' + * type(new Date()) // 'date' + * type(/foo/) // 'regexp' + * type('type') // 'string' + * type(global) // 'global' + */ +exports.type = function type(value) { + if (value === undefined) { + return 'undefined'; + } else if (value === null) { + return 'null'; + } else if (typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) { + return 'buffer'; + } + return Object.prototype.toString.call(value) + .replace(/^\[.+\s(.+?)\]$/, '$1') + .toLowerCase(); +}; + +/** + * Stringify `value`. Different behavior depending on type of value: + * + * - If `value` is undefined or null, return `'[undefined]'` or `'[null]'`, respectively. + * - If `value` is not an object, function or array, return result of `value.toString()` wrapped in double-quotes. + * - If `value` is an *empty* object, function, or array, return result of function + * {@link emptyRepresentation}. + * - If `value` has properties, call {@link exports.canonicalize} on it, then return result of + * JSON.stringify(). + * + * @api private + * @see exports.type + * @param {*} value + * @return {string} + */ +exports.stringify = function(value) { + var type = exports.type(value); + + if (!~exports.indexOf(['object', 'array', 'function'], type)) { + if (type !== 'buffer') { + return jsonStringify(value); + } + var json = value.toJSON(); + // Based on the toJSON result + return jsonStringify(json.data && json.type ? json.data : json, 2) + .replace(/,(\n|$)/g, '$1'); + } + + for (var prop in value) { + if (Object.prototype.hasOwnProperty.call(value, prop)) { + return jsonStringify(exports.canonicalize(value), 2).replace(/,(\n|$)/g, '$1'); + } + } + + return emptyRepresentation(value, type); +}; + +/** + * like JSON.stringify but more sense. + * + * @api private + * @param {Object} object + * @param {number=} spaces + * @param {number=} depth + * @returns {*} + */ +function jsonStringify(object, spaces, depth) { + if (typeof spaces === 'undefined') { + // primitive types + return _stringify(object); + } + + depth = depth || 1; + var space = spaces * depth; + var str = isArray(object) ? '[' : '{'; + var end = isArray(object) ? ']' : '}'; + var length = object.length || exports.keys(object).length; + // `.repeat()` polyfill + function repeat(s, n) { + return new Array(n).join(s); + } + + function _stringify(val) { + switch (exports.type(val)) { + case 'null': + case 'undefined': + val = '[' + val + ']'; + break; + case 'array': + case 'object': + val = jsonStringify(val, spaces, depth + 1); + break; + case 'boolean': + case 'regexp': + case 'number': + val = val === 0 && (1 / val) === -Infinity // `-0` + ? '-0' + : val.toString(); + break; + case 'date': + var sDate = isNaN(val.getTime()) // Invalid date + ? val.toString() + : val.toISOString(); + val = '[Date: ' + sDate + ']'; + break; + case 'buffer': + var json = val.toJSON(); + // Based on the toJSON result + json = json.data && json.type ? json.data : json; + val = '[Buffer: ' + jsonStringify(json, 2, depth + 1) + ']'; + break; + default: + val = (val === '[Function]' || val === '[Circular]') + ? val + : JSON.stringify(val); // string + } + return val; + } + + for (var i in object) { + if (!object.hasOwnProperty(i)) { + continue; // not my business + } + --length; + str += '\n ' + repeat(' ', space) + + (isArray(object) ? '' : '"' + i + '": ') // key + + _stringify(object[i]) // value + + (length ? ',' : ''); // comma + } + + return str + // [], {} + + (str.length !== 1 ? '\n' + repeat(' ', --space) + end : end); +} + +/** + * Test if a value is a buffer. + * + * @api private + * @param {*} value The value to test. + * @return {boolean} True if `value` is a buffer, otherwise false + */ +exports.isBuffer = function(value) { + return typeof Buffer !== 'undefined' && Buffer.isBuffer(value); +}; + +/** + * Return a new Thing that has the keys in sorted order. Recursive. + * + * If the Thing... + * - has already been seen, return string `'[Circular]'` + * - is `undefined`, return string `'[undefined]'` + * - is `null`, return value `null` + * - is some other primitive, return the value + * - is not a primitive or an `Array`, `Object`, or `Function`, return the value of the Thing's `toString()` method + * - is a non-empty `Array`, `Object`, or `Function`, return the result of calling this function again. + * - is an empty `Array`, `Object`, or `Function`, return the result of calling `emptyRepresentation()` + * + * @api private + * @see {@link exports.stringify} + * @param {*} value Thing to inspect. May or may not have properties. + * @param {Array} [stack=[]] Stack of seen values + * @return {(Object|Array|Function|string|undefined)} + */ +exports.canonicalize = function(value, stack) { + var canonicalizedObj; + /* eslint-disable no-unused-vars */ + var prop; + /* eslint-enable no-unused-vars */ + var type = exports.type(value); + function withStack(value, fn) { + stack.push(value); + fn(); + stack.pop(); + } + + stack = stack || []; + + if (exports.indexOf(stack, value) !== -1) { + return '[Circular]'; + } + + switch (type) { + case 'undefined': + case 'buffer': + case 'null': + canonicalizedObj = value; + break; + case 'array': + withStack(value, function() { + canonicalizedObj = exports.map(value, function(item) { + return exports.canonicalize(item, stack); + }); + }); + break; + case 'function': + /* eslint-disable guard-for-in */ + for (prop in value) { + canonicalizedObj = {}; + break; + } + /* eslint-enable guard-for-in */ + if (!canonicalizedObj) { + canonicalizedObj = emptyRepresentation(value, type); + break; + } + /* falls through */ + case 'object': + canonicalizedObj = canonicalizedObj || {}; + withStack(value, function() { + exports.forEach(exports.keys(value).sort(), function(key) { + canonicalizedObj[key] = exports.canonicalize(value[key], stack); + }); + }); + break; + case 'date': + case 'number': + case 'regexp': + case 'boolean': + canonicalizedObj = value; + break; + default: + canonicalizedObj = value + ''; + } + + return canonicalizedObj; +}; + +/** + * Lookup file names at the given `path`. + * + * @api public + * @param {string} path Base path to start searching from. + * @param {string[]} extensions File extensions to look for. + * @param {boolean} recursive Whether or not to recurse into subdirectories. + * @return {string[]} An array of paths. + */ +exports.lookupFiles = function lookupFiles(path, extensions, recursive) { + var files = []; + var re = new RegExp('\\.(' + extensions.join('|') + ')$'); + + if (!exists(path)) { + if (exists(path + '.js')) { + path += '.js'; + } else { + files = glob.sync(path); + if (!files.length) { + throw new Error("cannot resolve path (or pattern) '" + path + "'"); + } + return files; + } + } + + try { + var stat = statSync(path); + if (stat.isFile()) { + return path; + } + } catch (err) { + // ignore error + return; + } + + readdirSync(path).forEach(function(file) { + file = join(path, file); + try { + var stat = statSync(file); + if (stat.isDirectory()) { + if (recursive) { + files = files.concat(lookupFiles(file, extensions, recursive)); + } + return; + } + } catch (err) { + // ignore error + return; + } + if (!stat.isFile() || !re.test(file) || basename(file)[0] === '.') { + return; + } + files.push(file); + }); + + return files; +}; + +/** + * Generate an undefined error with a message warning the user. + * + * @return {Error} + */ + +exports.undefinedError = function() { + return new Error('Caught undefined error, did you throw without specifying what?'); +}; + +/** + * Generate an undefined error if `err` is not defined. + * + * @param {Error} err + * @return {Error} + */ + +exports.getError = function(err) { + return err || exports.undefinedError(); +}; + +/** + * @summary + * This Filter based on `mocha-clean` module.(see: `github.com/rstacruz/mocha-clean`) + * @description + * When invoking this function you get a filter function that get the Error.stack as an input, + * and return a prettify output. + * (i.e: strip Mocha and internal node functions from stack trace). + * @returns {Function} + */ +exports.stackTraceFilter = function() { + // TODO: Replace with `process.browser` + var slash = '/'; + var is = typeof document === 'undefined' ? { node: true } : { browser: true }; + var cwd = is.node + ? process.cwd() + slash + : (typeof location === 'undefined' ? window.location : location).href.replace(/\/[^\/]*$/, '/'); + + function isMochaInternal(line) { + return (~line.indexOf('node_modules' + slash + 'mocha' + slash)) + || (~line.indexOf('components' + slash + 'mochajs' + slash)) + || (~line.indexOf('components' + slash + 'mocha' + slash)) + || (~line.indexOf(slash + 'mocha.js')); + } + + function isNodeInternal(line) { + return (~line.indexOf('(timers.js:')) + || (~line.indexOf('(events.js:')) + || (~line.indexOf('(node.js:')) + || (~line.indexOf('(module.js:')) + || (~line.indexOf('GeneratorFunctionPrototype.next (native)')) + || false; + } + + return function(stack) { + stack = stack.split('\n'); + + stack = exports.reduce(stack, function(list, line) { + if (isMochaInternal(line)) { + return list; + } + + if (is.node && isNodeInternal(line)) { + return list; + } + + // Clean up cwd(absolute) + list.push(line.replace(cwd, '')); + return list; + }, []); + + return stack.join('\n'); + }; +}; + +}).call(this,require('_process'),require("buffer").Buffer) +},{"_process":51,"buffer":43,"debug":2,"fs":41,"glob":41,"path":41,"util":66}],40:[function(require,module,exports){ +(function (process){ +var WritableStream = require('stream').Writable +var inherits = require('util').inherits + +module.exports = BrowserStdout + + +inherits(BrowserStdout, WritableStream) + +function BrowserStdout(opts) { + if (!(this instanceof BrowserStdout)) return new BrowserStdout(opts) + + opts = opts || {} + WritableStream.call(this, opts) + this.label = (opts.label !== undefined) ? opts.label : 'stdout' +} + +BrowserStdout.prototype._write = function(chunks, encoding, cb) { + var output = chunks.toString ? chunks.toString() : chunks + if (this.label === false) { + console.log(output) + } else { + console.log(this.label+':', output) + } + process.nextTick(cb) +} + +}).call(this,require('_process')) +},{"_process":51,"stream":63,"util":66}],41:[function(require,module,exports){ + +},{}],42:[function(require,module,exports){ +arguments[4][41][0].apply(exports,arguments) +},{"dup":41}],43:[function(require,module,exports){ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ + +var base64 = require('base64-js') +var ieee754 = require('ieee754') +var isArray = require('is-array') + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 +Buffer.poolSize = 8192 // not used by this implementation + +var rootParent = {} + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * Due to various browser bugs, sometimes the Object implementation will be used even + * when the browser supports typed arrays. + * + * Note: + * + * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * + * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property + * on objects. + * + * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. + * + * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of + * incorrect length in some situations. + + * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they + * get the Object implementation, which is slower but behaves correctly. + */ +Buffer.TYPED_ARRAY_SUPPORT = (function () { + function Bar () {} + try { + var arr = new Uint8Array(1) + arr.foo = function () { return 42 } + arr.constructor = Bar + return arr.foo() === 42 && // typed array instances can be augmented + arr.constructor === Bar && // constructor can be set + typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` + arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` + } catch (e) { + return false + } +})() + +function kMaxLength () { + return Buffer.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +/** + * Class: Buffer + * ============= + * + * The Buffer constructor returns instances of `Uint8Array` that are augmented + * with function properties for all the node `Buffer` API functions. We use + * `Uint8Array` so that square bracket notation works as expected -- it returns + * a single octet. + * + * By augmenting the instances, we can avoid modifying the `Uint8Array` + * prototype. + */ +function Buffer (arg) { + if (!(this instanceof Buffer)) { + // Avoid going through an ArgumentsAdaptorTrampoline in the common case. + if (arguments.length > 1) return new Buffer(arg, arguments[1]) + return new Buffer(arg) + } + + this.length = 0 + this.parent = undefined + + // Common case. + if (typeof arg === 'number') { + return fromNumber(this, arg) + } + + // Slightly less common case. + if (typeof arg === 'string') { + return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8') + } + + // Unusual. + return fromObject(this, arg) +} + +function fromNumber (that, length) { + that = allocate(that, length < 0 ? 0 : checked(length) | 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < length; i++) { + that[i] = 0 + } + } + return that +} + +function fromString (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8' + + // Assumption: byteLength() return value is always < kMaxLength. + var length = byteLength(string, encoding) | 0 + that = allocate(that, length) + + that.write(string, encoding) + return that +} + +function fromObject (that, object) { + if (Buffer.isBuffer(object)) return fromBuffer(that, object) + + if (isArray(object)) return fromArray(that, object) + + if (object == null) { + throw new TypeError('must start with number, buffer, array or string') + } + + if (typeof ArrayBuffer !== 'undefined') { + if (object.buffer instanceof ArrayBuffer) { + return fromTypedArray(that, object) + } + if (object instanceof ArrayBuffer) { + return fromArrayBuffer(that, object) + } + } + + if (object.length) return fromArrayLike(that, object) + + return fromJsonObject(that, object) +} + +function fromBuffer (that, buffer) { + var length = checked(buffer.length) | 0 + that = allocate(that, length) + buffer.copy(that, 0, 0, length) + return that +} + +function fromArray (that, array) { + var length = checked(array.length) | 0 + that = allocate(that, length) + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +// Duplicate of fromArray() to keep fromArray() monomorphic. +function fromTypedArray (that, array) { + var length = checked(array.length) | 0 + that = allocate(that, length) + // Truncating the elements is probably not what people expect from typed + // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior + // of the old Buffer constructor. + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +function fromArrayBuffer (that, array) { + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + array.byteLength + that = Buffer._augment(new Uint8Array(array)) + } else { + // Fallback: Return an object instance of the Buffer class + that = fromTypedArray(that, new Uint8Array(array)) + } + return that +} + +function fromArrayLike (that, array) { + var length = checked(array.length) | 0 + that = allocate(that, length) + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object. +// Returns a zero-length buffer for inputs that don't conform to the spec. +function fromJsonObject (that, object) { + var array + var length = 0 + + if (object.type === 'Buffer' && isArray(object.data)) { + array = object.data + length = checked(array.length) | 0 + } + that = allocate(that, length) + + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +function allocate (that, length) { + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = Buffer._augment(new Uint8Array(length)) + } else { + // Fallback: Return an object instance of the Buffer class + that.length = length + that._isBuffer = true + } + + var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1 + if (fromPool) that.parent = rootParent + + return that +} + +function checked (length) { + // Note: cannot use `length < kMaxLength` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (subject, encoding) { + if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding) + + var buf = new Buffer(subject, encoding) + delete buf.parent + return buf +} + +Buffer.isBuffer = function isBuffer (b) { + return !!(b != null && b._isBuffer) +} + +Buffer.compare = function compare (a, b) { + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + var i = 0 + var len = Math.min(x, y) + while (i < len) { + if (a[i] !== b[i]) break + + ++i + } + + if (i !== len) { + x = a[i] + y = b[i] + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'binary': + case 'base64': + case 'raw': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.') + + if (list.length === 0) { + return new Buffer(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; i++) { + length += list[i].length + } + } + + var buf = new Buffer(length) + var pos = 0 + for (i = 0; i < list.length; i++) { + var item = list[i] + item.copy(buf, pos) + pos += item.length + } + return buf +} + +function byteLength (string, encoding) { + if (typeof string !== 'string') string = '' + string + + var len = string.length + if (len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'binary': + // Deprecated + case 'raw': + case 'raws': + return len + case 'utf8': + case 'utf-8': + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +// pre-set for values that may exist in the future +Buffer.prototype.length = undefined +Buffer.prototype.parent = undefined + +function slowToString (encoding, start, end) { + var loweredCase = false + + start = start | 0 + end = end === undefined || end === Infinity ? this.length : end | 0 + + if (!encoding) encoding = 'utf8' + if (start < 0) start = 0 + if (end > this.length) end = this.length + if (end <= start) return '' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'binary': + return binarySlice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toString = function toString () { + var length = this.length | 0 + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') + if (this.length > max) str += ' ... ' + } + return '' +} + +Buffer.prototype.compare = function compare (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return 0 + return Buffer.compare(this, b) +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset) { + if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff + else if (byteOffset < -0x80000000) byteOffset = -0x80000000 + byteOffset >>= 0 + + if (this.length === 0) return -1 + if (byteOffset >= this.length) return -1 + + // Negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0) + + if (typeof val === 'string') { + if (val.length === 0) return -1 // special case: looking for empty string always fails + return String.prototype.indexOf.call(this, val, byteOffset) + } + if (Buffer.isBuffer(val)) { + return arrayIndexOf(this, val, byteOffset) + } + if (typeof val === 'number') { + if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') { + return Uint8Array.prototype.indexOf.call(this, val, byteOffset) + } + return arrayIndexOf(this, [ val ], byteOffset) + } + + function arrayIndexOf (arr, val, byteOffset) { + var foundIndex = -1 + for (var i = 0; byteOffset + i < arr.length; i++) { + if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex + } else { + foundIndex = -1 + } + } + return -1 + } + + throw new TypeError('val must be string, number or Buffer') +} + +// `get` is deprecated +Buffer.prototype.get = function get (offset) { + console.log('.get() is deprecated. Access using array indexes instead.') + return this.readUInt8(offset) +} + +// `set` is deprecated +Buffer.prototype.set = function set (v, offset) { + console.log('.set() is deprecated. Access using array indexes instead.') + return this.writeUInt8(v, offset) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + // must be an even number of digits + var strLen = string.length + if (strLen % 2 !== 0) throw new Error('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; i++) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (isNaN(parsed)) throw new Error('Invalid hex string') + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function binaryWrite (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset | 0 + if (isFinite(length)) { + length = length | 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + // legacy write(string, encoding, offset, length) - remove in v0.13 + } else { + var swap = encoding + encoding = offset + offset = length | 0 + length = swap + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'binary': + return binaryWrite(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; i++) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function binarySlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; i++) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; i++) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = Buffer._augment(this.subarray(start, end)) + } else { + var sliceLen = end - start + newBuf = new Buffer(sliceLen, undefined) + for (var i = 0; i < sliceLen; i++) { + newBuf[i] = this[i + start] + } + } + + if (newBuf.length) newBuf.parent = this.parent || this + + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance') + if (value > max || value < min) throw new RangeError('value is out of bounds') + if (offset + ext > buf.length) throw new RangeError('index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0) + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0) + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + this[offset] = value + return offset + 1 +} + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8 + } +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = value + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = value + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff + } +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = value + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = value + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = value < 0 ? 1 : 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = value < 0 ? 1 : 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + if (value < 0) value = 0xff + value + 1 + this[offset] = value + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = value + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = value + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = value + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = value + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (value > max || value < min) throw new RangeError('value is out of bounds') + if (offset + ext > buf.length) throw new RangeError('index out of range') + if (offset < 0) throw new RangeError('index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + var i + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; i--) { + target[i + targetStart] = this[i + start] + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; i++) { + target[i + targetStart] = this[i + start] + } + } else { + target._set(this.subarray(start, start + len), targetStart) + } + + return len +} + +// fill(value, start=0, end=buffer.length) +Buffer.prototype.fill = function fill (value, start, end) { + if (!value) value = 0 + if (!start) start = 0 + if (!end) end = this.length + + if (end < start) throw new RangeError('end < start') + + // Fill 0 bytes; we're done + if (end === start) return + if (this.length === 0) return + + if (start < 0 || start >= this.length) throw new RangeError('start out of bounds') + if (end < 0 || end > this.length) throw new RangeError('end out of bounds') + + var i + if (typeof value === 'number') { + for (i = start; i < end; i++) { + this[i] = value + } + } else { + var bytes = utf8ToBytes(value.toString()) + var len = bytes.length + for (i = start; i < end; i++) { + this[i] = bytes[i % len] + } + } + + return this +} + +/** + * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance. + * Added in Node 0.12. Only available in browsers that support ArrayBuffer. + */ +Buffer.prototype.toArrayBuffer = function toArrayBuffer () { + if (typeof Uint8Array !== 'undefined') { + if (Buffer.TYPED_ARRAY_SUPPORT) { + return (new Buffer(this)).buffer + } else { + var buf = new Uint8Array(this.length) + for (var i = 0, len = buf.length; i < len; i += 1) { + buf[i] = this[i] + } + return buf.buffer + } + } else { + throw new TypeError('Buffer.toArrayBuffer not supported in this browser') + } +} + +// HELPER FUNCTIONS +// ================ + +var BP = Buffer.prototype + +/** + * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods + */ +Buffer._augment = function _augment (arr) { + arr.constructor = Buffer + arr._isBuffer = true + + // save reference to original Uint8Array set method before overwriting + arr._set = arr.set + + // deprecated + arr.get = BP.get + arr.set = BP.set + + arr.write = BP.write + arr.toString = BP.toString + arr.toLocaleString = BP.toString + arr.toJSON = BP.toJSON + arr.equals = BP.equals + arr.compare = BP.compare + arr.indexOf = BP.indexOf + arr.copy = BP.copy + arr.slice = BP.slice + arr.readUIntLE = BP.readUIntLE + arr.readUIntBE = BP.readUIntBE + arr.readUInt8 = BP.readUInt8 + arr.readUInt16LE = BP.readUInt16LE + arr.readUInt16BE = BP.readUInt16BE + arr.readUInt32LE = BP.readUInt32LE + arr.readUInt32BE = BP.readUInt32BE + arr.readIntLE = BP.readIntLE + arr.readIntBE = BP.readIntBE + arr.readInt8 = BP.readInt8 + arr.readInt16LE = BP.readInt16LE + arr.readInt16BE = BP.readInt16BE + arr.readInt32LE = BP.readInt32LE + arr.readInt32BE = BP.readInt32BE + arr.readFloatLE = BP.readFloatLE + arr.readFloatBE = BP.readFloatBE + arr.readDoubleLE = BP.readDoubleLE + arr.readDoubleBE = BP.readDoubleBE + arr.writeUInt8 = BP.writeUInt8 + arr.writeUIntLE = BP.writeUIntLE + arr.writeUIntBE = BP.writeUIntBE + arr.writeUInt16LE = BP.writeUInt16LE + arr.writeUInt16BE = BP.writeUInt16BE + arr.writeUInt32LE = BP.writeUInt32LE + arr.writeUInt32BE = BP.writeUInt32BE + arr.writeIntLE = BP.writeIntLE + arr.writeIntBE = BP.writeIntBE + arr.writeInt8 = BP.writeInt8 + arr.writeInt16LE = BP.writeInt16LE + arr.writeInt16BE = BP.writeInt16BE + arr.writeInt32LE = BP.writeInt32LE + arr.writeInt32BE = BP.writeInt32BE + arr.writeFloatLE = BP.writeFloatLE + arr.writeFloatBE = BP.writeFloatBE + arr.writeDoubleLE = BP.writeDoubleLE + arr.writeDoubleBE = BP.writeDoubleBE + arr.fill = BP.fill + arr.inspect = BP.inspect + arr.toArrayBuffer = BP.toArrayBuffer + + return arr +} + +var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = stringtrim(str).replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; i++) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; i++) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; i++) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; i++) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +},{"base64-js":44,"ieee754":45,"is-array":46}],44:[function(require,module,exports){ +var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + +;(function (exports) { + 'use strict'; + + var Arr = (typeof Uint8Array !== 'undefined') + ? Uint8Array + : Array + + var PLUS = '+'.charCodeAt(0) + var SLASH = '/'.charCodeAt(0) + var NUMBER = '0'.charCodeAt(0) + var LOWER = 'a'.charCodeAt(0) + var UPPER = 'A'.charCodeAt(0) + var PLUS_URL_SAFE = '-'.charCodeAt(0) + var SLASH_URL_SAFE = '_'.charCodeAt(0) + + function decode (elt) { + var code = elt.charCodeAt(0) + if (code === PLUS || + code === PLUS_URL_SAFE) + return 62 // '+' + if (code === SLASH || + code === SLASH_URL_SAFE) + return 63 // '/' + if (code < NUMBER) + return -1 //no match + if (code < NUMBER + 10) + return code - NUMBER + 26 + 26 + if (code < UPPER + 26) + return code - UPPER + if (code < LOWER + 26) + return code - LOWER + 26 + } + + function b64ToByteArray (b64) { + var i, j, l, tmp, placeHolders, arr + + if (b64.length % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // the number of equal signs (place holders) + // if there are two placeholders, than the two characters before it + // represent one byte + // if there is only one, then the three characters before it represent 2 bytes + // this is just a cheap hack to not do indexOf twice + var len = b64.length + placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0 + + // base64 is 4/3 + up to two characters of the original data + arr = new Arr(b64.length * 3 / 4 - placeHolders) + + // if there are placeholders, only get up to the last complete 4 chars + l = placeHolders > 0 ? b64.length - 4 : b64.length + + var L = 0 + + function push (v) { + arr[L++] = v + } + + for (i = 0, j = 0; i < l; i += 4, j += 3) { + tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3)) + push((tmp & 0xFF0000) >> 16) + push((tmp & 0xFF00) >> 8) + push(tmp & 0xFF) + } + + if (placeHolders === 2) { + tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4) + push(tmp & 0xFF) + } else if (placeHolders === 1) { + tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2) + push((tmp >> 8) & 0xFF) + push(tmp & 0xFF) + } + + return arr + } + + function uint8ToBase64 (uint8) { + var i, + extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes + output = "", + temp, length + + function encode (num) { + return lookup.charAt(num) + } + + function tripletToBase64 (num) { + return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F) + } + + // go through the array every three bytes, we'll deal with trailing stuff later + for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) { + temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) + output += tripletToBase64(temp) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + switch (extraBytes) { + case 1: + temp = uint8[uint8.length - 1] + output += encode(temp >> 2) + output += encode((temp << 4) & 0x3F) + output += '==' + break + case 2: + temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]) + output += encode(temp >> 10) + output += encode((temp >> 4) & 0x3F) + output += encode((temp << 2) & 0x3F) + output += '=' + break + } + + return output + } + + exports.toByteArray = b64ToByteArray + exports.fromByteArray = uint8ToBase64 +}(typeof exports === 'undefined' ? (this.base64js = {}) : exports)) + +},{}],45:[function(require,module,exports){ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = nBytes * 8 - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] + + i += d + + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = nBytes * 8 - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } + + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128 +} + +},{}],46:[function(require,module,exports){ + +/** + * isArray + */ + +var isArray = Array.isArray; + +/** + * toString + */ + +var str = Object.prototype.toString; + +/** + * Whether or not the given `val` + * is an array. + * + * example: + * + * isArray([]); + * // > true + * isArray(arguments); + * // > false + * isArray(''); + * // > false + * + * @param {mixed} val + * @return {bool} + */ + +module.exports = isArray || function (val) { + return !! val && '[object Array]' == str.call(val); +}; + +},{}],47:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } + throw TypeError('Uncaught, unspecified "error" event.'); + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + handler.apply(this, args); + } + } else if (isObject(handler)) { + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + var m; + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.listenerCount = function(emitter, type) { + var ret; + if (!emitter._events || !emitter._events[type]) + ret = 0; + else if (isFunction(emitter._events[type])) + ret = 1; + else + ret = emitter._events[type].length; + return ret; +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + +},{}],48:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + +},{}],49:[function(require,module,exports){ +module.exports = Array.isArray || function (arr) { + return Object.prototype.toString.call(arr) == '[object Array]'; +}; + +},{}],50:[function(require,module,exports){ +exports.endianness = function () { return 'LE' }; + +exports.hostname = function () { + if (typeof location !== 'undefined') { + return location.hostname + } + else return ''; +}; + +exports.loadavg = function () { return [] }; + +exports.uptime = function () { return 0 }; + +exports.freemem = function () { + return Number.MAX_VALUE; +}; + +exports.totalmem = function () { + return Number.MAX_VALUE; +}; + +exports.cpus = function () { return [] }; + +exports.type = function () { return 'Browser' }; + +exports.release = function () { + if (typeof navigator !== 'undefined') { + return navigator.appVersion; + } + return ''; +}; + +exports.networkInterfaces += exports.getNetworkInterfaces += function () { return {} }; + +exports.arch = function () { return 'javascript' }; + +exports.platform = function () { return 'browser' }; + +exports.tmpdir = exports.tmpDir = function () { + return '/tmp'; +}; + +exports.EOL = '\n'; + +},{}],51:[function(require,module,exports){ +// shim for using process in browser + +var process = module.exports = {}; +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = setTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + clearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + setTimeout(drainQueue, 0); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],52:[function(require,module,exports){ +module.exports = require("./lib/_stream_duplex.js") + +},{"./lib/_stream_duplex.js":53}],53:[function(require,module,exports){ +(function (process){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. + +module.exports = Duplex; + +/**/ +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) keys.push(key); + return keys; +} +/**/ + + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +var Readable = require('./_stream_readable'); +var Writable = require('./_stream_writable'); + +util.inherits(Duplex, Readable); + +forEach(objectKeys(Writable.prototype), function(method) { + if (!Duplex.prototype[method]) + Duplex.prototype[method] = Writable.prototype[method]; +}); + +function Duplex(options) { + if (!(this instanceof Duplex)) + return new Duplex(options); + + Readable.call(this, options); + Writable.call(this, options); + + if (options && options.readable === false) + this.readable = false; + + if (options && options.writable === false) + this.writable = false; + + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) + this.allowHalfOpen = false; + + this.once('end', onend); +} + +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) + return; + + // no more data can be written. + // But allow more writes to happen in this tick. + process.nextTick(this.end.bind(this)); +} + +function forEach (xs, f) { + for (var i = 0, l = xs.length; i < l; i++) { + f(xs[i], i); + } +} + +}).call(this,require('_process')) +},{"./_stream_readable":55,"./_stream_writable":57,"_process":51,"core-util-is":58,"inherits":48}],54:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. + +module.exports = PassThrough; + +var Transform = require('./_stream_transform'); + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +util.inherits(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) + return new PassThrough(options); + + Transform.call(this, options); +} + +PassThrough.prototype._transform = function(chunk, encoding, cb) { + cb(null, chunk); +}; + +},{"./_stream_transform":56,"core-util-is":58,"inherits":48}],55:[function(require,module,exports){ +(function (process){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +module.exports = Readable; + +/**/ +var isArray = require('isarray'); +/**/ + + +/**/ +var Buffer = require('buffer').Buffer; +/**/ + +Readable.ReadableState = ReadableState; + +var EE = require('events').EventEmitter; + +/**/ +if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +var Stream = require('stream'); + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +var StringDecoder; + + +/**/ +var debug = require('util'); +if (debug && debug.debuglog) { + debug = debug.debuglog('stream'); +} else { + debug = function () {}; +} +/**/ + + +util.inherits(Readable, Stream); + +function ReadableState(options, stream) { + var Duplex = require('./_stream_duplex'); + + options = options || {}; + + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + var defaultHwm = options.objectMode ? 16 : 16 * 1024; + this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm; + + // cast to ints. + this.highWaterMark = ~~this.highWaterMark; + + this.buffer = []; + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + + + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; + + if (stream instanceof Duplex) + this.objectMode = this.objectMode || !!options.readableObjectMode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // when piping, we only care about 'readable' events that happen + // after read()ing all the bytes and not getting any pushback. + this.ranOut = false; + + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; + + // if true, a maybeReadMore has been scheduled + this.readingMore = false; + + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) + StringDecoder = require('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + var Duplex = require('./_stream_duplex'); + + if (!(this instanceof Readable)) + return new Readable(options); + + this._readableState = new ReadableState(options, this); + + // legacy + this.readable = true; + + Stream.call(this); +} + +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function(chunk, encoding) { + var state = this._readableState; + + if (util.isString(chunk) && !state.objectMode) { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = new Buffer(chunk, encoding); + encoding = ''; + } + } + + return readableAddChunk(this, state, chunk, encoding, false); +}; + +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function(chunk) { + var state = this._readableState; + return readableAddChunk(this, state, chunk, '', true); +}; + +function readableAddChunk(stream, state, chunk, encoding, addToFront) { + var er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (util.isNullOrUndefined(chunk)) { + state.reading = false; + if (!state.ended) + onEofChunk(stream, state); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (state.ended && !addToFront) { + var e = new Error('stream.push() after EOF'); + stream.emit('error', e); + } else if (state.endEmitted && addToFront) { + var e = new Error('stream.unshift() after end event'); + stream.emit('error', e); + } else { + if (state.decoder && !addToFront && !encoding) + chunk = state.decoder.write(chunk); + + if (!addToFront) + state.reading = false; + + // if we want the data now, just emit it. + if (state.flowing && state.length === 0 && !state.sync) { + stream.emit('data', chunk); + stream.read(0); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) + state.buffer.unshift(chunk); + else + state.buffer.push(chunk); + + if (state.needReadable) + emitReadable(stream); + } + + maybeReadMore(stream, state); + } + } else if (!addToFront) { + state.reading = false; + } + + return needMoreData(state); +} + + + +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && + (state.needReadable || + state.length < state.highWaterMark || + state.length === 0); +} + +// backwards compatibility. +Readable.prototype.setEncoding = function(enc) { + if (!StringDecoder) + StringDecoder = require('string_decoder/').StringDecoder; + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; + return this; +}; + +// Don't raise the hwm > 128MB +var MAX_HWM = 0x800000; +function roundUpToNextPowerOf2(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 + n--; + for (var p = 1; p < 32; p <<= 1) n |= n >> p; + n++; + } + return n; +} + +function howMuchToRead(n, state) { + if (state.length === 0 && state.ended) + return 0; + + if (state.objectMode) + return n === 0 ? 0 : 1; + + if (isNaN(n) || util.isNull(n)) { + // only flow one buffer at a time + if (state.flowing && state.buffer.length) + return state.buffer[0].length; + else + return state.length; + } + + if (n <= 0) + return 0; + + // If we're asking for more than the target buffer level, + // then raise the water mark. Bump up to the next highest + // power of 2, to prevent increasing it excessively in tiny + // amounts. + if (n > state.highWaterMark) + state.highWaterMark = roundUpToNextPowerOf2(n); + + // don't have that much. return null, unless we've ended. + if (n > state.length) { + if (!state.ended) { + state.needReadable = true; + return 0; + } else + return state.length; + } + + return n; +} + +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function(n) { + debug('read', n); + var state = this._readableState; + var nOrig = n; + + if (!util.isNumber(n) || n > 0) + state.emittedReadable = false; + + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && + state.needReadable && + (state.length >= state.highWaterMark || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) + endReadable(this); + else + emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); + + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) + endReadable(this); + return null; + } + + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); + + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } + + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } + + if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) + state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + } + + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (doRead && !state.reading) + n = howMuchToRead(nOrig, state); + + var ret; + if (n > 0) + ret = fromList(n, state); + else + ret = null; + + if (util.isNull(ret)) { + state.needReadable = true; + n = 0; + } + + state.length -= n; + + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (state.length === 0 && !state.ended) + state.needReadable = true; + + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended && state.length === 0) + endReadable(this); + + if (!util.isNull(ret)) + this.emit('data', ret); + + return ret; +}; + +function chunkInvalid(state, chunk) { + var er = null; + if (!util.isBuffer(chunk) && + !util.isString(chunk) && + !util.isNullOrUndefined(chunk) && + !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; +} + + +function onEofChunk(stream, state) { + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; + + // emit 'readable' now to make sure it gets picked up. + emitReadable(stream); +} + +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + if (state.sync) + process.nextTick(function() { + emitReadable_(stream); + }); + else + emitReadable_(stream); + } +} + +function emitReadable_(stream) { + debug('emit readable'); + stream.emit('readable'); + flow(stream); +} + + +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + process.nextTick(function() { + maybeReadMore_(stream, state); + }); + } +} + +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && + state.length < state.highWaterMark) { + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break; + else + len = state.length; + } + state.readingMore = false; +} + +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function(n) { + this.emit('error', new Error('not implemented')); +}; + +Readable.prototype.pipe = function(dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + + var doEnd = (!pipeOpts || pipeOpts.end !== false) && + dest !== process.stdout && + dest !== process.stderr; + + var endFn = doEnd ? onend : cleanup; + if (state.endEmitted) + process.nextTick(endFn); + else + src.once('end', endFn); + + dest.on('unpipe', onunpipe); + function onunpipe(readable) { + debug('onunpipe'); + if (readable === src) { + cleanup(); + } + } + + function onend() { + debug('onend'); + dest.end(); + } + + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', cleanup); + src.removeListener('data', ondata); + + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && + (!dest._writableState || dest._writableState.needDrain)) + ondrain(); + } + + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + var ret = dest.write(chunk); + if (false === ret) { + debug('false write response, pause', + src._readableState.awaitDrain); + src._readableState.awaitDrain++; + src.pause(); + } + } + + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EE.listenerCount(dest, 'error') === 0) + dest.emit('error', er); + } + // This is a brutally ugly hack to make sure that our error handler + // is attached before any userland ones. NEVER DO THIS. + if (!dest._events || !dest._events.error) + dest.on('error', onerror); + else if (isArray(dest._events.error)) + dest._events.error.unshift(onerror); + else + dest._events.error = [onerror, dest._events.error]; + + + + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } + + // tell the dest that it's being piped to + dest.emit('pipe', src); + + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function() { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) + state.awaitDrain--; + if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + + +Readable.prototype.unpipe = function(dest) { + var state = this._readableState; + + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) + return this; + + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) + return this; + + if (!dest) + dest = state.pipes; + + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) + dest.emit('unpipe', this); + return this; + } + + // slow case. multiple pipe destinations. + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) + dests[i].emit('unpipe', this); + return this; + } + + // try to find the right one. + var i = indexOf(state.pipes, dest); + if (i === -1) + return this; + + state.pipes.splice(i, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) + state.pipes = state.pipes[0]; + + dest.emit('unpipe', this); + + return this; +}; + +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function(ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + + // If listening to data, and it has not explicitly been paused, + // then call resume to start the flow of data on the next tick. + if (ev === 'data' && false !== this._readableState.flowing) { + this.resume(); + } + + if (ev === 'readable' && this.readable) { + var state = this._readableState; + if (!state.readableListening) { + state.readableListening = true; + state.emittedReadable = false; + state.needReadable = true; + if (!state.reading) { + var self = this; + process.nextTick(function() { + debug('readable nexttick read 0'); + self.read(0); + }); + } else if (state.length) { + emitReadable(this, state); + } + } + } + + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; + +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function() { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + state.flowing = true; + if (!state.reading) { + debug('resume read 0'); + this.read(0); + } + resume(this, state); + } + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + process.nextTick(function() { + resume_(stream, state); + }); + } +} + +function resume_(stream, state) { + state.resumeScheduled = false; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) + stream.read(0); +} + +Readable.prototype.pause = function() { + debug('call pause flowing=%j', this._readableState.flowing); + if (false !== this._readableState.flowing) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + if (state.flowing) { + do { + var chunk = stream.read(); + } while (null !== chunk && state.flowing); + } +} + +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function(stream) { + var state = this._readableState; + var paused = false; + + var self = this; + stream.on('end', function() { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) + self.push(chunk); + } + + self.push(null); + }); + + stream.on('data', function(chunk) { + debug('wrapped data'); + if (state.decoder) + chunk = state.decoder.write(chunk); + if (!chunk || !state.objectMode && !chunk.length) + return; + + var ret = self.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); + + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (util.isFunction(stream[i]) && util.isUndefined(this[i])) { + this[i] = function(method) { return function() { + return stream[method].apply(stream, arguments); + }}(i); + } + } + + // proxy certain important events. + var events = ['error', 'close', 'destroy', 'pause', 'resume']; + forEach(events, function(ev) { + stream.on(ev, self.emit.bind(self, ev)); + }); + + // when we try to consume some more bytes, simply unpause the + // underlying stream. + self._read = function(n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; + + return self; +}; + + + +// exposed for testing purposes only. +Readable._fromList = fromList; + +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +function fromList(n, state) { + var list = state.buffer; + var length = state.length; + var stringMode = !!state.decoder; + var objectMode = !!state.objectMode; + var ret; + + // nothing in the list, definitely empty. + if (list.length === 0) + return null; + + if (length === 0) + ret = null; + else if (objectMode) + ret = list.shift(); + else if (!n || n >= length) { + // read it all, truncate the array. + if (stringMode) + ret = list.join(''); + else + ret = Buffer.concat(list, length); + list.length = 0; + } else { + // read just some of it. + if (n < list[0].length) { + // just take a part of the first list item. + // slice is the same for buffers and strings. + var buf = list[0]; + ret = buf.slice(0, n); + list[0] = buf.slice(n); + } else if (n === list[0].length) { + // first list is a perfect match + ret = list.shift(); + } else { + // complex case. + // we have enough to cover it, but it spans past the first buffer. + if (stringMode) + ret = ''; + else + ret = new Buffer(n); + + var c = 0; + for (var i = 0, l = list.length; i < l && c < n; i++) { + var buf = list[0]; + var cpy = Math.min(n - c, buf.length); + + if (stringMode) + ret += buf.slice(0, cpy); + else + buf.copy(ret, c, 0, cpy); + + if (cpy < buf.length) + list[0] = buf.slice(cpy); + else + list.shift(); + + c += cpy; + } + } + } + + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) + throw new Error('endReadable called on non-empty stream'); + + if (!state.endEmitted) { + state.ended = true; + process.nextTick(function() { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } + }); + } +} + +function forEach (xs, f) { + for (var i = 0, l = xs.length; i < l; i++) { + f(xs[i], i); + } +} + +function indexOf (xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} + +}).call(this,require('_process')) +},{"./_stream_duplex":53,"_process":51,"buffer":43,"core-util-is":58,"events":47,"inherits":48,"isarray":49,"stream":63,"string_decoder/":64,"util":42}],56:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. + +module.exports = Transform; + +var Duplex = require('./_stream_duplex'); + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +util.inherits(Transform, Duplex); + + +function TransformState(options, stream) { + this.afterTransform = function(er, data) { + return afterTransform(stream, er, data); + }; + + this.needTransform = false; + this.transforming = false; + this.writecb = null; + this.writechunk = null; +} + +function afterTransform(stream, er, data) { + var ts = stream._transformState; + ts.transforming = false; + + var cb = ts.writecb; + + if (!cb) + return stream.emit('error', new Error('no writecb in Transform class')); + + ts.writechunk = null; + ts.writecb = null; + + if (!util.isNullOrUndefined(data)) + stream.push(data); + + if (cb) + cb(er); + + var rs = stream._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + stream._read(rs.highWaterMark); + } +} + + +function Transform(options) { + if (!(this instanceof Transform)) + return new Transform(options); + + Duplex.call(this, options); + + this._transformState = new TransformState(options, this); + + // when the writable side finishes, then flush out anything remaining. + var stream = this; + + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; + + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; + + this.once('prefinish', function() { + if (util.isFunction(this._flush)) + this._flush(function(er) { + done(stream, er); + }); + else + done(stream); + }); +} + +Transform.prototype.push = function(chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; + +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function(chunk, encoding, cb) { + throw new Error('not implemented'); +}; + +Transform.prototype._write = function(chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || + rs.needReadable || + rs.length < rs.highWaterMark) + this._read(rs.highWaterMark); + } +}; + +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function(n) { + var ts = this._transformState; + + if (!util.isNull(ts.writechunk) && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + + +function done(stream, er) { + if (er) + return stream.emit('error', er); + + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + var ws = stream._writableState; + var ts = stream._transformState; + + if (ws.length) + throw new Error('calling transform done when ws.length != 0'); + + if (ts.transforming) + throw new Error('calling transform done when still transforming'); + + return stream.push(null); +} + +},{"./_stream_duplex":53,"core-util-is":58,"inherits":48}],57:[function(require,module,exports){ +(function (process){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// A bit simpler than readable streams. +// Implement an async ._write(chunk, cb), and it'll handle all +// the drain event emission and buffering. + +module.exports = Writable; + +/**/ +var Buffer = require('buffer').Buffer; +/**/ + +Writable.WritableState = WritableState; + + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +var Stream = require('stream'); + +util.inherits(Writable, Stream); + +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; +} + +function WritableState(options, stream) { + var Duplex = require('./_stream_duplex'); + + options = options || {}; + + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + var hwm = options.highWaterMark; + var defaultHwm = options.objectMode ? 16 : 16 * 1024; + this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm; + + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; + + if (stream instanceof Duplex) + this.objectMode = this.objectMode || !!options.writableObjectMode; + + // cast to ints. + this.highWaterMark = ~~this.highWaterMark; + + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; + + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; + + // a flag to see when we're in the middle of a write. + this.writing = false; + + // when true all writes will be buffered until .uncork() call + this.corked = 0; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; + + // the callback that's passed to _write(chunk,cb) + this.onwrite = function(er) { + onwrite(stream, er); + }; + + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; + + // the amount that is being written when _write is called. + this.writelen = 0; + + this.buffer = []; + + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; + + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; + + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; +} + +function Writable(options) { + var Duplex = require('./_stream_duplex'); + + // Writable ctor is applied to Duplexes, though they're not + // instanceof Writable, they're instanceof Readable. + if (!(this instanceof Writable) && !(this instanceof Duplex)) + return new Writable(options); + + this._writableState = new WritableState(options, this); + + // legacy. + this.writable = true; + + Stream.call(this); +} + +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function() { + this.emit('error', new Error('Cannot pipe. Not readable.')); +}; + + +function writeAfterEnd(stream, state, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + process.nextTick(function() { + cb(er); + }); +} + +// If we get something that is not a buffer, string, null, or undefined, +// and we're not in objectMode, then that's an error. +// Otherwise stream chunks are all considered to be of length=1, and the +// watermarks determine how many objects to keep in the buffer, rather than +// how many bytes or characters. +function validChunk(stream, state, chunk, cb) { + var valid = true; + if (!util.isBuffer(chunk) && + !util.isString(chunk) && + !util.isNullOrUndefined(chunk) && + !state.objectMode) { + var er = new TypeError('Invalid non-string/buffer chunk'); + stream.emit('error', er); + process.nextTick(function() { + cb(er); + }); + valid = false; + } + return valid; +} + +Writable.prototype.write = function(chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + + if (util.isFunction(encoding)) { + cb = encoding; + encoding = null; + } + + if (util.isBuffer(chunk)) + encoding = 'buffer'; + else if (!encoding) + encoding = state.defaultEncoding; + + if (!util.isFunction(cb)) + cb = function() {}; + + if (state.ended) + writeAfterEnd(this, state, cb); + else if (validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, chunk, encoding, cb); + } + + return ret; +}; + +Writable.prototype.cork = function() { + var state = this._writableState; + + state.corked++; +}; + +Writable.prototype.uncork = function() { + var state = this._writableState; + + if (state.corked) { + state.corked--; + + if (!state.writing && + !state.corked && + !state.finished && + !state.bufferProcessing && + state.buffer.length) + clearBuffer(this, state); + } +}; + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && + state.decodeStrings !== false && + util.isString(chunk)) { + chunk = new Buffer(chunk, encoding); + } + return chunk; +} + +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, chunk, encoding, cb) { + chunk = decodeChunk(state, chunk, encoding); + if (util.isBuffer(chunk)) + encoding = 'buffer'; + var len = state.objectMode ? 1 : chunk.length; + + state.length += len; + + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) + state.needDrain = true; + + if (state.writing || state.corked) + state.buffer.push(new WriteReq(chunk, encoding, cb)); + else + doWrite(stream, state, false, len, chunk, encoding, cb); + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (writev) + stream._writev(chunk, state.onwrite); + else + stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + if (sync) + process.nextTick(function() { + state.pendingcb--; + cb(er); + }); + else { + state.pendingcb--; + cb(er); + } + + stream._writableState.errorEmitted = true; + stream.emit('error', er); +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + + onwriteStateUpdate(state); + + if (er) + onwriteError(stream, state, sync, er, cb); + else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(stream, state); + + if (!finished && + !state.corked && + !state.bufferProcessing && + state.buffer.length) { + clearBuffer(stream, state); + } + + if (sync) { + process.nextTick(function() { + afterWrite(stream, state, finished, cb); + }); + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) + onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} + +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} + + +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + + if (stream._writev && state.buffer.length > 1) { + // Fast case, write everything using _writev() + var cbs = []; + for (var c = 0; c < state.buffer.length; c++) + cbs.push(state.buffer[c].callback); + + // count the one we are adding, as well. + // TODO(isaacs) clean this up + state.pendingcb++; + doWrite(stream, state, true, state.length, state.buffer, '', function(err) { + for (var i = 0; i < cbs.length; i++) { + state.pendingcb--; + cbs[i](err); + } + }); + + // Clear buffer + state.buffer = []; + } else { + // Slow case, write chunks one-by-one + for (var c = 0; c < state.buffer.length; c++) { + var entry = state.buffer[c]; + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + + doWrite(stream, state, false, len, chunk, encoding, cb); + + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + c++; + break; + } + } + + if (c < state.buffer.length) + state.buffer = state.buffer.slice(c); + else + state.buffer.length = 0; + } + + state.bufferProcessing = false; +} + +Writable.prototype._write = function(chunk, encoding, cb) { + cb(new Error('not implemented')); + +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function(chunk, encoding, cb) { + var state = this._writableState; + + if (util.isFunction(chunk)) { + cb = chunk; + chunk = null; + encoding = null; + } else if (util.isFunction(encoding)) { + cb = encoding; + encoding = null; + } + + if (!util.isNullOrUndefined(chunk)) + this.write(chunk, encoding); + + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); + } + + // ignore unnecessary end() calls. + if (!state.ending && !state.finished) + endWritable(this, state, cb); +}; + + +function needFinish(stream, state) { + return (state.ending && + state.length === 0 && + !state.finished && + !state.writing); +} + +function prefinish(stream, state) { + if (!state.prefinished) { + state.prefinished = true; + stream.emit('prefinish'); + } +} + +function finishMaybe(stream, state) { + var need = needFinish(stream, state); + if (need) { + if (state.pendingcb === 0) { + prefinish(stream, state); + state.finished = true; + stream.emit('finish'); + } else + prefinish(stream, state); + } + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) + process.nextTick(cb); + else + stream.once('finish', cb); + } + state.ended = true; +} + +}).call(this,require('_process')) +},{"./_stream_duplex":53,"_process":51,"buffer":43,"core-util-is":58,"inherits":48,"stream":63}],58:[function(require,module,exports){ +(function (Buffer){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +function isBuffer(arg) { + return Buffer.isBuffer(arg); +} +exports.isBuffer = isBuffer; + +function objectToString(o) { + return Object.prototype.toString.call(o); +} +}).call(this,require("buffer").Buffer) +},{"buffer":43}],59:[function(require,module,exports){ +module.exports = require("./lib/_stream_passthrough.js") + +},{"./lib/_stream_passthrough.js":54}],60:[function(require,module,exports){ +exports = module.exports = require('./lib/_stream_readable.js'); +exports.Stream = require('stream'); +exports.Readable = exports; +exports.Writable = require('./lib/_stream_writable.js'); +exports.Duplex = require('./lib/_stream_duplex.js'); +exports.Transform = require('./lib/_stream_transform.js'); +exports.PassThrough = require('./lib/_stream_passthrough.js'); + +},{"./lib/_stream_duplex.js":53,"./lib/_stream_passthrough.js":54,"./lib/_stream_readable.js":55,"./lib/_stream_transform.js":56,"./lib/_stream_writable.js":57,"stream":63}],61:[function(require,module,exports){ +module.exports = require("./lib/_stream_transform.js") + +},{"./lib/_stream_transform.js":56}],62:[function(require,module,exports){ +module.exports = require("./lib/_stream_writable.js") + +},{"./lib/_stream_writable.js":57}],63:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +module.exports = Stream; + +var EE = require('events').EventEmitter; +var inherits = require('inherits'); + +inherits(Stream, EE); +Stream.Readable = require('readable-stream/readable.js'); +Stream.Writable = require('readable-stream/writable.js'); +Stream.Duplex = require('readable-stream/duplex.js'); +Stream.Transform = require('readable-stream/transform.js'); +Stream.PassThrough = require('readable-stream/passthrough.js'); + +// Backwards-compat with node 0.4.x +Stream.Stream = Stream; + + + +// old-style streams. Note that the pipe method (the only relevant +// part of this class) is overridden in the Readable class. + +function Stream() { + EE.call(this); +} + +Stream.prototype.pipe = function(dest, options) { + var source = this; + + function ondata(chunk) { + if (dest.writable) { + if (false === dest.write(chunk) && source.pause) { + source.pause(); + } + } + } + + source.on('data', ondata); + + function ondrain() { + if (source.readable && source.resume) { + source.resume(); + } + } + + dest.on('drain', ondrain); + + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); + } + + var didOnEnd = false; + function onend() { + if (didOnEnd) return; + didOnEnd = true; + + dest.end(); + } + + + function onclose() { + if (didOnEnd) return; + didOnEnd = true; + + if (typeof dest.destroy === 'function') dest.destroy(); + } + + // don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EE.listenerCount(this, 'error') === 0) { + throw er; // Unhandled stream error in pipe. + } + } + + source.on('error', onerror); + dest.on('error', onerror); + + // remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); + + source.removeListener('end', onend); + source.removeListener('close', onclose); + + source.removeListener('error', onerror); + dest.removeListener('error', onerror); + + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); + + dest.removeListener('close', cleanup); + } + + source.on('end', cleanup); + source.on('close', cleanup); + + dest.on('close', cleanup); + + dest.emit('pipe', source); + + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest; +}; + +},{"events":47,"inherits":48,"readable-stream/duplex.js":52,"readable-stream/passthrough.js":59,"readable-stream/readable.js":60,"readable-stream/transform.js":61,"readable-stream/writable.js":62}],64:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var Buffer = require('buffer').Buffer; + +var isBufferEncoding = Buffer.isEncoding + || function(encoding) { + switch (encoding && encoding.toLowerCase()) { + case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true; + default: return false; + } + } + + +function assertEncoding(encoding) { + if (encoding && !isBufferEncoding(encoding)) { + throw new Error('Unknown encoding: ' + encoding); + } +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. CESU-8 is handled as part of the UTF-8 encoding. +// +// @TODO Handling all encodings inside a single object makes it very difficult +// to reason about this code, so it should be split up in the future. +// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code +// points as used by CESU-8. +var StringDecoder = exports.StringDecoder = function(encoding) { + this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); + assertEncoding(encoding); + switch (this.encoding) { + case 'utf8': + // CESU-8 represents each of Surrogate Pair by 3-bytes + this.surrogateSize = 3; + break; + case 'ucs2': + case 'utf16le': + // UTF-16 represents each of Surrogate Pair by 2-bytes + this.surrogateSize = 2; + this.detectIncompleteChar = utf16DetectIncompleteChar; + break; + case 'base64': + // Base-64 stores 3 bytes in 4 chars, and pads the remainder. + this.surrogateSize = 3; + this.detectIncompleteChar = base64DetectIncompleteChar; + break; + default: + this.write = passThroughWrite; + return; + } + + // Enough space to store all bytes of a single character. UTF-8 needs 4 + // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate). + this.charBuffer = new Buffer(6); + // Number of bytes received for the current incomplete multi-byte character. + this.charReceived = 0; + // Number of bytes expected for the current incomplete multi-byte character. + this.charLength = 0; +}; + + +// write decodes the given buffer and returns it as JS string that is +// guaranteed to not contain any partial multi-byte characters. Any partial +// character found at the end of the buffer is buffered up, and will be +// returned when calling write again with the remaining bytes. +// +// Note: Converting a Buffer containing an orphan surrogate to a String +// currently works, but converting a String to a Buffer (via `new Buffer`, or +// Buffer#write) will replace incomplete surrogates with the unicode +// replacement character. See https://codereview.chromium.org/121173009/ . +StringDecoder.prototype.write = function(buffer) { + var charStr = ''; + // if our last write ended with an incomplete multibyte character + while (this.charLength) { + // determine how many remaining bytes this buffer has to offer for this char + var available = (buffer.length >= this.charLength - this.charReceived) ? + this.charLength - this.charReceived : + buffer.length; + + // add the new bytes to the char buffer + buffer.copy(this.charBuffer, this.charReceived, 0, available); + this.charReceived += available; + + if (this.charReceived < this.charLength) { + // still not enough chars in this buffer? wait for more ... + return ''; + } + + // remove bytes belonging to the current character from the buffer + buffer = buffer.slice(available, buffer.length); + + // get the character that was split + charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); + + // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character + var charCode = charStr.charCodeAt(charStr.length - 1); + if (charCode >= 0xD800 && charCode <= 0xDBFF) { + this.charLength += this.surrogateSize; + charStr = ''; + continue; + } + this.charReceived = this.charLength = 0; + + // if there are no more bytes in this buffer, just emit our char + if (buffer.length === 0) { + return charStr; + } + break; + } + + // determine and set charLength / charReceived + this.detectIncompleteChar(buffer); + + var end = buffer.length; + if (this.charLength) { + // buffer the incomplete character bytes we got + buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end); + end -= this.charReceived; + } + + charStr += buffer.toString(this.encoding, 0, end); + + var end = charStr.length - 1; + var charCode = charStr.charCodeAt(end); + // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character + if (charCode >= 0xD800 && charCode <= 0xDBFF) { + var size = this.surrogateSize; + this.charLength += size; + this.charReceived += size; + this.charBuffer.copy(this.charBuffer, size, 0, size); + buffer.copy(this.charBuffer, 0, 0, size); + return charStr.substring(0, end); + } + + // or just emit the charStr + return charStr; +}; + +// detectIncompleteChar determines if there is an incomplete UTF-8 character at +// the end of the given buffer. If so, it sets this.charLength to the byte +// length that character, and sets this.charReceived to the number of bytes +// that are available for this character. +StringDecoder.prototype.detectIncompleteChar = function(buffer) { + // determine how many bytes we have to check at the end of this buffer + var i = (buffer.length >= 3) ? 3 : buffer.length; + + // Figure out if one of the last i bytes of our buffer announces an + // incomplete char. + for (; i > 0; i--) { + var c = buffer[buffer.length - i]; + + // See http://en.wikipedia.org/wiki/UTF-8#Description + + // 110XXXXX + if (i == 1 && c >> 5 == 0x06) { + this.charLength = 2; + break; + } + + // 1110XXXX + if (i <= 2 && c >> 4 == 0x0E) { + this.charLength = 3; + break; + } + + // 11110XXX + if (i <= 3 && c >> 3 == 0x1E) { + this.charLength = 4; + break; + } + } + this.charReceived = i; +}; + +StringDecoder.prototype.end = function(buffer) { + var res = ''; + if (buffer && buffer.length) + res = this.write(buffer); + + if (this.charReceived) { + var cr = this.charReceived; + var buf = this.charBuffer; + var enc = this.encoding; + res += buf.slice(0, cr).toString(enc); + } + + return res; +}; + +function passThroughWrite(buffer) { + return buffer.toString(this.encoding); +} + +function utf16DetectIncompleteChar(buffer) { + this.charReceived = buffer.length % 2; + this.charLength = this.charReceived ? 2 : 0; +} + +function base64DetectIncompleteChar(buffer) { + this.charReceived = buffer.length % 3; + this.charLength = this.charReceived ? 3 : 0; +} + +},{"buffer":43}],65:[function(require,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +},{}],66:[function(require,module,exports){ +(function (process,global){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; + + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = require('./support/isBuffer'); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = require('inherits'); + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./support/isBuffer":65,"_process":51,"inherits":48}],67:[function(require,module,exports){ +/* See LICENSE file for terms of use */ + +/* + * Text diff implementation. + * + * This library supports the following APIS: + * JsDiff.diffChars: Character by character diff + * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace + * JsDiff.diffLines: Line based diff + * + * JsDiff.diffCss: Diff targeted at CSS content + * + * These methods are based on the implementation proposed in + * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986). + * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927 + */ +(function(global, undefined) { + var objectPrototypeToString = Object.prototype.toString; + + /*istanbul ignore next*/ + function map(arr, mapper, that) { + if (Array.prototype.map) { + return Array.prototype.map.call(arr, mapper, that); + } + + var other = new Array(arr.length); + + for (var i = 0, n = arr.length; i < n; i++) { + other[i] = mapper.call(that, arr[i], i, arr); + } + return other; + } + function clonePath(path) { + return { newPos: path.newPos, components: path.components.slice(0) }; + } + function removeEmpty(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + if (array[i]) { + ret.push(array[i]); + } + } + return ret; + } + function escapeHTML(s) { + var n = s; + n = n.replace(/&/g, '&'); + n = n.replace(//g, '>'); + n = n.replace(/"/g, '"'); + + return n; + } + + // This function handles the presence of circular references by bailing out when encountering an + // object that is already on the "stack" of items being processed. + function canonicalize(obj, stack, replacementStack) { + stack = stack || []; + replacementStack = replacementStack || []; + + var i; + + for (i = 0; i < stack.length; i += 1) { + if (stack[i] === obj) { + return replacementStack[i]; + } + } + + var canonicalizedObj; + + if ('[object Array]' === objectPrototypeToString.call(obj)) { + stack.push(obj); + canonicalizedObj = new Array(obj.length); + replacementStack.push(canonicalizedObj); + for (i = 0; i < obj.length; i += 1) { + canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack); + } + stack.pop(); + replacementStack.pop(); + } else if (typeof obj === 'object' && obj !== null) { + stack.push(obj); + canonicalizedObj = {}; + replacementStack.push(canonicalizedObj); + var sortedKeys = [], + key; + for (key in obj) { + sortedKeys.push(key); + } + sortedKeys.sort(); + for (i = 0; i < sortedKeys.length; i += 1) { + key = sortedKeys[i]; + canonicalizedObj[key] = canonicalize(obj[key], stack, replacementStack); + } + stack.pop(); + replacementStack.pop(); + } else { + canonicalizedObj = obj; + } + return canonicalizedObj; + } + + function buildValues(components, newString, oldString, useLongestToken) { + var componentPos = 0, + componentLen = components.length, + newPos = 0, + oldPos = 0; + + for (; componentPos < componentLen; componentPos++) { + var component = components[componentPos]; + if (!component.removed) { + if (!component.added && useLongestToken) { + var value = newString.slice(newPos, newPos + component.count); + value = map(value, function(value, i) { + var oldValue = oldString[oldPos + i]; + return oldValue.length > value.length ? oldValue : value; + }); + + component.value = value.join(''); + } else { + component.value = newString.slice(newPos, newPos + component.count).join(''); + } + newPos += component.count; + + // Common case + if (!component.added) { + oldPos += component.count; + } + } else { + component.value = oldString.slice(oldPos, oldPos + component.count).join(''); + oldPos += component.count; + + // Reverse add and remove so removes are output first to match common convention + // The diffing algorithm is tied to add then remove output and this is the simplest + // route to get the desired output with minimal overhead. + if (componentPos && components[componentPos - 1].added) { + var tmp = components[componentPos - 1]; + components[componentPos - 1] = components[componentPos]; + components[componentPos] = tmp; + } + } + } + + return components; + } + + function Diff(ignoreWhitespace) { + this.ignoreWhitespace = ignoreWhitespace; + } + Diff.prototype = { + diff: function(oldString, newString, callback) { + var self = this; + + function done(value) { + if (callback) { + setTimeout(function() { callback(undefined, value); }, 0); + return true; + } else { + return value; + } + } + + // Handle the identity case (this is due to unrolling editLength == 0 + if (newString === oldString) { + return done([{ value: newString }]); + } + if (!newString) { + return done([{ value: oldString, removed: true }]); + } + if (!oldString) { + return done([{ value: newString, added: true }]); + } + + newString = this.tokenize(newString); + oldString = this.tokenize(oldString); + + var newLen = newString.length, oldLen = oldString.length; + var editLength = 1; + var maxEditLength = newLen + oldLen; + var bestPath = [{ newPos: -1, components: [] }]; + + // Seed editLength = 0, i.e. the content starts with the same values + var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); + if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + // Identity per the equality and tokenizer + return done([{value: newString.join('')}]); + } + + // Main worker method. checks all permutations of a given edit length for acceptance. + function execEditLength() { + for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { + var basePath; + var addPath = bestPath[diagonalPath - 1], + removePath = bestPath[diagonalPath + 1], + oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; + if (addPath) { + // No one else is going to attempt to use this value, clear it + bestPath[diagonalPath - 1] = undefined; + } + + var canAdd = addPath && addPath.newPos + 1 < newLen, + canRemove = removePath && 0 <= oldPos && oldPos < oldLen; + if (!canAdd && !canRemove) { + // If this path is a terminal then prune + bestPath[diagonalPath] = undefined; + continue; + } + + // Select the diagonal that we want to branch from. We select the prior + // path whose position in the new string is the farthest from the origin + // and does not pass the bounds of the diff graph + if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) { + basePath = clonePath(removePath); + self.pushComponent(basePath.components, undefined, true); + } else { + basePath = addPath; // No need to clone, we've pulled it from the list + basePath.newPos++; + self.pushComponent(basePath.components, true, undefined); + } + + oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); + + // If we have hit the end of both strings, then we are done + if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + return done(buildValues(basePath.components, newString, oldString, self.useLongestToken)); + } else { + // Otherwise track this path as a potential candidate and continue. + bestPath[diagonalPath] = basePath; + } + } + + editLength++; + } + + // Performs the length of edit iteration. Is a bit fugly as this has to support the + // sync and async mode which is never fun. Loops over execEditLength until a value + // is produced. + if (callback) { + (function exec() { + setTimeout(function() { + // This should not happen, but we want to be safe. + /*istanbul ignore next */ + if (editLength > maxEditLength) { + return callback(); + } + + if (!execEditLength()) { + exec(); + } + }, 0); + }()); + } else { + while (editLength <= maxEditLength) { + var ret = execEditLength(); + if (ret) { + return ret; + } + } + } + }, + + pushComponent: function(components, added, removed) { + var last = components[components.length - 1]; + if (last && last.added === added && last.removed === removed) { + // We need to clone here as the component clone operation is just + // as shallow array clone + components[components.length - 1] = {count: last.count + 1, added: added, removed: removed }; + } else { + components.push({count: 1, added: added, removed: removed }); + } + }, + extractCommon: function(basePath, newString, oldString, diagonalPath) { + var newLen = newString.length, + oldLen = oldString.length, + newPos = basePath.newPos, + oldPos = newPos - diagonalPath, + + commonCount = 0; + while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { + newPos++; + oldPos++; + commonCount++; + } + + if (commonCount) { + basePath.components.push({count: commonCount}); + } + + basePath.newPos = newPos; + return oldPos; + }, + + equals: function(left, right) { + var reWhitespace = /\S/; + return left === right || (this.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right)); + }, + tokenize: function(value) { + return value.split(''); + } + }; + + var CharDiff = new Diff(); + + var WordDiff = new Diff(true); + var WordWithSpaceDiff = new Diff(); + WordDiff.tokenize = WordWithSpaceDiff.tokenize = function(value) { + return removeEmpty(value.split(/(\s+|\b)/)); + }; + + var CssDiff = new Diff(true); + CssDiff.tokenize = function(value) { + return removeEmpty(value.split(/([{}:;,]|\s+)/)); + }; + + var LineDiff = new Diff(); + + var TrimmedLineDiff = new Diff(); + TrimmedLineDiff.ignoreTrim = true; + + LineDiff.tokenize = TrimmedLineDiff.tokenize = function(value) { + var retLines = [], + lines = value.split(/^/m); + for (var i = 0; i < lines.length; i++) { + var line = lines[i], + lastLine = lines[i - 1], + lastLineLastChar = lastLine && lastLine[lastLine.length - 1]; + + // Merge lines that may contain windows new lines + if (line === '\n' && lastLineLastChar === '\r') { + retLines[retLines.length - 1] = retLines[retLines.length - 1].slice(0, -1) + '\r\n'; + } else { + if (this.ignoreTrim) { + line = line.trim(); + // add a newline unless this is the last line. + if (i < lines.length - 1) { + line += '\n'; + } + } + retLines.push(line); + } + } + + return retLines; + }; + + var PatchDiff = new Diff(); + PatchDiff.tokenize = function(value) { + var ret = [], + linesAndNewlines = value.split(/(\n|\r\n)/); + + // Ignore the final empty token that occurs if the string ends with a new line + if (!linesAndNewlines[linesAndNewlines.length - 1]) { + linesAndNewlines.pop(); + } + + // Merge the content and line separators into single tokens + for (var i = 0; i < linesAndNewlines.length; i++) { + var line = linesAndNewlines[i]; + + if (i % 2) { + ret[ret.length - 1] += line; + } else { + ret.push(line); + } + } + return ret; + }; + + var SentenceDiff = new Diff(); + SentenceDiff.tokenize = function(value) { + return removeEmpty(value.split(/(\S.+?[.!?])(?=\s+|$)/)); + }; + + var JsonDiff = new Diff(); + // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a + // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output: + JsonDiff.useLongestToken = true; + JsonDiff.tokenize = LineDiff.tokenize; + JsonDiff.equals = function(left, right) { + return LineDiff.equals(left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1')); + }; + + var JsDiff = { + Diff: Diff, + + diffChars: function(oldStr, newStr, callback) { return CharDiff.diff(oldStr, newStr, callback); }, + diffWords: function(oldStr, newStr, callback) { return WordDiff.diff(oldStr, newStr, callback); }, + diffWordsWithSpace: function(oldStr, newStr, callback) { return WordWithSpaceDiff.diff(oldStr, newStr, callback); }, + diffLines: function(oldStr, newStr, callback) { return LineDiff.diff(oldStr, newStr, callback); }, + diffTrimmedLines: function(oldStr, newStr, callback) { return TrimmedLineDiff.diff(oldStr, newStr, callback); }, + + diffSentences: function(oldStr, newStr, callback) { return SentenceDiff.diff(oldStr, newStr, callback); }, + + diffCss: function(oldStr, newStr, callback) { return CssDiff.diff(oldStr, newStr, callback); }, + diffJson: function(oldObj, newObj, callback) { + return JsonDiff.diff( + typeof oldObj === 'string' ? oldObj : JSON.stringify(canonicalize(oldObj), undefined, ' '), + typeof newObj === 'string' ? newObj : JSON.stringify(canonicalize(newObj), undefined, ' '), + callback + ); + }, + + createTwoFilesPatch: function(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader) { + var ret = []; + + if (oldFileName == newFileName) { + ret.push('Index: ' + oldFileName); + } + ret.push('==================================================================='); + ret.push('--- ' + oldFileName + (typeof oldHeader === 'undefined' ? '' : '\t' + oldHeader)); + ret.push('+++ ' + newFileName + (typeof newHeader === 'undefined' ? '' : '\t' + newHeader)); + + var diff = PatchDiff.diff(oldStr, newStr); + diff.push({value: '', lines: []}); // Append an empty value to make cleanup easier + + // Formats a given set of lines for printing as context lines in a patch + function contextLines(lines) { + return map(lines, function(entry) { return ' ' + entry; }); + } + + // Outputs the no newline at end of file warning if needed + function eofNL(curRange, i, current) { + var last = diff[diff.length - 2], + isLast = i === diff.length - 2, + isLastOfType = i === diff.length - 3 && current.added !== last.added; + + // Figure out if this is the last line for the given file and missing NL + if (!(/\n$/.test(current.value)) && (isLast || isLastOfType)) { + curRange.push('\\ No newline at end of file'); + } + } + + var oldRangeStart = 0, newRangeStart = 0, curRange = [], + oldLine = 1, newLine = 1; + for (var i = 0; i < diff.length; i++) { + var current = diff[i], + lines = current.lines || current.value.replace(/\n$/, '').split('\n'); + current.lines = lines; + + if (current.added || current.removed) { + // If we have previous context, start with that + if (!oldRangeStart) { + var prev = diff[i - 1]; + oldRangeStart = oldLine; + newRangeStart = newLine; + + if (prev) { + curRange = contextLines(prev.lines.slice(-4)); + oldRangeStart -= curRange.length; + newRangeStart -= curRange.length; + } + } + + // Output our changes + curRange.push.apply(curRange, map(lines, function(entry) { + return (current.added ? '+' : '-') + entry; + })); + eofNL(curRange, i, current); + + // Track the updated file position + if (current.added) { + newLine += lines.length; + } else { + oldLine += lines.length; + } + } else { + // Identical context lines. Track line changes + if (oldRangeStart) { + // Close out any changes that have been output (or join overlapping) + if (lines.length <= 8 && i < diff.length - 2) { + // Overlapping + curRange.push.apply(curRange, contextLines(lines)); + } else { + // end the range and output + var contextSize = Math.min(lines.length, 4); + ret.push( + '@@ -' + oldRangeStart + ',' + (oldLine - oldRangeStart + contextSize) + + ' +' + newRangeStart + ',' + (newLine - newRangeStart + contextSize) + + ' @@'); + ret.push.apply(ret, curRange); + ret.push.apply(ret, contextLines(lines.slice(0, contextSize))); + if (lines.length <= 4) { + eofNL(ret, i, current); + } + + oldRangeStart = 0; + newRangeStart = 0; + curRange = []; + } + } + oldLine += lines.length; + newLine += lines.length; + } + } + + return ret.join('\n') + '\n'; + }, + + createPatch: function(fileName, oldStr, newStr, oldHeader, newHeader) { + return JsDiff.createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader); + }, + + applyPatch: function(oldStr, uniDiff) { + var diffstr = uniDiff.split('\n'), + hunks = [], + i = 0, + remEOFNL = false, + addEOFNL = false; + + // Skip to the first change hunk + while (i < diffstr.length && !(/^@@/.test(diffstr[i]))) { + i++; + } + + // Parse the unified diff + for (; i < diffstr.length; i++) { + if (diffstr[i][0] === '@') { + var chnukHeader = diffstr[i].split(/@@ -(\d+),(\d+) \+(\d+),(\d+) @@/); + hunks.unshift({ + start: chnukHeader[3], + oldlength: +chnukHeader[2], + removed: [], + newlength: chnukHeader[4], + added: [] + }); + } else if (diffstr[i][0] === '+') { + hunks[0].added.push(diffstr[i].substr(1)); + } else if (diffstr[i][0] === '-') { + hunks[0].removed.push(diffstr[i].substr(1)); + } else if (diffstr[i][0] === ' ') { + hunks[0].added.push(diffstr[i].substr(1)); + hunks[0].removed.push(diffstr[i].substr(1)); + } else if (diffstr[i][0] === '\\') { + if (diffstr[i - 1][0] === '+') { + remEOFNL = true; + } else if (diffstr[i - 1][0] === '-') { + addEOFNL = true; + } + } + } + + // Apply the diff to the input + var lines = oldStr.split('\n'); + for (i = hunks.length - 1; i >= 0; i--) { + var hunk = hunks[i]; + // Sanity check the input string. Bail if we don't match. + for (var j = 0; j < hunk.oldlength; j++) { + if (lines[hunk.start - 1 + j] !== hunk.removed[j]) { + return false; + } + } + Array.prototype.splice.apply(lines, [hunk.start - 1, hunk.oldlength].concat(hunk.added)); + } + + // Handle EOFNL insertion/removal + if (remEOFNL) { + while (!lines[lines.length - 1]) { + lines.pop(); + } + } else if (addEOFNL) { + lines.push(''); + } + return lines.join('\n'); + }, + + convertChangesToXML: function(changes) { + var ret = []; + for (var i = 0; i < changes.length; i++) { + var change = changes[i]; + if (change.added) { + ret.push(''); + } else if (change.removed) { + ret.push(''); + } + + ret.push(escapeHTML(change.value)); + + if (change.added) { + ret.push(''); + } else if (change.removed) { + ret.push(''); + } + } + return ret.join(''); + }, + + // See: http://code.google.com/p/google-diff-match-patch/wiki/API + convertChangesToDMP: function(changes) { + var ret = [], + change, + operation; + for (var i = 0; i < changes.length; i++) { + change = changes[i]; + if (change.added) { + operation = 1; + } else if (change.removed) { + operation = -1; + } else { + operation = 0; + } + + ret.push([operation, change.value]); + } + return ret; + }, + + canonicalize: canonicalize + }; + + /*istanbul ignore next */ + /*global module */ + if (typeof module !== 'undefined' && module.exports) { + module.exports = JsDiff; + } else if (typeof define === 'function' && define.amd) { + /*global define */ + define([], function() { return JsDiff; }); + } else if (typeof global.JsDiff === 'undefined') { + global.JsDiff = JsDiff; + } +}(this)); + +},{}],68:[function(require,module,exports){ +'use strict'; + +var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + +module.exports = function (str) { + if (typeof str !== 'string') { + throw new TypeError('Expected a string'); + } + + return str.replace(matchOperatorsRe, '\\$&'); +}; + +},{}],69:[function(require,module,exports){ +(function (process){ +// Growl - Copyright TJ Holowaychuk (MIT Licensed) + +/** + * Module dependencies. + */ + +var exec = require('child_process').exec + , fs = require('fs') + , path = require('path') + , exists = fs.existsSync || path.existsSync + , os = require('os') + , quote = JSON.stringify + , cmd; + +function which(name) { + var paths = process.env.PATH.split(':'); + var loc; + + for (var i = 0, len = paths.length; i < len; ++i) { + loc = path.join(paths[i], name); + if (exists(loc)) return loc; + } +} + +switch(os.type()) { + case 'Darwin': + if (which('terminal-notifier')) { + cmd = { + type: "Darwin-NotificationCenter" + , pkg: "terminal-notifier" + , msg: '-message' + , title: '-title' + , subtitle: '-subtitle' + , priority: { + cmd: '-execute' + , range: [] + } + }; + } else { + cmd = { + type: "Darwin-Growl" + , pkg: "growlnotify" + , msg: '-m' + , sticky: '--sticky' + , priority: { + cmd: '--priority' + , range: [ + -2 + , -1 + , 0 + , 1 + , 2 + , "Very Low" + , "Moderate" + , "Normal" + , "High" + , "Emergency" + ] + } + }; + } + break; + case 'Linux': + cmd = { + type: "Linux" + , pkg: "notify-send" + , msg: '' + , sticky: '-t 0' + , icon: '-i' + , priority: { + cmd: '-u' + , range: [ + "low" + , "normal" + , "critical" + ] + } + }; + break; + case 'Windows_NT': + cmd = { + type: "Windows" + , pkg: "growlnotify" + , msg: '' + , sticky: '/s:true' + , title: '/t:' + , icon: '/i:' + , priority: { + cmd: '/p:' + , range: [ + -2 + , -1 + , 0 + , 1 + , 2 + ] + } + }; + break; +} + +/** + * Expose `growl`. + */ + +exports = module.exports = growl; + +/** + * Node-growl version. + */ + +exports.version = '1.4.1' + +/** + * Send growl notification _msg_ with _options_. + * + * Options: + * + * - title Notification title + * - sticky Make the notification stick (defaults to false) + * - priority Specify an int or named key (default is 0) + * - name Application name (defaults to growlnotify) + * - image + * - path to an icon sets --iconpath + * - path to an image sets --image + * - capitalized word sets --appIcon + * - filename uses extname as --icon + * - otherwise treated as --icon + * + * Examples: + * + * growl('New email') + * growl('5 new emails', { title: 'Thunderbird' }) + * growl('Email sent', function(){ + * // ... notification sent + * }) + * + * @param {string} msg + * @param {object} options + * @param {function} fn + * @api public + */ + +function growl(msg, options, fn) { + var image + , args + , options = options || {} + , fn = fn || function(){}; + + // noop + if (!cmd) return fn(new Error('growl not supported on this platform')); + args = [cmd.pkg]; + + // image + if (image = options.image) { + switch(cmd.type) { + case 'Darwin-Growl': + var flag, ext = path.extname(image).substr(1) + flag = flag || ext == 'icns' && 'iconpath' + flag = flag || /^[A-Z]/.test(image) && 'appIcon' + flag = flag || /^png|gif|jpe?g$/.test(ext) && 'image' + flag = flag || ext && (image = ext) && 'icon' + flag = flag || 'icon' + args.push('--' + flag, quote(image)) + break; + case 'Linux': + args.push(cmd.icon, quote(image)); + // libnotify defaults to sticky, set a hint for transient notifications + if (!options.sticky) args.push('--hint=int:transient:1'); + break; + case 'Windows': + args.push(cmd.icon + quote(image)); + break; + } + } + + // sticky + if (options.sticky) args.push(cmd.sticky); + + // priority + if (options.priority) { + var priority = options.priority + ''; + var checkindexOf = cmd.priority.range.indexOf(priority); + if (~cmd.priority.range.indexOf(priority)) { + args.push(cmd.priority, options.priority); + } + } + + // name + if (options.name && cmd.type === "Darwin-Growl") { + args.push('--name', options.name); + } + + switch(cmd.type) { + case 'Darwin-Growl': + args.push(cmd.msg); + args.push(quote(msg)); + if (options.title) args.push(quote(options.title)); + break; + case 'Darwin-NotificationCenter': + args.push(cmd.msg); + args.push(quote(msg)); + if (options.title) { + args.push(cmd.title); + args.push(quote(options.title)); + } + if (options.subtitle) { + args.push(cmd.subtitle); + args.push(quote(options.subtitle)); + } + break; + case 'Darwin-Growl': + args.push(cmd.msg); + args.push(quote(msg)); + if (options.title) args.push(quote(options.title)); + break; + case 'Linux': + if (options.title) { + args.push(quote(options.title)); + args.push(cmd.msg); + args.push(quote(msg)); + } else { + args.push(quote(msg)); + } + break; + case 'Windows': + args.push(quote(msg)); + if (options.title) args.push(cmd.title + quote(options.title)); + break; + } + + // execute + exec(args.join(' '), fn); +}; + +}).call(this,require('_process')) +},{"_process":51,"child_process":41,"fs":41,"os":50,"path":41}],70:[function(require,module,exports){ +(function (process){ +var path = require('path'); +var fs = require('fs'); +var _0777 = parseInt('0777', 8); + +module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; + +function mkdirP (p, opts, f, made) { + if (typeof opts === 'function') { + f = opts; + opts = {}; + } + else if (!opts || typeof opts !== 'object') { + opts = { mode: opts }; + } + + var mode = opts.mode; + var xfs = opts.fs || fs; + + if (mode === undefined) { + mode = _0777 & (~process.umask()); + } + if (!made) made = null; + + var cb = f || function () {}; + p = path.resolve(p); + + xfs.mkdir(p, mode, function (er) { + if (!er) { + made = made || p; + return cb(null, made); + } + switch (er.code) { + case 'ENOENT': + mkdirP(path.dirname(p), opts, function (er, made) { + if (er) cb(er, made); + else mkdirP(p, opts, cb, made); + }); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + xfs.stat(p, function (er2, stat) { + // if the stat fails, then that's super weird. + // let the original error be the failure reason. + if (er2 || !stat.isDirectory()) cb(er, made) + else cb(null, made); + }); + break; + } + }); +} + +mkdirP.sync = function sync (p, opts, made) { + if (!opts || typeof opts !== 'object') { + opts = { mode: opts }; + } + + var mode = opts.mode; + var xfs = opts.fs || fs; + + if (mode === undefined) { + mode = _0777 & (~process.umask()); + } + if (!made) made = null; + + p = path.resolve(p); + + try { + xfs.mkdirSync(p, mode); + made = made || p; + } + catch (err0) { + switch (err0.code) { + case 'ENOENT' : + made = sync(path.dirname(p), opts, made); + sync(p, opts, made); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + var stat; + try { + stat = xfs.statSync(p); + } + catch (err1) { + throw err0; + } + if (!stat.isDirectory()) throw err0; + break; + } + } + + return made; +}; + +}).call(this,require('_process')) +},{"_process":51,"fs":41,"path":41}],71:[function(require,module,exports){ +(function (process,global){ +/** + * Shim process.stdout. + */ + +process.stdout = require('browser-stdout')(); + +var Mocha = require('../'); + +/** + * Create a Mocha instance. + * + * @return {undefined} + */ + +var mocha = new Mocha({ reporter: 'html' }); + +/** + * Save timer references to avoid Sinon interfering (see GH-237). + */ + +var Date = global.Date; +var setTimeout = global.setTimeout; +var setInterval = global.setInterval; +var clearTimeout = global.clearTimeout; +var clearInterval = global.clearInterval; + +var uncaughtExceptionHandlers = []; + +var originalOnerrorHandler = global.onerror; + +/** + * Remove uncaughtException listener. + * Revert to original onerror handler if previously defined. + */ + +process.removeListener = function(e, fn){ + if ('uncaughtException' == e) { + if (originalOnerrorHandler) { + global.onerror = originalOnerrorHandler; + } else { + global.onerror = function() {}; + } + var i = Mocha.utils.indexOf(uncaughtExceptionHandlers, fn); + if (i != -1) { uncaughtExceptionHandlers.splice(i, 1); } + } +}; + +/** + * Implements uncaughtException listener. + */ + +process.on = function(e, fn){ + if ('uncaughtException' == e) { + global.onerror = function(err, url, line){ + fn(new Error(err + ' (' + url + ':' + line + ')')); + return !mocha.allowUncaught; + }; + uncaughtExceptionHandlers.push(fn); + } +}; + +// The BDD UI is registered by default, but no UI will be functional in the +// browser without an explicit call to the overridden `mocha.ui` (see below). +// Ensure that this default UI does not expose its methods to the global scope. +mocha.suite.removeAllListeners('pre-require'); + +var immediateQueue = [] + , immediateTimeout; + +function timeslice() { + var immediateStart = new Date().getTime(); + while (immediateQueue.length && (new Date().getTime() - immediateStart) < 100) { + immediateQueue.shift()(); + } + if (immediateQueue.length) { + immediateTimeout = setTimeout(timeslice, 0); + } else { + immediateTimeout = null; + } +} + +/** + * High-performance override of Runner.immediately. + */ + +Mocha.Runner.immediately = function(callback) { + immediateQueue.push(callback); + if (!immediateTimeout) { + immediateTimeout = setTimeout(timeslice, 0); + } +}; + +/** + * Function to allow assertion libraries to throw errors directly into mocha. + * This is useful when running tests in a browser because window.onerror will + * only receive the 'message' attribute of the Error. + */ +mocha.throwError = function(err) { + Mocha.utils.forEach(uncaughtExceptionHandlers, function (fn) { + fn(err); + }); + throw err; +}; + +/** + * Override ui to ensure that the ui functions are initialized. + * Normally this would happen in Mocha.prototype.loadFiles. + */ + +mocha.ui = function(ui){ + Mocha.prototype.ui.call(this, ui); + this.suite.emit('pre-require', global, null, this); + return this; +}; + +/** + * Setup mocha with the given setting options. + */ + +mocha.setup = function(opts){ + if ('string' == typeof opts) opts = { ui: opts }; + for (var opt in opts) this[opt](opts[opt]); + return this; +}; + +/** + * Run mocha, returning the Runner. + */ + +mocha.run = function(fn){ + var options = mocha.options; + mocha.globals('location'); + + var query = Mocha.utils.parseQuery(global.location.search || ''); + if (query.grep) mocha.grep(new RegExp(query.grep)); + if (query.fgrep) mocha.grep(query.fgrep); + if (query.invert) mocha.invert(); + + return Mocha.prototype.run.call(mocha, function(err){ + // The DOM Document is not available in Web Workers. + var document = global.document; + if (document && document.getElementById('mocha') && options.noHighlighting !== true) { + Mocha.utils.highlightTags('code'); + } + if (fn) fn(err); + }); +}; + +/** + * Expose the process shim. + * https://github.com/mochajs/mocha/pull/916 + */ + +Mocha.process = process; + +/** + * Expose mocha. + */ + +global.Mocha = Mocha; +global.mocha = mocha; + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../":1,"_process":51,"browser-stdout":40}]},{},[71]); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/.bin/mkdirp b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/.bin/mkdirp new file mode 100644 index 00000000..4b004672 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/.bin/mkdirp @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../mkdirp/bin/cmd.js" "$@" + ret=$? +else + node "$basedir/../mkdirp/bin/cmd.js" "$@" + ret=$? +fi +exit $ret diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/.bin/mkdirp.cmd b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/.bin/mkdirp.cmd new file mode 100644 index 00000000..0d2cdd7c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/.bin/mkdirp.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\mkdirp\bin\cmd.js" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\mkdirp\bin\cmd.js" %* +) \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/commander/Readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/commander/Readme.md new file mode 100644 index 00000000..7bb60b2c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/commander/Readme.md @@ -0,0 +1,208 @@ +# Commander.js + + The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander). + + [![Build Status](https://api.travis-ci.org/visionmedia/commander.js.svg)](http://travis-ci.org/visionmedia/commander.js) + +## Installation + + $ npm install commander + +## Option parsing + + Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('commander'); + +program + .version('0.0.1') + .option('-p, --peppers', 'Add peppers') + .option('-P, --pineapple', 'Add pineapple') + .option('-b, --bbq', 'Add bbq sauce') + .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') + .parse(process.argv); + +console.log('you ordered a pizza with:'); +if (program.peppers) console.log(' - peppers'); +if (program.pineapple) console.log(' - pineapple'); +if (program.bbq) console.log(' - bbq'); +console.log(' - %s cheese', program.cheese); +``` + + Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. + +## Automated --help + + The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free: + +``` + $ ./examples/pizza --help + + Usage: pizza [options] + + Options: + + -V, --version output the version number + -p, --peppers Add peppers + -P, --pineapple Add pineapple + -b, --bbq Add bbq sauce + -c, --cheese Add the specified type of cheese [marble] + -h, --help output usage information + +``` + +## Coercion + +```js +function range(val) { + return val.split('..').map(Number); +} + +function list(val) { + return val.split(','); +} + +function collect(val, memo) { + memo.push(val); + return memo; +} + +function increaseVerbosity(v, total) { + return total + 1; +} + +program + .version('0.0.1') + .usage('[options] ') + .option('-i, --integer ', 'An integer argument', parseInt) + .option('-f, --float ', 'A float argument', parseFloat) + .option('-r, --range ..', 'A range', range) + .option('-l, --list ', 'A list', list) + .option('-o, --optional [value]', 'An optional value') + .option('-c, --collect [value]', 'A repeatable value', collect, []) + .option('-v, --verbose', 'A value that can be increased', increaseVerbosity, 0) + .parse(process.argv); + +console.log(' int: %j', program.integer); +console.log(' float: %j', program.float); +console.log(' optional: %j', program.optional); +program.range = program.range || []; +console.log(' range: %j..%j', program.range[0], program.range[1]); +console.log(' list: %j', program.list); +console.log(' collect: %j', program.collect); +console.log(' verbosity: %j', program.verbose); +console.log(' args: %j', program.args); +``` + +## Custom help + + You can display arbitrary `-h, --help` information + by listening for "--help". Commander will automatically + exit once you are done so that the remainder of your program + does not execute causing undesired behaviours, for example + in the following executable "stuff" will not output when + `--help` is used. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('../'); + +function list(val) { + return val.split(',').map(Number); +} + +program + .version('0.0.1') + .option('-f, --foo', 'enable some foo') + .option('-b, --bar', 'enable some bar') + .option('-B, --baz', 'enable some baz'); + +// must be before .parse() since +// node's emit() is immediate + +program.on('--help', function(){ + console.log(' Examples:'); + console.log(''); + console.log(' $ custom-help --help'); + console.log(' $ custom-help -h'); + console.log(''); +}); + +program.parse(process.argv); + +console.log('stuff'); +``` + +yielding the following help output: + +``` + +Usage: custom-help [options] + +Options: + + -h, --help output usage information + -V, --version output the version number + -f, --foo enable some foo + -b, --bar enable some bar + -B, --baz enable some baz + +Examples: + + $ custom-help --help + $ custom-help -h + +``` + +## .outputHelp() + + Output help information without exiting. + +## .help() + + Output help information and exit immediately. + +## Links + + - [API documentation](http://visionmedia.github.com/commander.js/) + - [ascii tables](https://github.com/LearnBoost/cli-table) + - [progress bars](https://github.com/visionmedia/node-progress) + - [more progress bars](https://github.com/substack/node-multimeter) + - [examples](https://github.com/visionmedia/commander.js/tree/master/examples) + +## License + +(The MIT License) + +Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/commander/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/commander/index.js new file mode 100644 index 00000000..8378d19a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/commander/index.js @@ -0,0 +1,876 @@ + +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter; +var spawn = require('child_process').spawn; +var path = require('path'); +var dirname = path.dirname; +var basename = path.basename; + +/** + * Expose the root command. + */ + +exports = module.exports = new Command; + +/** + * Expose `Command`. + */ + +exports.Command = Command; + +/** + * Expose `Option`. + */ + +exports.Option = Option; + +/** + * Initialize a new `Option` with the given `flags` and `description`. + * + * @param {String} flags + * @param {String} description + * @api public + */ + +function Option(flags, description) { + this.flags = flags; + this.required = ~flags.indexOf('<'); + this.optional = ~flags.indexOf('['); + this.bool = !~flags.indexOf('-no-'); + flags = flags.split(/[ ,|]+/); + if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift(); + this.long = flags.shift(); + this.description = description || ''; +} + +/** + * Return option name. + * + * @return {String} + * @api private + */ + +Option.prototype.name = function(){ + return this.long + .replace('--', '') + .replace('no-', ''); +}; + +/** + * Check if `arg` matches the short or long flag. + * + * @param {String} arg + * @return {Boolean} + * @api private + */ + +Option.prototype.is = function(arg){ + return arg == this.short + || arg == this.long; +}; + +/** + * Initialize a new `Command`. + * + * @param {String} name + * @api public + */ + +function Command(name) { + this.commands = []; + this.options = []; + this._execs = []; + this._args = []; + this._name = name; +} + +/** + * Inherit from `EventEmitter.prototype`. + */ + +Command.prototype.__proto__ = EventEmitter.prototype; + +/** + * Add command `name`. + * + * The `.action()` callback is invoked when the + * command `name` is specified via __ARGV__, + * and the remaining arguments are applied to the + * function for access. + * + * When the `name` is "*" an un-matched command + * will be passed as the first arg, followed by + * the rest of __ARGV__ remaining. + * + * Examples: + * + * program + * .version('0.0.1') + * .option('-C, --chdir ', 'change the working directory') + * .option('-c, --config ', 'set config path. defaults to ./deploy.conf') + * .option('-T, --no-tests', 'ignore test hook') + * + * program + * .command('setup') + * .description('run remote setup commands') + * .action(function(){ + * console.log('setup'); + * }); + * + * program + * .command('exec ') + * .description('run the given remote command') + * .action(function(cmd){ + * console.log('exec "%s"', cmd); + * }); + * + * program + * .command('*') + * .description('deploy the given env') + * .action(function(env){ + * console.log('deploying "%s"', env); + * }); + * + * program.parse(process.argv); + * + * @param {String} name + * @param {String} [desc] + * @return {Command} the new command + * @api public + */ + +Command.prototype.command = function(name, desc) { + var args = name.split(/ +/); + var cmd = new Command(args.shift()); + if (desc) cmd.description(desc); + if (desc) this.executables = true; + if (desc) this._execs[cmd._name] = true; + this.commands.push(cmd); + cmd.parseExpectedArgs(args); + cmd.parent = this; + if (desc) return this; + return cmd; +}; + +/** + * Add an implicit `help [cmd]` subcommand + * which invokes `--help` for the given command. + * + * @api private + */ + +Command.prototype.addImplicitHelpCommand = function() { + this.command('help [cmd]', 'display help for [cmd]'); +}; + +/** + * Parse expected `args`. + * + * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. + * + * @param {Array} args + * @return {Command} for chaining + * @api public + */ + +Command.prototype.parseExpectedArgs = function(args){ + if (!args.length) return; + var self = this; + args.forEach(function(arg){ + switch (arg[0]) { + case '<': + self._args.push({ required: true, name: arg.slice(1, -1) }); + break; + case '[': + self._args.push({ required: false, name: arg.slice(1, -1) }); + break; + } + }); + return this; +}; + +/** + * Register callback `fn` for the command. + * + * Examples: + * + * program + * .command('help') + * .description('display verbose help') + * .action(function(){ + * // output help here + * }); + * + * @param {Function} fn + * @return {Command} for chaining + * @api public + */ + +Command.prototype.action = function(fn){ + var self = this; + var listener = function(args, unknown){ + // Parse any so-far unknown options + args = args || []; + unknown = unknown || []; + + var parsed = self.parseOptions(unknown); + + // Output help if necessary + outputHelpIfNecessary(self, parsed.unknown); + + // If there are still any unknown options, then we simply + // die, unless someone asked for help, in which case we give it + // to them, and then we die. + if (parsed.unknown.length > 0) { + self.unknownOption(parsed.unknown[0]); + } + + // Leftover arguments need to be pushed back. Fixes issue #56 + if (parsed.args.length) args = parsed.args.concat(args); + + self._args.forEach(function(arg, i){ + if (arg.required && null == args[i]) { + self.missingArgument(arg.name); + } + }); + + // Always append ourselves to the end of the arguments, + // to make sure we match the number of arguments the user + // expects + if (self._args.length) { + args[self._args.length] = self; + } else { + args.push(self); + } + + fn.apply(this, args); + }; + this.parent.on(this._name, listener); + if (this._alias) this.parent.on(this._alias, listener); + return this; +}; + +/** + * Define option with `flags`, `description` and optional + * coercion `fn`. + * + * The `flags` string should contain both the short and long flags, + * separated by comma, a pipe or space. The following are all valid + * all will output this way when `--help` is used. + * + * "-p, --pepper" + * "-p|--pepper" + * "-p --pepper" + * + * Examples: + * + * // simple boolean defaulting to false + * program.option('-p, --pepper', 'add pepper'); + * + * --pepper + * program.pepper + * // => Boolean + * + * // simple boolean defaulting to true + * program.option('-C, --no-cheese', 'remove cheese'); + * + * program.cheese + * // => true + * + * --no-cheese + * program.cheese + * // => false + * + * // required argument + * program.option('-C, --chdir ', 'change the working directory'); + * + * --chdir /tmp + * program.chdir + * // => "/tmp" + * + * // optional argument + * program.option('-c, --cheese [type]', 'add cheese [marble]'); + * + * @param {String} flags + * @param {String} description + * @param {Function|Mixed} fn or default + * @param {Mixed} defaultValue + * @return {Command} for chaining + * @api public + */ + +Command.prototype.option = function(flags, description, fn, defaultValue){ + var self = this + , option = new Option(flags, description) + , oname = option.name() + , name = camelcase(oname); + + // default as 3rd arg + if ('function' != typeof fn) defaultValue = fn, fn = null; + + // preassign default value only for --no-*, [optional], or + if (false == option.bool || option.optional || option.required) { + // when --no-* we make sure default is true + if (false == option.bool) defaultValue = true; + // preassign only if we have a default + if (undefined !== defaultValue) self[name] = defaultValue; + } + + // register the option + this.options.push(option); + + // when it's passed assign the value + // and conditionally invoke the callback + this.on(oname, function(val){ + // coercion + if (null !== val && fn) val = fn(val, undefined === self[name] ? defaultValue : self[name]); + + // unassigned or bool + if ('boolean' == typeof self[name] || 'undefined' == typeof self[name]) { + // if no value, bool true, and we have a default, then use it! + if (null == val) { + self[name] = option.bool + ? defaultValue || true + : false; + } else { + self[name] = val; + } + } else if (null !== val) { + // reassign + self[name] = val; + } + }); + + return this; +}; + +/** + * Parse `argv`, settings options and invoking commands when defined. + * + * @param {Array} argv + * @return {Command} for chaining + * @api public + */ + +Command.prototype.parse = function(argv){ + // implicit help + if (this.executables) this.addImplicitHelpCommand(); + + // store raw args + this.rawArgs = argv; + + // guess name + this._name = this._name || basename(argv[1], '.js'); + + // process argv + var parsed = this.parseOptions(this.normalize(argv.slice(2))); + var args = this.args = parsed.args; + + var result = this.parseArgs(this.args, parsed.unknown); + + // executable sub-commands + var name = result.args[0]; + if (this._execs[name]) return this.executeSubCommand(argv, args, parsed.unknown); + + return result; +}; + +/** + * Execute a sub-command executable. + * + * @param {Array} argv + * @param {Array} args + * @param {Array} unknown + * @api private + */ + +Command.prototype.executeSubCommand = function(argv, args, unknown) { + args = args.concat(unknown); + + if (!args.length) this.help(); + if ('help' == args[0] && 1 == args.length) this.help(); + + // --help + if ('help' == args[0]) { + args[0] = args[1]; + args[1] = '--help'; + } + + // executable + var dir = dirname(argv[1]); + var bin = basename(argv[1], '.js') + '-' + args[0]; + + // check for ./ first + var local = path.join(dir, bin); + + // run it + args = args.slice(1); + args.unshift(local); + var proc = spawn('node', args, { stdio: 'inherit', customFds: [0, 1, 2] }); + proc.on('error', function(err){ + if (err.code == "ENOENT") { + console.error('\n %s(1) does not exist, try --help\n', bin); + } else if (err.code == "EACCES") { + console.error('\n %s(1) not executable. try chmod or run with root\n', bin); + } + }); + + this.runningCommand = proc; +}; + +/** + * Normalize `args`, splitting joined short flags. For example + * the arg "-abc" is equivalent to "-a -b -c". + * This also normalizes equal sign and splits "--abc=def" into "--abc def". + * + * @param {Array} args + * @return {Array} + * @api private + */ + +Command.prototype.normalize = function(args){ + var ret = [] + , arg + , lastOpt + , index; + + for (var i = 0, len = args.length; i < len; ++i) { + arg = args[i]; + i > 0 && (lastOpt = this.optionFor(args[i-1])); + + if (lastOpt && lastOpt.required) { + ret.push(arg); + } else if (arg.length > 1 && '-' == arg[0] && '-' != arg[1]) { + arg.slice(1).split('').forEach(function(c){ + ret.push('-' + c); + }); + } else if (/^--/.test(arg) && ~(index = arg.indexOf('='))) { + ret.push(arg.slice(0, index), arg.slice(index + 1)); + } else { + ret.push(arg); + } + } + + return ret; +}; + +/** + * Parse command `args`. + * + * When listener(s) are available those + * callbacks are invoked, otherwise the "*" + * event is emitted and those actions are invoked. + * + * @param {Array} args + * @return {Command} for chaining + * @api private + */ + +Command.prototype.parseArgs = function(args, unknown){ + var cmds = this.commands + , len = cmds.length + , name; + + if (args.length) { + name = args[0]; + if (this.listeners(name).length) { + this.emit(args.shift(), args, unknown); + } else { + this.emit('*', args); + } + } else { + outputHelpIfNecessary(this, unknown); + + // If there were no args and we have unknown options, + // then they are extraneous and we need to error. + if (unknown.length > 0) { + this.unknownOption(unknown[0]); + } + } + + return this; +}; + +/** + * Return an option matching `arg` if any. + * + * @param {String} arg + * @return {Option} + * @api private + */ + +Command.prototype.optionFor = function(arg){ + for (var i = 0, len = this.options.length; i < len; ++i) { + if (this.options[i].is(arg)) { + return this.options[i]; + } + } +}; + +/** + * Parse options from `argv` returning `argv` + * void of these options. + * + * @param {Array} argv + * @return {Array} + * @api public + */ + +Command.prototype.parseOptions = function(argv){ + var args = [] + , len = argv.length + , literal + , option + , arg; + + var unknownOptions = []; + + // parse options + for (var i = 0; i < len; ++i) { + arg = argv[i]; + + // literal args after -- + if ('--' == arg) { + literal = true; + continue; + } + + if (literal) { + args.push(arg); + continue; + } + + // find matching Option + option = this.optionFor(arg); + + // option is defined + if (option) { + // requires arg + if (option.required) { + arg = argv[++i]; + if (null == arg) return this.optionMissingArgument(option); + this.emit(option.name(), arg); + // optional arg + } else if (option.optional) { + arg = argv[i+1]; + if (null == arg || ('-' == arg[0] && '-' != arg)) { + arg = null; + } else { + ++i; + } + this.emit(option.name(), arg); + // bool + } else { + this.emit(option.name()); + } + continue; + } + + // looks like an option + if (arg.length > 1 && '-' == arg[0]) { + unknownOptions.push(arg); + + // If the next argument looks like it might be + // an argument for this option, we pass it on. + // If it isn't, then it'll simply be ignored + if (argv[i+1] && '-' != argv[i+1][0]) { + unknownOptions.push(argv[++i]); + } + continue; + } + + // arg + args.push(arg); + } + + return { args: args, unknown: unknownOptions }; +}; + +/** + * Argument `name` is missing. + * + * @param {String} name + * @api private + */ + +Command.prototype.missingArgument = function(name){ + console.error(); + console.error(" error: missing required argument `%s'", name); + console.error(); + process.exit(1); +}; + +/** + * `Option` is missing an argument, but received `flag` or nothing. + * + * @param {String} option + * @param {String} flag + * @api private + */ + +Command.prototype.optionMissingArgument = function(option, flag){ + console.error(); + if (flag) { + console.error(" error: option `%s' argument missing, got `%s'", option.flags, flag); + } else { + console.error(" error: option `%s' argument missing", option.flags); + } + console.error(); + process.exit(1); +}; + +/** + * Unknown option `flag`. + * + * @param {String} flag + * @api private + */ + +Command.prototype.unknownOption = function(flag){ + console.error(); + console.error(" error: unknown option `%s'", flag); + console.error(); + process.exit(1); +}; + + +/** + * Set the program version to `str`. + * + * This method auto-registers the "-V, --version" flag + * which will print the version number when passed. + * + * @param {String} str + * @param {String} flags + * @return {Command} for chaining + * @api public + */ + +Command.prototype.version = function(str, flags){ + if (0 == arguments.length) return this._version; + this._version = str; + flags = flags || '-V, --version'; + this.option(flags, 'output the version number'); + this.on('version', function(){ + console.log(str); + process.exit(0); + }); + return this; +}; + +/** + * Set the description `str`. + * + * @param {String} str + * @return {String|Command} + * @api public + */ + +Command.prototype.description = function(str){ + if (0 == arguments.length) return this._description; + this._description = str; + return this; +}; + +/** + * Set an alias for the command + * + * @param {String} alias + * @return {String|Command} + * @api public + */ + +Command.prototype.alias = function(alias){ + if (0 == arguments.length) return this._alias; + this._alias = alias; + return this; +}; + +/** + * Set / get the command usage `str`. + * + * @param {String} str + * @return {String|Command} + * @api public + */ + +Command.prototype.usage = function(str){ + var args = this._args.map(function(arg){ + return arg.required + ? '<' + arg.name + '>' + : '[' + arg.name + ']'; + }); + + var usage = '[options' + + (this.commands.length ? '] [command' : '') + + ']' + + (this._args.length ? ' ' + args : ''); + + if (0 == arguments.length) return this._usage || usage; + this._usage = str; + + return this; +}; + +/** + * Return the largest option length. + * + * @return {Number} + * @api private + */ + +Command.prototype.largestOptionLength = function(){ + return this.options.reduce(function(max, option){ + return Math.max(max, option.flags.length); + }, 0); +}; + +/** + * Return help for options. + * + * @return {String} + * @api private + */ + +Command.prototype.optionHelp = function(){ + var width = this.largestOptionLength(); + + // Prepend the help information + return [pad('-h, --help', width) + ' ' + 'output usage information'] + .concat(this.options.map(function(option){ + return pad(option.flags, width) + + ' ' + option.description; + })) + .join('\n'); +}; + +/** + * Return command help documentation. + * + * @return {String} + * @api private + */ + +Command.prototype.commandHelp = function(){ + if (!this.commands.length) return ''; + return [ + '' + , ' Commands:' + , '' + , this.commands.map(function(cmd){ + var args = cmd._args.map(function(arg){ + return arg.required + ? '<' + arg.name + '>' + : '[' + arg.name + ']'; + }).join(' '); + + return cmd._name + + (cmd._alias + ? '|' + cmd._alias + : '') + + (cmd.options.length + ? ' [options]' + : '') + ' ' + args + + (cmd.description() + ? '\n ' + cmd.description() + : '') + + '\n'; + }).join('\n').replace(/^/gm, ' ') + , '' + ].join('\n'); +}; + +/** + * Return program help documentation. + * + * @return {String} + * @api private + */ + +Command.prototype.helpInformation = function(){ + return [ + '' + , ' Usage: ' + this._name + + (this._alias + ? '|' + this._alias + : '') + + ' ' + this.usage() + , '' + this.commandHelp() + , ' Options:' + , '' + , '' + this.optionHelp().replace(/^/gm, ' ') + , '' + , '' + ].join('\n'); +}; + +/** + * Output help information for this command + * + * @api public + */ + +Command.prototype.outputHelp = function(){ + process.stdout.write(this.helpInformation()); + this.emit('--help'); +}; + +/** + * Output help information and exit. + * + * @api public + */ + +Command.prototype.help = function(){ + this.outputHelp(); + process.exit(); +}; + +/** + * Camel-case the given `flag` + * + * @param {String} flag + * @return {String} + * @api private + */ + +function camelcase(flag) { + return flag.split('-').reduce(function(str, word){ + return str + word[0].toUpperCase() + word.slice(1); + }); +} + +/** + * Pad `str` to `width`. + * + * @param {String} str + * @param {Number} width + * @return {String} + * @api private + */ + +function pad(str, width) { + var len = Math.max(0, width - str.length); + return str + Array(len + 1).join(' '); +} + +/** + * Output help information if necessary + * + * @param {Command} command to output help for + * @param {Array} array of options to search for -h or --help + * @api private + */ + +function outputHelpIfNecessary(cmd, options) { + options = options || []; + for (var i = 0; i < options.length; i++) { + if (options[i] == '--help' || options[i] == '-h') { + cmd.outputHelp(); + process.exit(0); + } + } +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/commander/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/commander/package.json new file mode 100644 index 00000000..63446614 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/commander/package.json @@ -0,0 +1,97 @@ +{ + "_args": [ + [ + "commander@2.3.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha" + ] + ], + "_from": "commander@2.3.0", + "_id": "commander@2.3.0", + "_inCache": true, + "_installable": true, + "_location": "/mocha/commander", + "_npmUser": { + "email": "rkoutnik@gmail.com", + "name": "somekittens" + }, + "_npmVersion": "1.4.21", + "_phantomChildren": {}, + "_requested": { + "name": "commander", + "raw": "commander@2.3.0", + "rawSpec": "2.3.0", + "scope": null, + "spec": "2.3.0", + "type": "version" + }, + "_requiredBy": [ + "/mocha" + ], + "_resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", + "_shasum": "fd430e889832ec353b9acd1de217c11cb3eef873", + "_shrinkwrap": null, + "_spec": "commander@2.3.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha", + "author": { + "email": "tj@vision-media.ca", + "name": "TJ Holowaychuk" + }, + "bugs": { + "url": "https://github.com/visionmedia/commander.js/issues" + }, + "dependencies": {}, + "description": "the complete solution for node.js command-line programs", + "devDependencies": { + "should": ">= 0.0.1" + }, + "directories": {}, + "dist": { + "shasum": "fd430e889832ec353b9acd1de217c11cb3eef873", + "tarball": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz" + }, + "engines": { + "node": ">= 0.6.x" + }, + "files": [ + "index.js" + ], + "gitHead": "7e9f407ec03d4371a478c2fe417db4998ecb6169", + "homepage": "https://github.com/visionmedia/commander.js", + "keywords": [ + "command", + "option", + "parser", + "prompt", + "stdin" + ], + "main": "index", + "maintainers": [ + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + }, + { + "email": "rkoutnik@gmail.com", + "name": "somekittens" + }, + { + "email": "zhiyelee@gmail.com", + "name": "zhiyelee" + }, + { + "email": "thethomaseffect@gmail.com", + "name": "thethomaseffect" + } + ], + "name": "commander", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/visionmedia/commander.js.git" + }, + "scripts": { + "test": "make test" + }, + "version": "2.3.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/.npmignore new file mode 100644 index 00000000..2af4b71c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/.npmignore @@ -0,0 +1,2 @@ +.*.swp +test/a/ diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/.travis.yml new file mode 100644 index 00000000..baa0031d --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/.travis.yml @@ -0,0 +1,3 @@ +language: node_js +node_js: + - 0.8 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/LICENSE new file mode 100644 index 00000000..0c44ae71 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) Isaac Z. Schlueter ("Author") +All rights reserved. + +The BSD License + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/README.md new file mode 100644 index 00000000..cc691645 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/README.md @@ -0,0 +1,250 @@ +# Glob + +Match files using the patterns the shell uses, like stars and stuff. + +This is a glob implementation in JavaScript. It uses the `minimatch` +library to do its matching. + +## Attention: node-glob users! + +The API has changed dramatically between 2.x and 3.x. This library is +now 100% JavaScript, and the integer flags have been replaced with an +options object. + +Also, there's an event emitter class, proper tests, and all the other +things you've come to expect from node modules. + +And best of all, no compilation! + +## Usage + +```javascript +var glob = require("glob") + +// options is optional +glob("**/*.js", options, function (er, files) { + // files is an array of filenames. + // If the `nonull` option is set, and nothing + // was found, then files is ["**/*.js"] + // er is an error object or null. +}) +``` + +## Features + +Please see the [minimatch +documentation](https://github.com/isaacs/minimatch) for more details. + +Supports these glob features: + +* Brace Expansion +* Extended glob matching +* "Globstar" `**` matching + +See: + +* `man sh` +* `man bash` +* `man 3 fnmatch` +* `man 5 gitignore` +* [minimatch documentation](https://github.com/isaacs/minimatch) + +## glob(pattern, [options], cb) + +* `pattern` {String} Pattern to be matched +* `options` {Object} +* `cb` {Function} + * `err` {Error | null} + * `matches` {Array} filenames found matching the pattern + +Perform an asynchronous glob search. + +## glob.sync(pattern, [options]) + +* `pattern` {String} Pattern to be matched +* `options` {Object} +* return: {Array} filenames found matching the pattern + +Perform a synchronous glob search. + +## Class: glob.Glob + +Create a Glob object by instanting the `glob.Glob` class. + +```javascript +var Glob = require("glob").Glob +var mg = new Glob(pattern, options, cb) +``` + +It's an EventEmitter, and starts walking the filesystem to find matches +immediately. + +### new glob.Glob(pattern, [options], [cb]) + +* `pattern` {String} pattern to search for +* `options` {Object} +* `cb` {Function} Called when an error occurs, or matches are found + * `err` {Error | null} + * `matches` {Array} filenames found matching the pattern + +Note that if the `sync` flag is set in the options, then matches will +be immediately available on the `g.found` member. + +### Properties + +* `minimatch` The minimatch object that the glob uses. +* `options` The options object passed in. +* `error` The error encountered. When an error is encountered, the + glob object is in an undefined state, and should be discarded. +* `aborted` Boolean which is set to true when calling `abort()`. There + is no way at this time to continue a glob search after aborting, but + you can re-use the statCache to avoid having to duplicate syscalls. +* `statCache` Collection of all the stat results the glob search + performed. +* `cache` Convenience object. Each field has the following possible + values: + * `false` - Path does not exist + * `true` - Path exists + * `1` - Path exists, and is not a directory + * `2` - Path exists, and is a directory + * `[file, entries, ...]` - Path exists, is a directory, and the + array value is the results of `fs.readdir` + +### Events + +* `end` When the matching is finished, this is emitted with all the + matches found. If the `nonull` option is set, and no match was found, + then the `matches` list contains the original pattern. The matches + are sorted, unless the `nosort` flag is set. +* `match` Every time a match is found, this is emitted with the matched. +* `error` Emitted when an unexpected error is encountered, or whenever + any fs error occurs if `options.strict` is set. +* `abort` When `abort()` is called, this event is raised. + +### Methods + +* `abort` Stop the search. + +### Options + +All the options that can be passed to Minimatch can also be passed to +Glob to change pattern matching behavior. Also, some have been added, +or have glob-specific ramifications. + +All options are false by default, unless otherwise noted. + +All options are added to the glob object, as well. + +* `cwd` The current working directory in which to search. Defaults + to `process.cwd()`. +* `root` The place where patterns starting with `/` will be mounted + onto. Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix + systems, and `C:\` or some such on Windows.) +* `dot` Include `.dot` files in normal matches and `globstar` matches. + Note that an explicit dot in a portion of the pattern will always + match dot files. +* `nomount` By default, a pattern starting with a forward-slash will be + "mounted" onto the root setting, so that a valid filesystem path is + returned. Set this flag to disable that behavior. +* `mark` Add a `/` character to directory matches. Note that this + requires additional stat calls. +* `nosort` Don't sort the results. +* `stat` Set to true to stat *all* results. This reduces performance + somewhat, and is completely unnecessary, unless `readdir` is presumed + to be an untrustworthy indicator of file existence. It will cause + ELOOP to be triggered one level sooner in the case of cyclical + symbolic links. +* `silent` When an unusual error is encountered + when attempting to read a directory, a warning will be printed to + stderr. Set the `silent` option to true to suppress these warnings. +* `strict` When an unusual error is encountered + when attempting to read a directory, the process will just continue on + in search of other matches. Set the `strict` option to raise an error + in these cases. +* `cache` See `cache` property above. Pass in a previously generated + cache object to save some fs calls. +* `statCache` A cache of results of filesystem information, to prevent + unnecessary stat calls. While it should not normally be necessary to + set this, you may pass the statCache from one glob() call to the + options object of another, if you know that the filesystem will not + change between calls. (See "Race Conditions" below.) +* `sync` Perform a synchronous glob search. +* `nounique` In some cases, brace-expanded patterns can result in the + same file showing up multiple times in the result set. By default, + this implementation prevents duplicates in the result set. + Set this flag to disable that behavior. +* `nonull` Set to never return an empty set, instead returning a set + containing the pattern itself. This is the default in glob(3). +* `nocase` Perform a case-insensitive match. Note that case-insensitive + filesystems will sometimes result in glob returning results that are + case-insensitively matched anyway, since readdir and stat will not + raise an error. +* `debug` Set to enable debug logging in minimatch and glob. +* `globDebug` Set to enable debug logging in glob, but not minimatch. + +## Comparisons to other fnmatch/glob implementations + +While strict compliance with the existing standards is a worthwhile +goal, some discrepancies exist between node-glob and other +implementations, and are intentional. + +If the pattern starts with a `!` character, then it is negated. Set the +`nonegate` flag to suppress this behavior, and treat leading `!` +characters normally. This is perhaps relevant if you wish to start the +pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` +characters at the start of a pattern will negate the pattern multiple +times. + +If a pattern starts with `#`, then it is treated as a comment, and +will not match anything. Use `\#` to match a literal `#` at the +start of a line, or set the `nocomment` flag to suppress this behavior. + +The double-star character `**` is supported by default, unless the +`noglobstar` flag is set. This is supported in the manner of bsdglob +and bash 4.1, where `**` only has special significance if it is the only +thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but +`a/**b` will not. + +If an escaped pattern has no matches, and the `nonull` flag is set, +then glob returns the pattern as-provided, rather than +interpreting the character escapes. For example, +`glob.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than +`"*a?"`. This is akin to setting the `nullglob` option in bash, except +that it does not resolve escaped pattern characters. + +If brace expansion is not disabled, then it is performed before any +other interpretation of the glob pattern. Thus, a pattern like +`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded +**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are +checked for validity. Since those two are valid, matching proceeds. + +## Windows + +**Please only use forward-slashes in glob expressions.** + +Though windows uses either `/` or `\` as its path separator, only `/` +characters are used by this glob implementation. You must use +forward-slashes **only** in glob expressions. Back-slashes will always +be interpreted as escape characters, not path separators. + +Results from absolute patterns such as `/foo/*` are mounted onto the +root setting using `path.join`. On windows, this will by default result +in `/foo/*` matching `C:\foo\bar.txt`. + +## Race Conditions + +Glob searching, by its very nature, is susceptible to race conditions, +since it relies on directory walking and such. + +As a result, it is possible that a file that exists when glob looks for +it may have been deleted or modified by the time it returns the result. + +As part of its internal implementation, this program caches all stat +and readdir calls that it makes, in order to cut down on system +overhead. However, this also makes it even more susceptible to races, +especially if the cache or statCache objects are reused between glob +calls. + +Users are thus advised not to use a glob result as a guarantee of +filesystem state in the face of rapid changes. For the vast majority +of operations, this is never a problem. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/examples/g.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/examples/g.js new file mode 100644 index 00000000..be122df0 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/examples/g.js @@ -0,0 +1,9 @@ +var Glob = require("../").Glob + +var pattern = "test/a/**/[cg]/../[cg]" +console.log(pattern) + +var mg = new Glob(pattern, {mark: true, sync:true}, function (er, matches) { + console.log("matches", matches) +}) +console.log("after") diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/examples/usr-local.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/examples/usr-local.js new file mode 100644 index 00000000..327a425e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/examples/usr-local.js @@ -0,0 +1,9 @@ +var Glob = require("../").Glob + +var pattern = "{./*/*,/*,/usr/local/*}" +console.log(pattern) + +var mg = new Glob(pattern, {mark: true}, function (er, matches) { + console.log("matches", matches) +}) +console.log("after") diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/glob.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/glob.js new file mode 100644 index 00000000..f0118a4f --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/glob.js @@ -0,0 +1,675 @@ +// Approach: +// +// 1. Get the minimatch set +// 2. For each pattern in the set, PROCESS(pattern) +// 3. Store matches per-set, then uniq them +// +// PROCESS(pattern) +// Get the first [n] items from pattern that are all strings +// Join these together. This is PREFIX. +// If there is no more remaining, then stat(PREFIX) and +// add to matches if it succeeds. END. +// readdir(PREFIX) as ENTRIES +// If fails, END +// If pattern[n] is GLOBSTAR +// // handle the case where the globstar match is empty +// // by pruning it out, and testing the resulting pattern +// PROCESS(pattern[0..n] + pattern[n+1 .. $]) +// // handle other cases. +// for ENTRY in ENTRIES (not dotfiles) +// // attach globstar + tail onto the entry +// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $]) +// +// else // not globstar +// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) +// Test ENTRY against pattern[n] +// If fails, continue +// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) +// +// Caveat: +// Cache all stats and readdirs results to minimize syscall. Since all +// we ever care about is existence and directory-ness, we can just keep +// `true` for files, and [children,...] for directories, or `false` for +// things that don't exist. + + + +module.exports = glob + +var fs = require("graceful-fs") +, minimatch = require("minimatch") +, Minimatch = minimatch.Minimatch +, inherits = require("inherits") +, EE = require("events").EventEmitter +, path = require("path") +, isDir = {} +, assert = require("assert").ok + +function glob (pattern, options, cb) { + if (typeof options === "function") cb = options, options = {} + if (!options) options = {} + + if (typeof options === "number") { + deprecated() + return + } + + var g = new Glob(pattern, options, cb) + return g.sync ? g.found : g +} + +glob.fnmatch = deprecated + +function deprecated () { + throw new Error("glob's interface has changed. Please see the docs.") +} + +glob.sync = globSync +function globSync (pattern, options) { + if (typeof options === "number") { + deprecated() + return + } + + options = options || {} + options.sync = true + return glob(pattern, options) +} + + +glob.Glob = Glob +inherits(Glob, EE) +function Glob (pattern, options, cb) { + if (!(this instanceof Glob)) { + return new Glob(pattern, options, cb) + } + + if (typeof cb === "function") { + this.on("error", cb) + this.on("end", function (matches) { + cb(null, matches) + }) + } + + options = options || {} + + this.EOF = {} + this._emitQueue = [] + + this.maxDepth = options.maxDepth || 1000 + this.maxLength = options.maxLength || Infinity + this.cache = options.cache || {} + this.statCache = options.statCache || {} + + this.changedCwd = false + var cwd = process.cwd() + if (!options.hasOwnProperty("cwd")) this.cwd = cwd + else { + this.cwd = options.cwd + this.changedCwd = path.resolve(options.cwd) !== cwd + } + + this.root = options.root || path.resolve(this.cwd, "/") + this.root = path.resolve(this.root) + if (process.platform === "win32") + this.root = this.root.replace(/\\/g, "/") + + this.nomount = !!options.nomount + + if (!pattern) { + throw new Error("must provide pattern") + } + + // base-matching: just use globstar for that. + if (options.matchBase && -1 === pattern.indexOf("/")) { + if (options.noglobstar) { + throw new Error("base matching requires globstar") + } + pattern = "**/" + pattern + } + + this.strict = options.strict !== false + this.dot = !!options.dot + this.mark = !!options.mark + this.sync = !!options.sync + this.nounique = !!options.nounique + this.nonull = !!options.nonull + this.nosort = !!options.nosort + this.nocase = !!options.nocase + this.stat = !!options.stat + + this.debug = !!options.debug || !!options.globDebug + if (this.debug) + this.log = console.error + + this.silent = !!options.silent + + var mm = this.minimatch = new Minimatch(pattern, options) + this.options = mm.options + pattern = this.pattern = mm.pattern + + this.error = null + this.aborted = false + + // list of all the patterns that ** has resolved do, so + // we can avoid visiting multiple times. + this._globstars = {} + + EE.call(this) + + // process each pattern in the minimatch set + var n = this.minimatch.set.length + + // The matches are stored as {: true,...} so that + // duplicates are automagically pruned. + // Later, we do an Object.keys() on these. + // Keep them as a list so we can fill in when nonull is set. + this.matches = new Array(n) + + this.minimatch.set.forEach(iterator.bind(this)) + function iterator (pattern, i, set) { + this._process(pattern, 0, i, function (er) { + if (er) this.emit("error", er) + if (-- n <= 0) this._finish() + }) + } +} + +Glob.prototype.log = function () {} + +Glob.prototype._finish = function () { + assert(this instanceof Glob) + + var nou = this.nounique + , all = nou ? [] : {} + + for (var i = 0, l = this.matches.length; i < l; i ++) { + var matches = this.matches[i] + this.log("matches[%d] =", i, matches) + // do like the shell, and spit out the literal glob + if (!matches) { + if (this.nonull) { + var literal = this.minimatch.globSet[i] + if (nou) all.push(literal) + else all[literal] = true + } + } else { + // had matches + var m = Object.keys(matches) + if (nou) all.push.apply(all, m) + else m.forEach(function (m) { + all[m] = true + }) + } + } + + if (!nou) all = Object.keys(all) + + if (!this.nosort) { + all = all.sort(this.nocase ? alphasorti : alphasort) + } + + if (this.mark) { + // at *some* point we statted all of these + all = all.map(function (m) { + var sc = this.cache[m] + if (!sc) + return m + var isDir = (Array.isArray(sc) || sc === 2) + if (isDir && m.slice(-1) !== "/") { + return m + "/" + } + if (!isDir && m.slice(-1) === "/") { + return m.replace(/\/+$/, "") + } + return m + }, this) + } + + this.log("emitting end", all) + + this.EOF = this.found = all + this.emitMatch(this.EOF) +} + +function alphasorti (a, b) { + a = a.toLowerCase() + b = b.toLowerCase() + return alphasort(a, b) +} + +function alphasort (a, b) { + return a > b ? 1 : a < b ? -1 : 0 +} + +Glob.prototype.abort = function () { + this.aborted = true + this.emit("abort") +} + +Glob.prototype.pause = function () { + if (this.paused) return + if (this.sync) + this.emit("error", new Error("Can't pause/resume sync glob")) + this.paused = true + this.emit("pause") +} + +Glob.prototype.resume = function () { + if (!this.paused) return + if (this.sync) + this.emit("error", new Error("Can't pause/resume sync glob")) + this.paused = false + this.emit("resume") + this._processEmitQueue() + //process.nextTick(this.emit.bind(this, "resume")) +} + +Glob.prototype.emitMatch = function (m) { + if (!this.stat || this.statCache[m] || m === this.EOF) { + this._emitQueue.push(m) + this._processEmitQueue() + } else { + this._stat(m, function(exists, isDir) { + if (exists) { + this._emitQueue.push(m) + this._processEmitQueue() + } + }) + } +} + +Glob.prototype._processEmitQueue = function (m) { + while (!this._processingEmitQueue && + !this.paused) { + this._processingEmitQueue = true + var m = this._emitQueue.shift() + if (!m) { + this._processingEmitQueue = false + break + } + + this.log('emit!', m === this.EOF ? "end" : "match") + + this.emit(m === this.EOF ? "end" : "match", m) + this._processingEmitQueue = false + } +} + +Glob.prototype._process = function (pattern, depth, index, cb_) { + assert(this instanceof Glob) + + var cb = function cb (er, res) { + assert(this instanceof Glob) + if (this.paused) { + if (!this._processQueue) { + this._processQueue = [] + this.once("resume", function () { + var q = this._processQueue + this._processQueue = null + q.forEach(function (cb) { cb() }) + }) + } + this._processQueue.push(cb_.bind(this, er, res)) + } else { + cb_.call(this, er, res) + } + }.bind(this) + + if (this.aborted) return cb() + + if (depth > this.maxDepth) return cb() + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === "string") { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // see if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + prefix = pattern.join("/") + this._stat(prefix, function (exists, isDir) { + // either it's there, or it isn't. + // nothing more to do, either way. + if (exists) { + if (prefix && isAbsolute(prefix) && !this.nomount) { + if (prefix.charAt(0) === "/") { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + } + } + + if (process.platform === "win32") + prefix = prefix.replace(/\\/g, "/") + + this.matches[index] = this.matches[index] || {} + this.matches[index][prefix] = true + this.emitMatch(prefix) + } + return cb() + }) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's "absolute" like /foo/bar, + // or "relative" like "../baz" + prefix = pattern.slice(0, n) + prefix = prefix.join("/") + break + } + + // get the list of entries. + var read + if (prefix === null) read = "." + else if (isAbsolute(prefix) || isAbsolute(pattern.join("/"))) { + if (!prefix || !isAbsolute(prefix)) { + prefix = path.join("/", prefix) + } + read = prefix = path.resolve(prefix) + + // if (process.platform === "win32") + // read = prefix = prefix.replace(/^[a-zA-Z]:|\\/g, "/") + + this.log('absolute: ', prefix, this.root, pattern, read) + } else { + read = prefix + } + + this.log('readdir(%j)', read, this.cwd, this.root) + + return this._readdir(read, function (er, entries) { + if (er) { + // not a directory! + // this means that, whatever else comes after this, it can never match + return cb() + } + + // globstar is special + if (pattern[n] === minimatch.GLOBSTAR) { + // test without the globstar, and with every child both below + // and replacing the globstar. + var s = [ pattern.slice(0, n).concat(pattern.slice(n + 1)) ] + entries.forEach(function (e) { + if (e.charAt(0) === "." && !this.dot) return + // instead of the globstar + s.push(pattern.slice(0, n).concat(e).concat(pattern.slice(n + 1))) + // below the globstar + s.push(pattern.slice(0, n).concat(e).concat(pattern.slice(n))) + }, this) + + s = s.filter(function (pattern) { + var key = gsKey(pattern) + var seen = !this._globstars[key] + this._globstars[key] = true + return seen + }, this) + + if (!s.length) + return cb() + + // now asyncForEach over this + var l = s.length + , errState = null + s.forEach(function (gsPattern) { + this._process(gsPattern, depth + 1, index, function (er) { + if (errState) return + if (er) return cb(errState = er) + if (--l <= 0) return cb() + }) + }, this) + + return + } + + // not a globstar + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = pattern[n] + var rawGlob = pattern[n]._glob + , dotOk = this.dot || rawGlob.charAt(0) === "." + + entries = entries.filter(function (e) { + return (e.charAt(0) !== "." || dotOk) && + e.match(pattern[n]) + }) + + // If n === pattern.length - 1, then there's no need for the extra stat + // *unless* the user has specified "mark" or "stat" explicitly. + // We know that they exist, since the readdir returned them. + if (n === pattern.length - 1 && + !this.mark && + !this.stat) { + entries.forEach(function (e) { + if (prefix) { + if (prefix !== "/") e = prefix + "/" + e + else e = prefix + e + } + if (e.charAt(0) === "/" && !this.nomount) { + e = path.join(this.root, e) + } + + if (process.platform === "win32") + e = e.replace(/\\/g, "/") + + this.matches[index] = this.matches[index] || {} + this.matches[index][e] = true + this.emitMatch(e) + }, this) + return cb.call(this) + } + + + // now test all the remaining entries as stand-ins for that part + // of the pattern. + var l = entries.length + , errState = null + if (l === 0) return cb() // no matches possible + entries.forEach(function (e) { + var p = pattern.slice(0, n).concat(e).concat(pattern.slice(n + 1)) + this._process(p, depth + 1, index, function (er) { + if (errState) return + if (er) return cb(errState = er) + if (--l === 0) return cb.call(this) + }) + }, this) + }) + +} + +function gsKey (pattern) { + return '**' + pattern.map(function (p) { + return (p === minimatch.GLOBSTAR) ? '**' : (''+p) + }).join('/') +} + +Glob.prototype._stat = function (f, cb) { + assert(this instanceof Glob) + var abs = f + if (f.charAt(0) === "/") { + abs = path.join(this.root, f) + } else if (this.changedCwd) { + abs = path.resolve(this.cwd, f) + } + + if (f.length > this.maxLength) { + var er = new Error("Path name too long") + er.code = "ENAMETOOLONG" + er.path = f + return this._afterStat(f, abs, cb, er) + } + + this.log('stat', [this.cwd, f, '=', abs]) + + if (!this.stat && this.cache.hasOwnProperty(f)) { + var exists = this.cache[f] + , isDir = exists && (Array.isArray(exists) || exists === 2) + if (this.sync) return cb.call(this, !!exists, isDir) + return process.nextTick(cb.bind(this, !!exists, isDir)) + } + + var stat = this.statCache[abs] + if (this.sync || stat) { + var er + try { + stat = fs.statSync(abs) + } catch (e) { + er = e + } + this._afterStat(f, abs, cb, er, stat) + } else { + fs.stat(abs, this._afterStat.bind(this, f, abs, cb)) + } +} + +Glob.prototype._afterStat = function (f, abs, cb, er, stat) { + var exists + assert(this instanceof Glob) + + if (abs.slice(-1) === "/" && stat && !stat.isDirectory()) { + this.log("should be ENOTDIR, fake it") + + er = new Error("ENOTDIR, not a directory '" + abs + "'") + er.path = abs + er.code = "ENOTDIR" + stat = null + } + + var emit = !this.statCache[abs] + this.statCache[abs] = stat + + if (er || !stat) { + exists = false + } else { + exists = stat.isDirectory() ? 2 : 1 + if (emit) + this.emit('stat', f, stat) + } + this.cache[f] = this.cache[f] || exists + cb.call(this, !!exists, exists === 2) +} + +Glob.prototype._readdir = function (f, cb) { + assert(this instanceof Glob) + var abs = f + if (f.charAt(0) === "/") { + abs = path.join(this.root, f) + } else if (isAbsolute(f)) { + abs = f + } else if (this.changedCwd) { + abs = path.resolve(this.cwd, f) + } + + if (f.length > this.maxLength) { + var er = new Error("Path name too long") + er.code = "ENAMETOOLONG" + er.path = f + return this._afterReaddir(f, abs, cb, er) + } + + this.log('readdir', [this.cwd, f, abs]) + if (this.cache.hasOwnProperty(f)) { + var c = this.cache[f] + if (Array.isArray(c)) { + if (this.sync) return cb.call(this, null, c) + return process.nextTick(cb.bind(this, null, c)) + } + + if (!c || c === 1) { + // either ENOENT or ENOTDIR + var code = c ? "ENOTDIR" : "ENOENT" + , er = new Error((c ? "Not a directory" : "Not found") + ": " + f) + er.path = f + er.code = code + this.log(f, er) + if (this.sync) return cb.call(this, er) + return process.nextTick(cb.bind(this, er)) + } + + // at this point, c === 2, meaning it's a dir, but we haven't + // had to read it yet, or c === true, meaning it's *something* + // but we don't have any idea what. Need to read it, either way. + } + + if (this.sync) { + var er, entries + try { + entries = fs.readdirSync(abs) + } catch (e) { + er = e + } + return this._afterReaddir(f, abs, cb, er, entries) + } + + fs.readdir(abs, this._afterReaddir.bind(this, f, abs, cb)) +} + +Glob.prototype._afterReaddir = function (f, abs, cb, er, entries) { + assert(this instanceof Glob) + if (entries && !er) { + this.cache[f] = entries + // if we haven't asked to stat everything for suresies, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. This also gets us one step + // further into ELOOP territory. + if (!this.mark && !this.stat) { + entries.forEach(function (e) { + if (f === "/") e = f + e + else e = f + "/" + e + this.cache[e] = true + }, this) + } + + return cb.call(this, er, entries) + } + + // now handle errors, and cache the information + if (er) switch (er.code) { + case "ENOTDIR": // totally normal. means it *does* exist. + this.cache[f] = 1 + return cb.call(this, er) + case "ENOENT": // not terribly unusual + case "ELOOP": + case "ENAMETOOLONG": + case "UNKNOWN": + this.cache[f] = false + return cb.call(this, er) + default: // some unusual error. Treat as failure. + this.cache[f] = false + if (this.strict) this.emit("error", er) + if (!this.silent) console.error("glob error", er) + return cb.call(this, er) + } +} + +var isAbsolute = process.platform === "win32" ? absWin : absUnix + +function absWin (p) { + if (absUnix(p)) return true + // pull off the device/UNC bit from a windows path. + // from node's lib/path.js + var splitDeviceRe = + /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/ + , result = splitDeviceRe.exec(p) + , device = result[1] || '' + , isUnc = device && device.charAt(1) !== ':' + , isAbsolute = !!result[2] || isUnc // UNC paths are always absolute + + return isAbsolute +} + +function absUnix (p) { + return p.charAt(0) === "/" || p === "" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/package.json new file mode 100644 index 00000000..580408f3 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/package.json @@ -0,0 +1,82 @@ +{ + "_args": [ + [ + "glob@3.2.3", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha" + ] + ], + "_from": "glob@3.2.3", + "_id": "glob@3.2.3", + "_inCache": true, + "_installable": true, + "_location": "/mocha/glob", + "_npmUser": { + "email": "i@izs.me", + "name": "isaacs" + }, + "_npmVersion": "1.3.2", + "_phantomChildren": {}, + "_requested": { + "name": "glob", + "raw": "glob@3.2.3", + "rawSpec": "3.2.3", + "scope": null, + "spec": "3.2.3", + "type": "version" + }, + "_requiredBy": [ + "/mocha" + ], + "_resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "_shasum": "e313eeb249c7affaa5c475286b0e115b59839467", + "_shrinkwrap": null, + "_spec": "glob@3.2.3", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha", + "author": { + "email": "i@izs.me", + "name": "Isaac Z. Schlueter", + "url": "http://blog.izs.me/" + }, + "bugs": { + "url": "https://github.com/isaacs/node-glob/issues" + }, + "dependencies": { + "graceful-fs": "~2.0.0", + "inherits": "2", + "minimatch": "~0.2.11" + }, + "description": "a little globber", + "devDependencies": { + "mkdirp": "0", + "rimraf": "1", + "tap": "~0.4.0" + }, + "directories": {}, + "dist": { + "shasum": "e313eeb249c7affaa5c475286b0e115b59839467", + "tarball": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz" + }, + "engines": { + "node": "*" + }, + "homepage": "https://github.com/isaacs/node-glob#readme", + "license": "BSD", + "main": "glob.js", + "maintainers": [ + { + "email": "i@izs.me", + "name": "isaacs" + } + ], + "name": "glob", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/node-glob.git" + }, + "scripts": { + "test": "tap test/*.js" + }, + "version": "3.2.3" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/00-setup.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/00-setup.js new file mode 100644 index 00000000..245afafd --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/00-setup.js @@ -0,0 +1,176 @@ +// just a little pre-run script to set up the fixtures. +// zz-finish cleans it up + +var mkdirp = require("mkdirp") +var path = require("path") +var i = 0 +var tap = require("tap") +var fs = require("fs") +var rimraf = require("rimraf") + +var files = +[ "a/.abcdef/x/y/z/a" +, "a/abcdef/g/h" +, "a/abcfed/g/h" +, "a/b/c/d" +, "a/bc/e/f" +, "a/c/d/c/b" +, "a/cb/e/f" +] + +var symlinkTo = path.resolve(__dirname, "a/symlink/a/b/c") +var symlinkFrom = "../.." + +files = files.map(function (f) { + return path.resolve(__dirname, f) +}) + +tap.test("remove fixtures", function (t) { + rimraf(path.resolve(__dirname, "a"), function (er) { + t.ifError(er, "remove fixtures") + t.end() + }) +}) + +files.forEach(function (f) { + tap.test(f, function (t) { + var d = path.dirname(f) + mkdirp(d, 0755, function (er) { + if (er) { + t.fail(er) + return t.bailout() + } + fs.writeFile(f, "i like tests", function (er) { + t.ifError(er, "make file") + t.end() + }) + }) + }) +}) + +if (process.platform !== "win32") { + tap.test("symlinky", function (t) { + var d = path.dirname(symlinkTo) + console.error("mkdirp", d) + mkdirp(d, 0755, function (er) { + t.ifError(er) + fs.symlink(symlinkFrom, symlinkTo, "dir", function (er) { + t.ifError(er, "make symlink") + t.end() + }) + }) + }) +} + +;["foo","bar","baz","asdf","quux","qwer","rewq"].forEach(function (w) { + w = "/tmp/glob-test/" + w + tap.test("create " + w, function (t) { + mkdirp(w, function (er) { + if (er) + throw er + t.pass(w) + t.end() + }) + }) +}) + + +// generate the bash pattern test-fixtures if possible +if (process.platform === "win32" || !process.env.TEST_REGEN) { + console.error("Windows, or TEST_REGEN unset. Using cached fixtures.") + return +} + +var spawn = require("child_process").spawn; +var globs = + // put more patterns here. + // anything that would be directly in / should be in /tmp/glob-test + ["test/a/*/+(c|g)/./d" + ,"test/a/**/[cg]/../[cg]" + ,"test/a/{b,c,d,e,f}/**/g" + ,"test/a/b/**" + ,"test/**/g" + ,"test/a/abc{fed,def}/g/h" + ,"test/a/abc{fed/g,def}/**/" + ,"test/a/abc{fed/g,def}/**///**/" + ,"test/**/a/**/" + ,"test/+(a|b|c)/a{/,bc*}/**" + ,"test/*/*/*/f" + ,"test/**/f" + ,"test/a/symlink/a/b/c/a/b/c/a/b/c//a/b/c////a/b/c/**/b/c/**" + ,"{./*/*,/tmp/glob-test/*}" + ,"{/tmp/glob-test/*,*}" // evil owl face! how you taunt me! + ,"test/a/!(symlink)/**" + ] +var bashOutput = {} +var fs = require("fs") + +globs.forEach(function (pattern) { + tap.test("generate fixture " + pattern, function (t) { + var cmd = "shopt -s globstar && " + + "shopt -s extglob && " + + "shopt -s nullglob && " + + // "shopt >&2; " + + "eval \'for i in " + pattern + "; do echo $i; done\'" + var cp = spawn("bash", ["-c", cmd], { cwd: path.dirname(__dirname) }) + var out = [] + cp.stdout.on("data", function (c) { + out.push(c) + }) + cp.stderr.pipe(process.stderr) + cp.on("close", function (code) { + out = flatten(out) + if (!out) + out = [] + else + out = cleanResults(out.split(/\r*\n/)) + + bashOutput[pattern] = out + t.notOk(code, "bash test should finish nicely") + t.end() + }) + }) +}) + +tap.test("save fixtures", function (t) { + var fname = path.resolve(__dirname, "bash-results.json") + var data = JSON.stringify(bashOutput, null, 2) + "\n" + fs.writeFile(fname, data, function (er) { + t.ifError(er) + t.end() + }) +}) + +function cleanResults (m) { + // normalize discrepancies in ordering, duplication, + // and ending slashes. + return m.map(function (m) { + return m.replace(/\/+/g, "/").replace(/\/$/, "") + }).sort(alphasort).reduce(function (set, f) { + if (f !== set[set.length - 1]) set.push(f) + return set + }, []).sort(alphasort).map(function (f) { + // de-windows + return (process.platform !== 'win32') ? f + : f.replace(/^[a-zA-Z]:\\\\/, '/').replace(/\\/g, '/') + }) +} + +function flatten (chunks) { + var s = 0 + chunks.forEach(function (c) { s += c.length }) + var out = new Buffer(s) + s = 0 + chunks.forEach(function (c) { + c.copy(out, s) + s += c.length + }) + + return out.toString().trim() +} + +function alphasort (a, b) { + a = a.toLowerCase() + b = b.toLowerCase() + return a > b ? 1 : a < b ? -1 : 0 +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/bash-comparison.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/bash-comparison.js new file mode 100644 index 00000000..239ed1a9 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/bash-comparison.js @@ -0,0 +1,63 @@ +// basic test +// show that it does the same thing by default as the shell. +var tap = require("tap") +, child_process = require("child_process") +, bashResults = require("./bash-results.json") +, globs = Object.keys(bashResults) +, glob = require("../") +, path = require("path") + +// run from the root of the project +// this is usually where you're at anyway, but be sure. +process.chdir(path.resolve(__dirname, "..")) + +function alphasort (a, b) { + a = a.toLowerCase() + b = b.toLowerCase() + return a > b ? 1 : a < b ? -1 : 0 +} + +globs.forEach(function (pattern) { + var expect = bashResults[pattern] + // anything regarding the symlink thing will fail on windows, so just skip it + if (process.platform === "win32" && + expect.some(function (m) { + return /\/symlink\//.test(m) + })) + return + + tap.test(pattern, function (t) { + glob(pattern, function (er, matches) { + if (er) + throw er + + // sort and unmark, just to match the shell results + matches = cleanResults(matches) + + t.deepEqual(matches, expect, pattern) + t.end() + }) + }) + + tap.test(pattern + " sync", function (t) { + var matches = cleanResults(glob.sync(pattern)) + + t.deepEqual(matches, expect, "should match shell") + t.end() + }) +}) + +function cleanResults (m) { + // normalize discrepancies in ordering, duplication, + // and ending slashes. + return m.map(function (m) { + return m.replace(/\/+/g, "/").replace(/\/$/, "") + }).sort(alphasort).reduce(function (set, f) { + if (f !== set[set.length - 1]) set.push(f) + return set + }, []).sort(alphasort).map(function (f) { + // de-windows + return (process.platform !== 'win32') ? f + : f.replace(/^[a-zA-Z]:[\/\\]+/, '/').replace(/[\\\/]+/g, '/') + }) +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/bash-results.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/bash-results.json new file mode 100644 index 00000000..a9bc347d --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/bash-results.json @@ -0,0 +1,350 @@ +{ + "test/a/*/+(c|g)/./d": [ + "test/a/b/c/./d" + ], + "test/a/**/[cg]/../[cg]": [ + "test/a/abcdef/g/../g", + "test/a/abcfed/g/../g", + "test/a/b/c/../c", + "test/a/c/../c", + "test/a/c/d/c/../c", + "test/a/symlink/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c" + ], + "test/a/{b,c,d,e,f}/**/g": [], + "test/a/b/**": [ + "test/a/b", + "test/a/b/c", + "test/a/b/c/d" + ], + "test/**/g": [ + "test/a/abcdef/g", + "test/a/abcfed/g" + ], + "test/a/abc{fed,def}/g/h": [ + "test/a/abcdef/g/h", + "test/a/abcfed/g/h" + ], + "test/a/abc{fed/g,def}/**/": [ + "test/a/abcdef", + "test/a/abcdef/g", + "test/a/abcfed/g" + ], + "test/a/abc{fed/g,def}/**///**/": [ + "test/a/abcdef", + "test/a/abcdef/g", + "test/a/abcfed/g" + ], + "test/**/a/**/": [ + "test/a", + "test/a/abcdef", + "test/a/abcdef/g", + "test/a/abcfed", + "test/a/abcfed/g", + "test/a/b", + "test/a/b/c", + "test/a/bc", + "test/a/bc/e", + "test/a/c", + "test/a/c/d", + "test/a/c/d/c", + "test/a/cb", + "test/a/cb/e", + "test/a/symlink", + "test/a/symlink/a", + "test/a/symlink/a/b", + "test/a/symlink/a/b/c", + "test/a/symlink/a/b/c/a", + "test/a/symlink/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b" + ], + "test/+(a|b|c)/a{/,bc*}/**": [ + "test/a/abcdef", + "test/a/abcdef/g", + "test/a/abcdef/g/h", + "test/a/abcfed", + "test/a/abcfed/g", + "test/a/abcfed/g/h" + ], + "test/*/*/*/f": [ + "test/a/bc/e/f", + "test/a/cb/e/f" + ], + "test/**/f": [ + "test/a/bc/e/f", + "test/a/cb/e/f" + ], + "test/a/symlink/a/b/c/a/b/c/a/b/c//a/b/c////a/b/c/**/b/c/**": [ + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", + "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c" + ], + "{./*/*,/tmp/glob-test/*}": [ + "./examples/g.js", + "./examples/usr-local.js", + "./node_modules/graceful-fs", + "./node_modules/inherits", + "./node_modules/minimatch", + "./node_modules/mkdirp", + "./node_modules/rimraf", + "./node_modules/tap", + "./test/00-setup.js", + "./test/a", + "./test/bash-comparison.js", + "./test/bash-results.json", + "./test/cwd-test.js", + "./test/globstar-match.js", + "./test/mark.js", + "./test/nocase-nomagic.js", + "./test/pause-resume.js", + "./test/root-nomount.js", + "./test/root.js", + "./test/stat.js", + "./test/zz-cleanup.js", + "/tmp/glob-test/asdf", + "/tmp/glob-test/bar", + "/tmp/glob-test/baz", + "/tmp/glob-test/foo", + "/tmp/glob-test/quux", + "/tmp/glob-test/qwer", + "/tmp/glob-test/rewq" + ], + "{/tmp/glob-test/*,*}": [ + "/tmp/glob-test/asdf", + "/tmp/glob-test/bar", + "/tmp/glob-test/baz", + "/tmp/glob-test/foo", + "/tmp/glob-test/quux", + "/tmp/glob-test/qwer", + "/tmp/glob-test/rewq", + "examples", + "glob.js", + "LICENSE", + "node_modules", + "package.json", + "README.md", + "test" + ], + "test/a/!(symlink)/**": [ + "test/a/abcdef", + "test/a/abcdef/g", + "test/a/abcdef/g/h", + "test/a/abcfed", + "test/a/abcfed/g", + "test/a/abcfed/g/h", + "test/a/b", + "test/a/b/c", + "test/a/b/c/d", + "test/a/bc", + "test/a/bc/e", + "test/a/bc/e/f", + "test/a/c", + "test/a/c/d", + "test/a/c/d/c", + "test/a/c/d/c/b", + "test/a/cb", + "test/a/cb/e", + "test/a/cb/e/f" + ] +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/cwd-test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/cwd-test.js new file mode 100644 index 00000000..352c27ef --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/cwd-test.js @@ -0,0 +1,55 @@ +var tap = require("tap") + +var origCwd = process.cwd() +process.chdir(__dirname) + +tap.test("changing cwd and searching for **/d", function (t) { + var glob = require('../') + var path = require('path') + t.test('.', function (t) { + glob('**/d', function (er, matches) { + t.ifError(er) + t.like(matches, [ 'a/b/c/d', 'a/c/d' ]) + t.end() + }) + }) + + t.test('a', function (t) { + glob('**/d', {cwd:path.resolve('a')}, function (er, matches) { + t.ifError(er) + t.like(matches, [ 'b/c/d', 'c/d' ]) + t.end() + }) + }) + + t.test('a/b', function (t) { + glob('**/d', {cwd:path.resolve('a/b')}, function (er, matches) { + t.ifError(er) + t.like(matches, [ 'c/d' ]) + t.end() + }) + }) + + t.test('a/b/', function (t) { + glob('**/d', {cwd:path.resolve('a/b/')}, function (er, matches) { + t.ifError(er) + t.like(matches, [ 'c/d' ]) + t.end() + }) + }) + + t.test('.', function (t) { + glob('**/d', {cwd: process.cwd()}, function (er, matches) { + t.ifError(er) + t.like(matches, [ 'a/b/c/d', 'a/c/d' ]) + t.end() + }) + }) + + t.test('cd -', function (t) { + process.chdir(origCwd) + t.end() + }) + + t.end() +}) diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/globstar-match.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/globstar-match.js new file mode 100644 index 00000000..9b234fa2 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/globstar-match.js @@ -0,0 +1,19 @@ +var Glob = require("../glob.js").Glob +var test = require('tap').test + +test('globstar should not have dupe matches', function(t) { + var pattern = 'a/**/[gh]' + var g = new Glob(pattern, { cwd: __dirname }) + var matches = [] + g.on('match', function(m) { + console.error('match %j', m) + matches.push(m) + }) + g.on('end', function(set) { + console.error('set', set) + matches = matches.sort() + set = set.sort() + t.same(matches, set, 'should have same set of matches') + t.end() + }) +}) diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/mark.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/mark.js new file mode 100644 index 00000000..ed68a335 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/mark.js @@ -0,0 +1,74 @@ +var test = require("tap").test +var glob = require('../') +process.chdir(__dirname) + +test("mark, no / on pattern", function (t) { + glob("a/*", {mark: true}, function (er, results) { + if (er) + throw er + var expect = [ 'a/abcdef/', + 'a/abcfed/', + 'a/b/', + 'a/bc/', + 'a/c/', + 'a/cb/' ] + + if (process.platform !== "win32") + expect.push('a/symlink/') + + t.same(results, expect) + t.end() + }) +}) + +test("mark=false, no / on pattern", function (t) { + glob("a/*", function (er, results) { + if (er) + throw er + var expect = [ 'a/abcdef', + 'a/abcfed', + 'a/b', + 'a/bc', + 'a/c', + 'a/cb' ] + + if (process.platform !== "win32") + expect.push('a/symlink') + t.same(results, expect) + t.end() + }) +}) + +test("mark=true, / on pattern", function (t) { + glob("a/*/", {mark: true}, function (er, results) { + if (er) + throw er + var expect = [ 'a/abcdef/', + 'a/abcfed/', + 'a/b/', + 'a/bc/', + 'a/c/', + 'a/cb/' ] + if (process.platform !== "win32") + expect.push('a/symlink/') + t.same(results, expect) + t.end() + }) +}) + +test("mark=false, / on pattern", function (t) { + glob("a/*/", function (er, results) { + if (er) + throw er + var expect = [ 'a/abcdef/', + 'a/abcfed/', + 'a/b/', + 'a/bc/', + 'a/c/', + 'a/cb/' ] + if (process.platform !== "win32") + expect.push('a/symlink/') + t.same(results, expect) + t.end() + }) +}) diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/nocase-nomagic.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/nocase-nomagic.js new file mode 100644 index 00000000..d8629709 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/nocase-nomagic.js @@ -0,0 +1,113 @@ +var fs = require('graceful-fs'); +var test = require('tap').test; +var glob = require('../'); + +test('mock fs', function(t) { + var stat = fs.stat + var statSync = fs.statSync + var readdir = fs.readdir + var readdirSync = fs.readdirSync + + function fakeStat(path) { + var ret + switch (path.toLowerCase()) { + case '/tmp': case '/tmp/': + ret = { isDirectory: function() { return true } } + break + case '/tmp/a': + ret = { isDirectory: function() { return false } } + break + } + return ret + } + + fs.stat = function(path, cb) { + var f = fakeStat(path); + if (f) { + process.nextTick(function() { + cb(null, f) + }) + } else { + stat.call(fs, path, cb) + } + } + + fs.statSync = function(path) { + return fakeStat(path) || statSync.call(fs, path) + } + + function fakeReaddir(path) { + var ret + switch (path.toLowerCase()) { + case '/tmp': case '/tmp/': + ret = [ 'a', 'A' ] + break + case '/': + ret = ['tmp', 'tMp', 'tMP', 'TMP'] + } + return ret + } + + fs.readdir = function(path, cb) { + var f = fakeReaddir(path) + if (f) + process.nextTick(function() { + cb(null, f) + }) + else + readdir.call(fs, path, cb) + } + + fs.readdirSync = function(path) { + return fakeReaddir(path) || readdirSync.call(fs, path) + } + + t.pass('mocked') + t.end() +}) + +test('nocase, nomagic', function(t) { + var n = 2 + var want = [ '/TMP/A', + '/TMP/a', + '/tMP/A', + '/tMP/a', + '/tMp/A', + '/tMp/a', + '/tmp/A', + '/tmp/a' ] + glob('/tmp/a', { nocase: true }, function(er, res) { + if (er) + throw er + t.same(res.sort(), want) + if (--n === 0) t.end() + }) + glob('/tmp/A', { nocase: true }, function(er, res) { + if (er) + throw er + t.same(res.sort(), want) + if (--n === 0) t.end() + }) +}) + +test('nocase, with some magic', function(t) { + t.plan(2) + var want = [ '/TMP/A', + '/TMP/a', + '/tMP/A', + '/tMP/a', + '/tMp/A', + '/tMp/a', + '/tmp/A', + '/tmp/a' ] + glob('/tmp/*', { nocase: true }, function(er, res) { + if (er) + throw er + t.same(res.sort(), want) + }) + glob('/tmp/*', { nocase: true }, function(er, res) { + if (er) + throw er + t.same(res.sort(), want) + }) +}) diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/pause-resume.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/pause-resume.js new file mode 100644 index 00000000..e1ffbab1 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/pause-resume.js @@ -0,0 +1,73 @@ +// show that no match events happen while paused. +var tap = require("tap") +, child_process = require("child_process") +// just some gnarly pattern with lots of matches +, pattern = "test/a/!(symlink)/**" +, bashResults = require("./bash-results.json") +, patterns = Object.keys(bashResults) +, glob = require("../") +, Glob = glob.Glob +, path = require("path") + +// run from the root of the project +// this is usually where you're at anyway, but be sure. +process.chdir(path.resolve(__dirname, "..")) + +function alphasort (a, b) { + a = a.toLowerCase() + b = b.toLowerCase() + return a > b ? 1 : a < b ? -1 : 0 +} + +function cleanResults (m) { + // normalize discrepancies in ordering, duplication, + // and ending slashes. + return m.map(function (m) { + return m.replace(/\/+/g, "/").replace(/\/$/, "") + }).sort(alphasort).reduce(function (set, f) { + if (f !== set[set.length - 1]) set.push(f) + return set + }, []).sort(alphasort).map(function (f) { + // de-windows + return (process.platform !== 'win32') ? f + : f.replace(/^[a-zA-Z]:\\\\/, '/').replace(/\\/g, '/') + }) +} + +var globResults = [] +tap.test("use a Glob object, and pause/resume it", function (t) { + var g = new Glob(pattern) + , paused = false + , res = [] + , expect = bashResults[pattern] + + g.on("pause", function () { + console.error("pause") + }) + + g.on("resume", function () { + console.error("resume") + }) + + g.on("match", function (m) { + t.notOk(g.paused, "must not be paused") + globResults.push(m) + g.pause() + t.ok(g.paused, "must be paused") + setTimeout(g.resume.bind(g), 10) + }) + + g.on("end", function (matches) { + t.pass("reached glob end") + globResults = cleanResults(globResults) + matches = cleanResults(matches) + t.deepEqual(matches, globResults, + "end event matches should be the same as match events") + + t.deepEqual(matches, expect, + "glob matches should be the same as bash results") + + t.end() + }) +}) + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/root-nomount.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/root-nomount.js new file mode 100644 index 00000000..3ac5979b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/root-nomount.js @@ -0,0 +1,39 @@ +var tap = require("tap") + +var origCwd = process.cwd() +process.chdir(__dirname) + +tap.test("changing root and searching for /b*/**", function (t) { + var glob = require('../') + var path = require('path') + t.test('.', function (t) { + glob('/b*/**', { globDebug: true, root: '.', nomount: true }, function (er, matches) { + t.ifError(er) + t.like(matches, []) + t.end() + }) + }) + + t.test('a', function (t) { + glob('/b*/**', { globDebug: true, root: path.resolve('a'), nomount: true }, function (er, matches) { + t.ifError(er) + t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ]) + t.end() + }) + }) + + t.test('root=a, cwd=a/b', function (t) { + glob('/b*/**', { globDebug: true, root: 'a', cwd: path.resolve('a/b'), nomount: true }, function (er, matches) { + t.ifError(er) + t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ]) + t.end() + }) + }) + + t.test('cd -', function (t) { + process.chdir(origCwd) + t.end() + }) + + t.end() +}) diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/root.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/root.js new file mode 100644 index 00000000..95c23f99 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/root.js @@ -0,0 +1,46 @@ +var t = require("tap") + +var origCwd = process.cwd() +process.chdir(__dirname) + +var glob = require('../') +var path = require('path') + +t.test('.', function (t) { + glob('/b*/**', { globDebug: true, root: '.' }, function (er, matches) { + t.ifError(er) + t.like(matches, []) + t.end() + }) +}) + + +t.test('a', function (t) { + console.error("root=" + path.resolve('a')) + glob('/b*/**', { globDebug: true, root: path.resolve('a') }, function (er, matches) { + t.ifError(er) + var wanted = [ + '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' + ].map(function (m) { + return path.join(path.resolve('a'), m).replace(/\\/g, '/') + }) + + t.like(matches, wanted) + t.end() + }) +}) + +t.test('root=a, cwd=a/b', function (t) { + glob('/b*/**', { globDebug: true, root: 'a', cwd: path.resolve('a/b') }, function (er, matches) { + t.ifError(er) + t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ].map(function (m) { + return path.join(path.resolve('a'), m).replace(/\\/g, '/') + })) + t.end() + }) +}) + +t.test('cd -', function (t) { + process.chdir(origCwd) + t.end() +}) diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/stat.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/stat.js new file mode 100644 index 00000000..62917114 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/stat.js @@ -0,0 +1,32 @@ +var glob = require('../') +var test = require('tap').test +var path = require('path') + +test('stat all the things', function(t) { + var g = new glob.Glob('a/*abc*/**', { stat: true, cwd: __dirname }) + var matches = [] + g.on('match', function(m) { + matches.push(m) + }) + var stats = [] + g.on('stat', function(m) { + stats.push(m) + }) + g.on('end', function(eof) { + stats = stats.sort() + matches = matches.sort() + eof = eof.sort() + t.same(stats, matches) + t.same(eof, matches) + var cache = Object.keys(this.statCache) + t.same(cache.map(function (f) { + return path.relative(__dirname, f) + }).sort(), matches) + + cache.forEach(function(c) { + t.equal(typeof this.statCache[c], 'object') + }, this) + + t.end() + }) +}) diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/zz-cleanup.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/zz-cleanup.js new file mode 100644 index 00000000..e085f0fa --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/glob/test/zz-cleanup.js @@ -0,0 +1,11 @@ +// remove the fixtures +var tap = require("tap") +, rimraf = require("rimraf") +, path = require("path") + +tap.test("cleanup fixtures", function (t) { + rimraf(path.resolve(__dirname, "a"), function (er) { + t.ifError(er, "removed") + t.end() + }) +}) diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/.npmignore new file mode 100644 index 00000000..3c3629e6 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/ini/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/LICENSE similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/ini/LICENSE rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/LICENSE diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/README.md new file mode 100644 index 00000000..978268e2 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/README.md @@ -0,0 +1,218 @@ +# minimatch + +A minimal matching utility. + +[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch) + + +This is the matching library used internally by npm. + +Eventually, it will replace the C binding in node-glob. + +It works by converting glob expressions into JavaScript `RegExp` +objects. + +## Usage + +```javascript +var minimatch = require("minimatch") + +minimatch("bar.foo", "*.foo") // true! +minimatch("bar.foo", "*.bar") // false! +minimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true, and noisy! +``` + +## Features + +Supports these glob features: + +* Brace Expansion +* Extended glob matching +* "Globstar" `**` matching + +See: + +* `man sh` +* `man bash` +* `man 3 fnmatch` +* `man 5 gitignore` + +## Minimatch Class + +Create a minimatch object by instanting the `minimatch.Minimatch` class. + +```javascript +var Minimatch = require("minimatch").Minimatch +var mm = new Minimatch(pattern, options) +``` + +### Properties + +* `pattern` The original pattern the minimatch object represents. +* `options` The options supplied to the constructor. +* `set` A 2-dimensional array of regexp or string expressions. + Each row in the + array corresponds to a brace-expanded pattern. Each item in the row + corresponds to a single path-part. For example, the pattern + `{a,b/c}/d` would expand to a set of patterns like: + + [ [ a, d ] + , [ b, c, d ] ] + + If a portion of the pattern doesn't have any "magic" in it + (that is, it's something like `"foo"` rather than `fo*o?`), then it + will be left as a string rather than converted to a regular + expression. + +* `regexp` Created by the `makeRe` method. A single regular expression + expressing the entire pattern. This is useful in cases where you wish + to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled. +* `negate` True if the pattern is negated. +* `comment` True if the pattern is a comment. +* `empty` True if the pattern is `""`. + +### Methods + +* `makeRe` Generate the `regexp` member if necessary, and return it. + Will return `false` if the pattern is invalid. +* `match(fname)` Return true if the filename matches the pattern, or + false otherwise. +* `matchOne(fileArray, patternArray, partial)` Take a `/`-split + filename, and match it against a single row in the `regExpSet`. This + method is mainly for internal use, but is exposed so that it can be + used by a glob-walker that needs to avoid excessive filesystem calls. + +All other methods are internal, and will be called as necessary. + +## Functions + +The top-level exported function has a `cache` property, which is an LRU +cache set to store 100 items. So, calling these methods repeatedly +with the same pattern and options will use the same Minimatch object, +saving the cost of parsing it multiple times. + +### minimatch(path, pattern, options) + +Main export. Tests a path against the pattern using the options. + +```javascript +var isJS = minimatch(file, "*.js", { matchBase: true }) +``` + +### minimatch.filter(pattern, options) + +Returns a function that tests its +supplied argument, suitable for use with `Array.filter`. Example: + +```javascript +var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true})) +``` + +### minimatch.match(list, pattern, options) + +Match against the list of +files, in the style of fnmatch or glob. If nothing is matched, and +options.nonull is set, then return a list containing the pattern itself. + +```javascript +var javascripts = minimatch.match(fileList, "*.js", {matchBase: true})) +``` + +### minimatch.makeRe(pattern, options) + +Make a regular expression object from the pattern. + +## Options + +All options are `false` by default. + +### debug + +Dump a ton of stuff to stderr. + +### nobrace + +Do not expand `{a,b}` and `{1..3}` brace sets. + +### noglobstar + +Disable `**` matching against multiple folder names. + +### dot + +Allow patterns to match filenames starting with a period, even if +the pattern does not explicitly have a period in that spot. + +Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot` +is set. + +### noext + +Disable "extglob" style patterns like `+(a|b)`. + +### nocase + +Perform a case-insensitive match. + +### nonull + +When a match is not found by `minimatch.match`, return a list containing +the pattern itself. When set, an empty list is returned if there are +no matches. + +### matchBase + +If set, then patterns without slashes will be matched +against the basename of the path if it contains slashes. For example, +`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. + +### nocomment + +Suppress the behavior of treating `#` at the start of a pattern as a +comment. + +### nonegate + +Suppress the behavior of treating a leading `!` character as negation. + +### flipNegate + +Returns from negate expressions the same as if they were not negated. +(Ie, true on a hit, false on a miss.) + + +## Comparisons to other fnmatch/glob implementations + +While strict compliance with the existing standards is a worthwhile +goal, some discrepancies exist between minimatch and other +implementations, and are intentional. + +If the pattern starts with a `!` character, then it is negated. Set the +`nonegate` flag to suppress this behavior, and treat leading `!` +characters normally. This is perhaps relevant if you wish to start the +pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` +characters at the start of a pattern will negate the pattern multiple +times. + +If a pattern starts with `#`, then it is treated as a comment, and +will not match anything. Use `\#` to match a literal `#` at the +start of a line, or set the `nocomment` flag to suppress this behavior. + +The double-star character `**` is supported by default, unless the +`noglobstar` flag is set. This is supported in the manner of bsdglob +and bash 4.1, where `**` only has special significance if it is the only +thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but +`a/**b` will not. + +If an escaped pattern has no matches, and the `nonull` flag is set, +then minimatch.match returns the pattern as-provided, rather than +interpreting the character escapes. For example, +`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than +`"*a?"`. This is akin to setting the `nullglob` option in bash, except +that it does not resolve escaped pattern characters. + +If brace expansion is not disabled, then it is performed before any +other interpretation of the glob pattern. Thus, a pattern like +`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded +**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are +checked for validity. Since those two are valid, matching proceeds. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/minimatch.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/minimatch.js new file mode 100644 index 00000000..c633f89f --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/minimatch.js @@ -0,0 +1,1055 @@ +;(function (require, exports, module, platform) { + +if (module) module.exports = minimatch +else exports.minimatch = minimatch + +if (!require) { + require = function (id) { + switch (id) { + case "sigmund": return function sigmund (obj) { + return JSON.stringify(obj) + } + case "path": return { basename: function (f) { + f = f.split(/[\/\\]/) + var e = f.pop() + if (!e) e = f.pop() + return e + }} + case "lru-cache": return function LRUCache () { + // not quite an LRU, but still space-limited. + var cache = {} + var cnt = 0 + this.set = function (k, v) { + cnt ++ + if (cnt >= 100) cache = {} + cache[k] = v + } + this.get = function (k) { return cache[k] } + } + } + } +} + +minimatch.Minimatch = Minimatch + +var LRU = require("lru-cache") + , cache = minimatch.cache = new LRU({max: 100}) + , GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} + , sigmund = require("sigmund") + +var path = require("path") + // any single thing other than / + // don't need to escape / when using new RegExp() + , qmark = "[^/]" + + // * => any number of characters + , star = qmark + "*?" + + // ** when dots are allowed. Anything goes, except .. and . + // not (^ or / followed by one or two dots followed by $ or /), + // followed by anything, any number of times. + , twoStarDot = "(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?" + + // not a ^ or / followed by a dot, + // followed by anything, any number of times. + , twoStarNoDot = "(?:(?!(?:\\\/|^)\\.).)*?" + + // characters that need to be escaped in RegExp. + , reSpecials = charSet("().*{}+?[]^$\\!") + +// "abc" -> { a:true, b:true, c:true } +function charSet (s) { + return s.split("").reduce(function (set, c) { + set[c] = true + return set + }, {}) +} + +// normalizes slashes. +var slashSplit = /\/+/ + +minimatch.filter = filter +function filter (pattern, options) { + options = options || {} + return function (p, i, list) { + return minimatch(p, pattern, options) + } +} + +function ext (a, b) { + a = a || {} + b = b || {} + var t = {} + Object.keys(b).forEach(function (k) { + t[k] = b[k] + }) + Object.keys(a).forEach(function (k) { + t[k] = a[k] + }) + return t +} + +minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return minimatch + + var orig = minimatch + + var m = function minimatch (p, pattern, options) { + return orig.minimatch(p, pattern, ext(def, options)) + } + + m.Minimatch = function Minimatch (pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)) + } + + return m +} + +Minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return Minimatch + return minimatch.defaults(def).Minimatch +} + + +function minimatch (p, pattern, options) { + if (typeof pattern !== "string") { + throw new TypeError("glob pattern string required") + } + + if (!options) options = {} + + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === "#") { + return false + } + + // "" only matches "" + if (pattern.trim() === "") return p === "" + + return new Minimatch(pattern, options).match(p) +} + +function Minimatch (pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options, cache) + } + + if (typeof pattern !== "string") { + throw new TypeError("glob pattern string required") + } + + if (!options) options = {} + pattern = pattern.trim() + + // windows: need to use /, not \ + // On other platforms, \ is a valid (albeit bad) filename char. + if (platform === "win32") { + pattern = pattern.split("\\").join("/") + } + + // lru storage. + // these things aren't particularly big, but walking down the string + // and turning it into a regexp can get pretty costly. + var cacheKey = pattern + "\n" + sigmund(options) + var cached = minimatch.cache.get(cacheKey) + if (cached) return cached + minimatch.cache.set(cacheKey, this) + + this.options = options + this.set = [] + this.pattern = pattern + this.regexp = null + this.negate = false + this.comment = false + this.empty = false + + // make the set of regexps etc. + this.make() +} + +Minimatch.prototype.debug = function() {} + +Minimatch.prototype.make = make +function make () { + // don't do it more than once. + if (this._made) return + + var pattern = this.pattern + var options = this.options + + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === "#") { + this.comment = true + return + } + if (!pattern) { + this.empty = true + return + } + + // step 1: figure out negation, etc. + this.parseNegate() + + // step 2: expand braces + var set = this.globSet = this.braceExpand() + + if (options.debug) this.debug = console.error + + this.debug(this.pattern, set) + + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(function (s) { + return s.split(slashSplit) + }) + + this.debug(this.pattern, set) + + // glob --> regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this) + + this.debug(this.pattern, set) + + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return -1 === s.indexOf(false) + }) + + this.debug(this.pattern, set) + + this.set = set +} + +Minimatch.prototype.parseNegate = parseNegate +function parseNegate () { + var pattern = this.pattern + , negate = false + , options = this.options + , negateOffset = 0 + + if (options.nonegate) return + + for ( var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === "!" + ; i ++) { + negate = !negate + negateOffset ++ + } + + if (negateOffset) this.pattern = pattern.substr(negateOffset) + this.negate = negate +} + +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = function (pattern, options) { + return new Minimatch(pattern, options).braceExpand() +} + +Minimatch.prototype.braceExpand = braceExpand +function braceExpand (pattern, options) { + options = options || this.options + pattern = typeof pattern === "undefined" + ? this.pattern : pattern + + if (typeof pattern === "undefined") { + throw new Error("undefined pattern") + } + + if (options.nobrace || + !pattern.match(/\{.*\}/)) { + // shortcut. no need to expand. + return [pattern] + } + + var escaping = false + + // examples and comments refer to this crazy pattern: + // a{b,c{d,e},{f,g}h}x{y,z} + // expected: + // abxy + // abxz + // acdxy + // acdxz + // acexy + // acexz + // afhxy + // afhxz + // aghxy + // aghxz + + // everything before the first \{ is just a prefix. + // So, we pluck that off, and work with the rest, + // and then prepend it to everything we find. + if (pattern.charAt(0) !== "{") { + this.debug(pattern) + var prefix = null + for (var i = 0, l = pattern.length; i < l; i ++) { + var c = pattern.charAt(i) + this.debug(i, c) + if (c === "\\") { + escaping = !escaping + } else if (c === "{" && !escaping) { + prefix = pattern.substr(0, i) + break + } + } + + // actually no sets, all { were escaped. + if (prefix === null) { + this.debug("no sets") + return [pattern] + } + + var tail = braceExpand.call(this, pattern.substr(i), options) + return tail.map(function (t) { + return prefix + t + }) + } + + // now we have something like: + // {b,c{d,e},{f,g}h}x{y,z} + // walk through the set, expanding each part, until + // the set ends. then, we'll expand the suffix. + // If the set only has a single member, then'll put the {} back + + // first, handle numeric sets, since they're easier + var numset = pattern.match(/^\{(-?[0-9]+)\.\.(-?[0-9]+)\}/) + if (numset) { + this.debug("numset", numset[1], numset[2]) + var suf = braceExpand.call(this, pattern.substr(numset[0].length), options) + , start = +numset[1] + , end = +numset[2] + , inc = start > end ? -1 : 1 + , set = [] + for (var i = start; i != (end + inc); i += inc) { + // append all the suffixes + for (var ii = 0, ll = suf.length; ii < ll; ii ++) { + set.push(i + suf[ii]) + } + } + return set + } + + // ok, walk through the set + // We hope, somewhat optimistically, that there + // will be a } at the end. + // If the closing brace isn't found, then the pattern is + // interpreted as braceExpand("\\" + pattern) so that + // the leading \{ will be interpreted literally. + var i = 1 // skip the \{ + , depth = 1 + , set = [] + , member = "" + , sawEnd = false + , escaping = false + + function addMember () { + set.push(member) + member = "" + } + + this.debug("Entering for") + FOR: for (i = 1, l = pattern.length; i < l; i ++) { + var c = pattern.charAt(i) + this.debug("", i, c) + + if (escaping) { + escaping = false + member += "\\" + c + } else { + switch (c) { + case "\\": + escaping = true + continue + + case "{": + depth ++ + member += "{" + continue + + case "}": + depth -- + // if this closes the actual set, then we're done + if (depth === 0) { + addMember() + // pluck off the close-brace + i ++ + break FOR + } else { + member += c + continue + } + + case ",": + if (depth === 1) { + addMember() + } else { + member += c + } + continue + + default: + member += c + continue + } // switch + } // else + } // for + + // now we've either finished the set, and the suffix is + // pattern.substr(i), or we have *not* closed the set, + // and need to escape the leading brace + if (depth !== 0) { + this.debug("didn't close", pattern) + return braceExpand.call(this, "\\" + pattern, options) + } + + // x{y,z} -> ["xy", "xz"] + this.debug("set", set) + this.debug("suffix", pattern.substr(i)) + var suf = braceExpand.call(this, pattern.substr(i), options) + // ["b", "c{d,e}","{f,g}h"] -> + // [["b"], ["cd", "ce"], ["fh", "gh"]] + var addBraces = set.length === 1 + this.debug("set pre-expanded", set) + set = set.map(function (p) { + return braceExpand.call(this, p, options) + }, this) + this.debug("set expanded", set) + + + // [["b"], ["cd", "ce"], ["fh", "gh"]] -> + // ["b", "cd", "ce", "fh", "gh"] + set = set.reduce(function (l, r) { + return l.concat(r) + }) + + if (addBraces) { + set = set.map(function (s) { + return "{" + s + "}" + }) + } + + // now attach the suffixes. + var ret = [] + for (var i = 0, l = set.length; i < l; i ++) { + for (var ii = 0, ll = suf.length; ii < ll; ii ++) { + ret.push(set[i] + suf[ii]) + } + } + return ret +} + +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +Minimatch.prototype.parse = parse +var SUBPARSE = {} +function parse (pattern, isSub) { + var options = this.options + + // shortcuts + if (!options.noglobstar && pattern === "**") return GLOBSTAR + if (pattern === "") return "" + + var re = "" + , hasMagic = !!options.nocase + , escaping = false + // ? => one single character + , patternListStack = [] + , plType + , stateChar + , inClass = false + , reClassStart = -1 + , classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + , patternStart = pattern.charAt(0) === "." ? "" // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? "(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))" + : "(?!\\.)" + , self = this + + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case "*": + re += star + hasMagic = true + break + case "?": + re += qmark + hasMagic = true + break + default: + re += "\\"+stateChar + break + } + self.debug('clearStateChar %j %j', stateChar, re) + stateChar = false + } + } + + for ( var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i ++ ) { + + this.debug("%s\t%s %s %j", pattern, i, re, c) + + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += "\\" + c + escaping = false + continue + } + + SWITCH: switch (c) { + case "/": + // completely not allowed, even escaped. + // Should already be path-split by now. + return false + + case "\\": + clearStateChar() + escaping = true + continue + + // the various stateChar values + // for the "extglob" stuff. + case "?": + case "*": + case "+": + case "@": + case "!": + this.debug("%s\t%s %s %j <-- stateChar", pattern, i, re, c) + + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + this.debug(' in class') + if (c === "!" && i === classStart + 1) c = "^" + re += c + continue + } + + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + self.debug('call clearStateChar %j', stateChar) + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue + + case "(": + if (inClass) { + re += "(" + continue + } + + if (!stateChar) { + re += "\\(" + continue + } + + plType = stateChar + patternListStack.push({ type: plType + , start: i - 1 + , reStart: re.length }) + // negation is (?:(?!js)[^/]*) + re += stateChar === "!" ? "(?:(?!" : "(?:" + this.debug('plType %j %j', stateChar, re) + stateChar = false + continue + + case ")": + if (inClass || !patternListStack.length) { + re += "\\)" + continue + } + + clearStateChar() + hasMagic = true + re += ")" + plType = patternListStack.pop().type + // negation is (?:(?!js)[^/]*) + // The others are (?:) + switch (plType) { + case "!": + re += "[^/]*?)" + break + case "?": + case "+": + case "*": re += plType + case "@": break // the default anyway + } + continue + + case "|": + if (inClass || !patternListStack.length || escaping) { + re += "\\|" + escaping = false + continue + } + + clearStateChar() + re += "|" + continue + + // these are mostly the same in regexp and glob + case "[": + // swallow any state-tracking char before the [ + clearStateChar() + + if (inClass) { + re += "\\" + c + continue + } + + inClass = true + classStart = i + reClassStart = re.length + re += c + continue + + case "]": + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += "\\" + c + escaping = false + continue + } + + // finish up the class. + hasMagic = true + inClass = false + re += c + continue + + default: + // swallow any state char that wasn't consumed + clearStateChar() + + if (escaping) { + // no need + escaping = false + } else if (reSpecials[c] + && !(c === "^" && inClass)) { + re += "\\" + } + + re += c + + } // switch + } // for + + + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + var cs = pattern.substr(classStart + 1) + , sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + "\\[" + sp[0] + hasMagic = hasMagic || sp[1] + } + + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + var pl + while (pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + 3) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = "\\" + } + + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + "|" + }) + + this.debug("tail=%j\n %s", tail, tail) + var t = pl.type === "*" ? star + : pl.type === "?" ? qmark + : "\\" + pl.type + + hasMagic = true + re = re.slice(0, pl.reStart) + + t + "\\(" + + tail + } + + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += "\\\\" + } + + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false + switch (re.charAt(0)) { + case ".": + case "[": + case "(": addPatternStart = true + } + + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== "" && hasMagic) re = "(?=.)" + re + + if (addPatternStart) re = patternStart + re + + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [ re, hasMagic ] + } + + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) + } + + var flags = options.nocase ? "i" : "" + , regExp = new RegExp("^" + re + "$", flags) + + regExp._glob = pattern + regExp._src = re + + return regExp +} + +minimatch.makeRe = function (pattern, options) { + return new Minimatch(pattern, options || {}).makeRe() +} + +Minimatch.prototype.makeRe = makeRe +function makeRe () { + if (this.regexp || this.regexp === false) return this.regexp + + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + var set = this.set + + if (!set.length) return this.regexp = false + var options = this.options + + var twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot + , flags = options.nocase ? "i" : "" + + var re = set.map(function (pattern) { + return pattern.map(function (p) { + return (p === GLOBSTAR) ? twoStar + : (typeof p === "string") ? regExpEscape(p) + : p._src + }).join("\\\/") + }).join("|") + + // must match entire pattern + // ending in a * or ** will make it less strict. + re = "^(?:" + re + ")$" + + // can match anything, as long as it's not this. + if (this.negate) re = "^(?!" + re + ").*$" + + try { + return this.regexp = new RegExp(re, flags) + } catch (ex) { + return this.regexp = false + } +} + +minimatch.match = function (list, pattern, options) { + var mm = new Minimatch(pattern, options) + list = list.filter(function (f) { + return mm.match(f) + }) + if (options.nonull && !list.length) { + list.push(pattern) + } + return list +} + +Minimatch.prototype.match = match +function match (f, partial) { + this.debug("match", f, this.pattern) + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === "" + + if (f === "/" && partial) return true + + var options = this.options + + // windows: need to use /, not \ + // On other platforms, \ is a valid (albeit bad) filename char. + if (platform === "win32") { + f = f.split("\\").join("/") + } + + // treat the test path as a set of pathparts. + f = f.split(slashSplit) + this.debug(this.pattern, "split", f) + + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + + var set = this.set + this.debug(this.pattern, "set", set) + + var splitFile = path.basename(f.join("/")).split("/") + + for (var i = 0, l = set.length; i < l; i ++) { + var pattern = set[i], file = f + if (options.matchBase && pattern.length === 1) { + file = splitFile + } + var hit = this.matchOne(file, pattern, partial) + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } + + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate +} + +// set partial to true to test if, for example, +// "/a/b" matches the start of "/*/b/*/d" +// Partial means, if you run out of file before you run +// out of pattern, then that's fine, as long as all +// the parts match. +Minimatch.prototype.matchOne = function (file, pattern, partial) { + var options = this.options + + this.debug("matchOne", + { "this": this + , file: file + , pattern: pattern }) + + this.debug("matchOne", file.length, pattern.length) + + for ( var fi = 0 + , pi = 0 + , fl = file.length + , pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi ++, pi ++ ) { + + this.debug("matchOne loop") + var p = pattern[pi] + , f = file[fi] + + this.debug(pattern, p, f) + + // should be impossible. + // some invalid regexp stuff in the set. + if (p === false) return false + + if (p === GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]) + + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi + , pr = pi + 1 + if (pr === pl) { + this.debug('** at the end') + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for ( ; fi < fl; fi ++) { + if (file[fi] === "." || file[fi] === ".." || + (!options.dot && file[fi].charAt(0) === ".")) return false + } + return true + } + + // ok, let's see if we can swallow whatever we can. + WHILE: while (fr < fl) { + var swallowee = file[fr] + + this.debug('\nglobstar while', + file, fr, pattern, pr, swallowee) + + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee) + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === "." || swallowee === ".." || + (!options.dot && swallowee.charAt(0) === ".")) { + this.debug("dot detected!", file, fr, pattern, pr) + break WHILE + } + + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue') + fr ++ + } + } + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + if (partial) { + // ran out of file + this.debug("\n>>> no match, partial?", file, fr, pattern, pr) + if (fr === fl) return true + } + return false + } + + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit + if (typeof p === "string") { + if (options.nocase) { + hit = f.toLowerCase() === p.toLowerCase() + } else { + hit = f === p + } + this.debug("string match", p, f, hit) + } else { + hit = f.match(p) + this.debug("pattern match", p, f, hit) + } + + if (!hit) return false + } + + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + var emptyFileEnd = (fi === fl - 1) && (file[fi] === "") + return emptyFileEnd + } + + // should be unreachable. + throw new Error("wtf?") +} + + +// replace stuff like \* with * +function globUnescape (s) { + return s.replace(/\\(.)/g, "$1") +} + + +function regExpEscape (s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") +} + +})( typeof require === "function" ? require : null, + this, + typeof module === "object" ? module : null, + typeof process === "object" ? process.platform : "win32" + ) diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/package.json new file mode 100644 index 00000000..92531644 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/package.json @@ -0,0 +1,82 @@ +{ + "_args": [ + [ + "minimatch@~0.2.11", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob" + ] + ], + "_from": "minimatch@>=0.2.11 <0.3.0", + "_id": "minimatch@0.2.14", + "_inCache": true, + "_installable": true, + "_location": "/mocha/minimatch", + "_npmUser": { + "email": "i@izs.me", + "name": "isaacs" + }, + "_npmVersion": "1.3.17", + "_phantomChildren": {}, + "_requested": { + "name": "minimatch", + "raw": "minimatch@~0.2.11", + "rawSpec": "~0.2.11", + "scope": null, + "spec": ">=0.2.11 <0.3.0", + "type": "range" + }, + "_requiredBy": [ + "/mocha/glob" + ], + "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "_shasum": "c74e780574f63c6f9a090e90efbe6ef53a6a756a", + "_shrinkwrap": null, + "_spec": "minimatch@~0.2.11", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\glob", + "author": { + "email": "i@izs.me", + "name": "Isaac Z. Schlueter", + "url": "http://blog.izs.me" + }, + "bugs": { + "url": "https://github.com/isaacs/minimatch/issues" + }, + "dependencies": { + "lru-cache": "2", + "sigmund": "~1.0.0" + }, + "description": "a glob matcher in javascript", + "devDependencies": { + "tap": "" + }, + "directories": {}, + "dist": { + "shasum": "c74e780574f63c6f9a090e90efbe6ef53a6a756a", + "tarball": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz" + }, + "engines": { + "node": "*" + }, + "homepage": "https://github.com/isaacs/minimatch", + "license": { + "type": "MIT", + "url": "http://github.com/isaacs/minimatch/raw/master/LICENSE" + }, + "main": "minimatch.js", + "maintainers": [ + { + "email": "i@izs.me", + "name": "isaacs" + } + ], + "name": "minimatch", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/minimatch.git" + }, + "scripts": { + "test": "tap test/*.js" + }, + "version": "0.2.14" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/test/basic.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/test/basic.js new file mode 100644 index 00000000..ae7ac73c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/test/basic.js @@ -0,0 +1,399 @@ +// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test +// +// TODO: Some of these tests do very bad things with backslashes, and will +// most likely fail badly on windows. They should probably be skipped. + +var tap = require("tap") + , globalBefore = Object.keys(global) + , mm = require("../") + , files = [ "a", "b", "c", "d", "abc" + , "abd", "abe", "bb", "bcd" + , "ca", "cb", "dd", "de" + , "bdir/", "bdir/cfile"] + , next = files.concat([ "a-b", "aXb" + , ".x", ".y" ]) + + +var patterns = + [ "http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test" + , ["a*", ["a", "abc", "abd", "abe"]] + , ["X*", ["X*"], {nonull: true}] + + // allow null glob expansion + , ["X*", []] + + // isaacs: Slightly different than bash/sh/ksh + // \\* is not un-escaped to literal "*" in a failed match, + // but it does make it get treated as a literal star + , ["\\*", ["\\*"], {nonull: true}] + , ["\\**", ["\\**"], {nonull: true}] + , ["\\*\\*", ["\\*\\*"], {nonull: true}] + + , ["b*/", ["bdir/"]] + , ["c*", ["c", "ca", "cb"]] + , ["**", files] + + , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] + , ["s/\\..*//", ["s/\\..*//"], {nonull: true}] + + , "legendary larry crashes bashes" + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] + + , "character classes" + , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] + , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", + "bdir/", "ca", "cb", "dd", "de"]] + , ["a*[^c]", ["abd", "abe"]] + , function () { files.push("a-b", "aXb") } + , ["a[X-]b", ["a-b", "aXb"]] + , function () { files.push(".x", ".y") } + , ["[^a-c]*", ["d", "dd", "de"]] + , function () { files.push("a*b/", "a*b/ooo") } + , ["a\\*b/*", ["a*b/ooo"]] + , ["a\\*?/*", ["a*b/ooo"]] + , ["*\\\\!*", [], {null: true}, ["echo !7"]] + , ["*\\!*", ["echo !7"], null, ["echo !7"]] + , ["*.\\*", ["r.*"], null, ["r.*"]] + , ["a[b]c", ["abc"]] + , ["a[\\b]c", ["abc"]] + , ["a?c", ["abc"]] + , ["a\\*c", [], {null: true}, ["abc"]] + , ["", [""], { null: true }, [""]] + + , "http://www.opensource.apple.com/source/bash/bash-23/" + + "bash/tests/glob-test" + , function () { files.push("man/", "man/man1/", "man/man1/bash.1") } + , ["*/man*/bash.*", ["man/man1/bash.1"]] + , ["man/man1/bash.1", ["man/man1/bash.1"]] + , ["a***c", ["abc"], null, ["abc"]] + , ["a*****?c", ["abc"], null, ["abc"]] + , ["?*****??", ["abc"], null, ["abc"]] + , ["*****??", ["abc"], null, ["abc"]] + , ["?*****?c", ["abc"], null, ["abc"]] + , ["?***?****c", ["abc"], null, ["abc"]] + , ["?***?****?", ["abc"], null, ["abc"]] + , ["?***?****", ["abc"], null, ["abc"]] + , ["*******c", ["abc"], null, ["abc"]] + , ["*******?", ["abc"], null, ["abc"]] + , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["[-abc]", ["-"], null, ["-"]] + , ["[abc-]", ["-"], null, ["-"]] + , ["\\", ["\\"], null, ["\\"]] + , ["[\\\\]", ["\\"], null, ["\\"]] + , ["[[]", ["["], null, ["["]] + , ["[", ["["], null, ["["]] + , ["[*", ["[abc"], null, ["[abc"]] + , "a right bracket shall lose its special meaning and\n" + + "represent itself in a bracket expression if it occurs\n" + + "first in the list. -- POSIX.2 2.8.3.2" + , ["[]]", ["]"], null, ["]"]] + , ["[]-]", ["]"], null, ["]"]] + , ["[a-\z]", ["p"], null, ["p"]] + , ["??**********?****?", [], { null: true }, ["abc"]] + , ["??**********?****c", [], { null: true }, ["abc"]] + , ["?************c****?****", [], { null: true }, ["abc"]] + , ["*c*?**", [], { null: true }, ["abc"]] + , ["a*****c*?**", [], { null: true }, ["abc"]] + , ["a********???*******", [], { null: true }, ["abc"]] + , ["[]", [], { null: true }, ["a"]] + , ["[abc", [], { null: true }, ["["]] + + , "nocase tests" + , ["XYZ", ["xYz"], { nocase: true, null: true } + , ["xYz", "ABC", "IjK"]] + , ["ab*", ["ABC"], { nocase: true, null: true } + , ["xYz", "ABC", "IjK"]] + , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } + , ["xYz", "ABC", "IjK"]] + + // [ pattern, [matches], MM opts, files, TAP opts] + , "onestar/twostar" + , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] + , ["{/?,*}", ["/a", "bb"], {null: true} + , ["/a", "/b/b", "/a/b/c", "bb"]] + + , "dots should not match unless requested" + , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] + + // .. and . can only match patterns starting with ., + // even when options.dot is set. + , function () { + files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] + } + , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] + , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] + , ["a/*/b", ["a/c/b"], {dot:false}] + , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] + + + // this also tests that changing the options needs + // to change the cache key, even if the pattern is + // the same! + , ["**", ["a/b","a/.d",".a/.d"], { dot: true } + , [ ".a/.d", "a/.d", "a/b"]] + + , "paren sets cannot contain slashes" + , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] + + // brace sets trump all else. + // + // invalid glob pattern. fails on bash4 and bsdglob. + // however, in this implementation, it's easier just + // to do the intuitive thing, and let brace-expansion + // actually come before parsing any extglob patterns, + // like the documentation seems to say. + // + // XXX: if anyone complains about this, either fix it + // or tell them to grow up and stop complaining. + // + // bash/bsdglob says this: + // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] + // but we do this instead: + , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] + + // test partial parsing in the presence of comment/negation chars + , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] + , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] + + // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. + , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" + , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] + , {} + , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] + + + // crazy nested {,,} and *(||) tests. + , function () { + files = [ "a", "b", "c", "d" + , "ab", "ac", "ad" + , "bc", "cb" + , "bc,d", "c,db", "c,d" + , "d)", "(b|c", "*(b|c" + , "b|c", "b|cc", "cb|c" + , "x(a|b|c)", "x(a|c)" + , "(a|b|c)", "(a|c)"] + } + , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] + , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] + // a + // *(b|c) + // *(b|d) + , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] + , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] + + + // test various flag settings. + , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] + , { noext: true } ] + , ["a?b", ["x/y/acb", "acb/"], {matchBase: true} + , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] + , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] + + + // begin channelling Boole and deMorgan... + , "negation tests" + , function () { + files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] + } + + // anything that is NOT a* matches. + , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] + + // anything that IS !a* matches. + , ["!a*", ["!ab", "!abc"], {nonegate: true}] + + // anything that IS a* matches + , ["!!a*", ["a!b"]] + + // anything that is NOT !a* matches + , ["!\\!a*", ["a!b", "d", "e", "\\!a"]] + + // negation nestled within a pattern + , function () { + files = [ "foo.js" + , "foo.bar" + // can't match this one without negative lookbehind. + , "foo.js.js" + , "blar.js" + , "foo." + , "boo.js.boo" ] + } + , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] + + // https://github.com/isaacs/minimatch/issues/5 + , function () { + files = [ 'a/b/.x/c' + , 'a/b/.x/c/d' + , 'a/b/.x/c/d/e' + , 'a/b/.x' + , 'a/b/.x/' + , 'a/.x/b' + , '.x' + , '.x/' + , '.x/a' + , '.x/a/b' + , 'a/.x/b/.x/c' + , '.x/.x' ] + } + , ["**/.x/**", [ '.x/' + , '.x/a' + , '.x/a/b' + , 'a/.x/b' + , 'a/b/.x/' + , 'a/b/.x/c' + , 'a/b/.x/c/d' + , 'a/b/.x/c/d/e' ] ] + + ] + +var regexps = + [ '/^(?:(?=.)a[^/]*?)$/', + '/^(?:(?=.)X[^/]*?)$/', + '/^(?:(?=.)X[^/]*?)$/', + '/^(?:\\*)$/', + '/^(?:(?=.)\\*[^/]*?)$/', + '/^(?:\\*\\*)$/', + '/^(?:(?=.)b[^/]*?\\/)$/', + '/^(?:(?=.)c[^/]*?)$/', + '/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/', + '/^(?:\\.\\.\\/(?!\\.)(?=.)[^/]*?\\/)$/', + '/^(?:s\\/(?=.)\\.\\.[^/]*?\\/)$/', + '/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/1\\/)$/', + '/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/\u0001\\/)$/', + '/^(?:(?!\\.)(?=.)[a-c]b[^/]*?)$/', + '/^(?:(?!\\.)(?=.)[a-y][^/]*?[^c])$/', + '/^(?:(?=.)a[^/]*?[^c])$/', + '/^(?:(?=.)a[X-]b)$/', + '/^(?:(?!\\.)(?=.)[^a-c][^/]*?)$/', + '/^(?:a\\*b\\/(?!\\.)(?=.)[^/]*?)$/', + '/^(?:(?=.)a\\*[^/]\\/(?!\\.)(?=.)[^/]*?)$/', + '/^(?:(?!\\.)(?=.)[^/]*?\\\\\\![^/]*?)$/', + '/^(?:(?!\\.)(?=.)[^/]*?\\![^/]*?)$/', + '/^(?:(?!\\.)(?=.)[^/]*?\\.\\*)$/', + '/^(?:(?=.)a[b]c)$/', + '/^(?:(?=.)a[b]c)$/', + '/^(?:(?=.)a[^/]c)$/', + '/^(?:a\\*c)$/', + 'false', + '/^(?:(?!\\.)(?=.)[^/]*?\\/(?=.)man[^/]*?\\/(?=.)bash\\.[^/]*?)$/', + '/^(?:man\\/man1\\/bash\\.1)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?c)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/', + '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/', + '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/', + '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/', + '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/', + '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', + '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/', + '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c)$/', + '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', + '/^(?:(?=.)a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/', + '/^(?:(?!\\.)(?=.)[-abc])$/', + '/^(?:(?!\\.)(?=.)[abc-])$/', + '/^(?:\\\\)$/', + '/^(?:(?!\\.)(?=.)[\\\\])$/', + '/^(?:(?!\\.)(?=.)[\\[])$/', + '/^(?:\\[)$/', + '/^(?:(?=.)\\[(?!\\.)(?=.)[^/]*?)$/', + '/^(?:(?!\\.)(?=.)[\\]])$/', + '/^(?:(?!\\.)(?=.)[\\]-])$/', + '/^(?:(?!\\.)(?=.)[a-z])$/', + '/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', + '/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/', + '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/', + '/^(?:(?!\\.)(?=.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/', + '/^(?:\\[\\])$/', + '/^(?:\\[abc)$/', + '/^(?:(?=.)XYZ)$/i', + '/^(?:(?=.)ab[^/]*?)$/i', + '/^(?:(?!\\.)(?=.)[ia][^/][ck])$/i', + '/^(?:\\/(?!\\.)(?=.)[^/]*?|(?!\\.)(?=.)[^/]*?)$/', + '/^(?:\\/(?!\\.)(?=.)[^/]|(?!\\.)(?=.)[^/]*?)$/', + '/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/', + '/^(?:a\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\/b)$/', + '/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/', + '/^(?:a\\/(?!\\.)(?=.)[^/]*?\\/b)$/', + '/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/', + '/^(?:(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)$/', + '/^(?:(?!\\.)(?=.)[^/]*?\\(a\\/b\\))$/', + '/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/', + '/^(?:(?=.)\\[(?=.)\\!a[^/]*?)$/', + '/^(?:(?=.)\\[(?=.)#a[^/]*?)$/', + '/^(?:(?=.)\\+\\(a\\|[^/]*?\\|c\\\\\\\\\\|d\\\\\\\\\\|e\\\\\\\\\\\\\\\\\\|f\\\\\\\\\\\\\\\\\\|g)$/', + '/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/', + '/^(?:a|(?!\\.)(?=.)[^/]*?\\(b\\|c|d\\))$/', + '/^(?:a|(?!\\.)(?=.)(?:b|c)*|(?!\\.)(?=.)(?:b|d)*)$/', + '/^(?:(?!\\.)(?=.)(?:a|b|c)*|(?!\\.)(?=.)(?:a|c)*)$/', + '/^(?:(?!\\.)(?=.)[^/]*?\\(a\\|b\\|c\\)|(?!\\.)(?=.)[^/]*?\\(a\\|c\\))$/', + '/^(?:(?=.)a[^/]b)$/', + '/^(?:(?=.)#[^/]*?)$/', + '/^(?!^(?:(?=.)a[^/]*?)$).*$/', + '/^(?:(?=.)\\!a[^/]*?)$/', + '/^(?:(?=.)a[^/]*?)$/', + '/^(?!^(?:(?=.)\\!a[^/]*?)$).*$/', + '/^(?:(?!\\.)(?=.)[^/]*?\\.(?:(?!js)[^/]*?))$/', + '/^(?:(?:(?!(?:\\/|^)\\.).)*?\\/\\.x\\/(?:(?!(?:\\/|^)\\.).)*?)$/' ] +var re = 0; + +tap.test("basic tests", function (t) { + var start = Date.now() + + // [ pattern, [matches], MM opts, files, TAP opts] + patterns.forEach(function (c) { + if (typeof c === "function") return c() + if (typeof c === "string") return t.comment(c) + + var pattern = c[0] + , expect = c[1].sort(alpha) + , options = c[2] || {} + , f = c[3] || files + , tapOpts = c[4] || {} + + // options.debug = true + var m = new mm.Minimatch(pattern, options) + var r = m.makeRe() + var expectRe = regexps[re++] + tapOpts.re = String(r) || JSON.stringify(r) + tapOpts.files = JSON.stringify(f) + tapOpts.pattern = pattern + tapOpts.set = m.set + tapOpts.negated = m.negate + + var actual = mm.match(f, pattern, options) + actual.sort(alpha) + + t.equivalent( actual, expect + , JSON.stringify(pattern) + " " + JSON.stringify(expect) + , tapOpts ) + + t.equal(tapOpts.re, expectRe, tapOpts) + }) + + t.comment("time=" + (Date.now() - start) + "ms") + t.end() +}) + +tap.test("global leak test", function (t) { + var globalAfter = Object.keys(global) + t.equivalent(globalAfter, globalBefore, "no new globals, please") + t.end() +}) + +function alpha (a, b) { + return a > b ? 1 : -1 +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/test/brace-expand.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/test/brace-expand.js new file mode 100644 index 00000000..7ee278a2 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/test/brace-expand.js @@ -0,0 +1,33 @@ +var tap = require("tap") + , minimatch = require("../") + +tap.test("brace expansion", function (t) { + // [ pattern, [expanded] ] + ; [ [ "a{b,c{d,e},{f,g}h}x{y,z}" + , [ "abxy" + , "abxz" + , "acdxy" + , "acdxz" + , "acexy" + , "acexz" + , "afhxy" + , "afhxz" + , "aghxy" + , "aghxz" ] ] + , [ "a{1..5}b" + , [ "a1b" + , "a2b" + , "a3b" + , "a4b" + , "a5b" ] ] + , [ "a{b}c", ["a{b}c"] ] + ].forEach(function (tc) { + var p = tc[0] + , expect = tc[1] + t.equivalent(minimatch.braceExpand(p), expect, p) + }) + console.error("ending") + t.end() +}) + + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/test/caching.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/test/caching.js new file mode 100644 index 00000000..0fec4b0f --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/test/caching.js @@ -0,0 +1,14 @@ +var Minimatch = require("../minimatch.js").Minimatch +var tap = require("tap") +tap.test("cache test", function (t) { + var mm1 = new Minimatch("a?b") + var mm2 = new Minimatch("a?b") + t.equal(mm1, mm2, "should get the same object") + // the lru should drop it after 100 entries + for (var i = 0; i < 100; i ++) { + new Minimatch("a"+i) + } + mm2 = new Minimatch("a?b") + t.notEqual(mm1, mm2, "cache should have dropped") + t.end() +}) diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/test/defaults.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/test/defaults.js new file mode 100644 index 00000000..25f1f601 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/test/defaults.js @@ -0,0 +1,274 @@ +// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test +// +// TODO: Some of these tests do very bad things with backslashes, and will +// most likely fail badly on windows. They should probably be skipped. + +var tap = require("tap") + , globalBefore = Object.keys(global) + , mm = require("../") + , files = [ "a", "b", "c", "d", "abc" + , "abd", "abe", "bb", "bcd" + , "ca", "cb", "dd", "de" + , "bdir/", "bdir/cfile"] + , next = files.concat([ "a-b", "aXb" + , ".x", ".y" ]) + +tap.test("basic tests", function (t) { + var start = Date.now() + + // [ pattern, [matches], MM opts, files, TAP opts] + ; [ "http://www.bashcookbook.com/bashinfo" + + "/source/bash-1.14.7/tests/glob-test" + , ["a*", ["a", "abc", "abd", "abe"]] + , ["X*", ["X*"], {nonull: true}] + + // allow null glob expansion + , ["X*", []] + + // isaacs: Slightly different than bash/sh/ksh + // \\* is not un-escaped to literal "*" in a failed match, + // but it does make it get treated as a literal star + , ["\\*", ["\\*"], {nonull: true}] + , ["\\**", ["\\**"], {nonull: true}] + , ["\\*\\*", ["\\*\\*"], {nonull: true}] + + , ["b*/", ["bdir/"]] + , ["c*", ["c", "ca", "cb"]] + , ["**", files] + + , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] + , ["s/\\..*//", ["s/\\..*//"], {nonull: true}] + + , "legendary larry crashes bashes" + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] + + , "character classes" + , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] + , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", + "bdir/", "ca", "cb", "dd", "de"]] + , ["a*[^c]", ["abd", "abe"]] + , function () { files.push("a-b", "aXb") } + , ["a[X-]b", ["a-b", "aXb"]] + , function () { files.push(".x", ".y") } + , ["[^a-c]*", ["d", "dd", "de"]] + , function () { files.push("a*b/", "a*b/ooo") } + , ["a\\*b/*", ["a*b/ooo"]] + , ["a\\*?/*", ["a*b/ooo"]] + , ["*\\\\!*", [], {null: true}, ["echo !7"]] + , ["*\\!*", ["echo !7"], null, ["echo !7"]] + , ["*.\\*", ["r.*"], null, ["r.*"]] + , ["a[b]c", ["abc"]] + , ["a[\\b]c", ["abc"]] + , ["a?c", ["abc"]] + , ["a\\*c", [], {null: true}, ["abc"]] + , ["", [""], { null: true }, [""]] + + , "http://www.opensource.apple.com/source/bash/bash-23/" + + "bash/tests/glob-test" + , function () { files.push("man/", "man/man1/", "man/man1/bash.1") } + , ["*/man*/bash.*", ["man/man1/bash.1"]] + , ["man/man1/bash.1", ["man/man1/bash.1"]] + , ["a***c", ["abc"], null, ["abc"]] + , ["a*****?c", ["abc"], null, ["abc"]] + , ["?*****??", ["abc"], null, ["abc"]] + , ["*****??", ["abc"], null, ["abc"]] + , ["?*****?c", ["abc"], null, ["abc"]] + , ["?***?****c", ["abc"], null, ["abc"]] + , ["?***?****?", ["abc"], null, ["abc"]] + , ["?***?****", ["abc"], null, ["abc"]] + , ["*******c", ["abc"], null, ["abc"]] + , ["*******?", ["abc"], null, ["abc"]] + , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["[-abc]", ["-"], null, ["-"]] + , ["[abc-]", ["-"], null, ["-"]] + , ["\\", ["\\"], null, ["\\"]] + , ["[\\\\]", ["\\"], null, ["\\"]] + , ["[[]", ["["], null, ["["]] + , ["[", ["["], null, ["["]] + , ["[*", ["[abc"], null, ["[abc"]] + , "a right bracket shall lose its special meaning and\n" + + "represent itself in a bracket expression if it occurs\n" + + "first in the list. -- POSIX.2 2.8.3.2" + , ["[]]", ["]"], null, ["]"]] + , ["[]-]", ["]"], null, ["]"]] + , ["[a-\z]", ["p"], null, ["p"]] + , ["??**********?****?", [], { null: true }, ["abc"]] + , ["??**********?****c", [], { null: true }, ["abc"]] + , ["?************c****?****", [], { null: true }, ["abc"]] + , ["*c*?**", [], { null: true }, ["abc"]] + , ["a*****c*?**", [], { null: true }, ["abc"]] + , ["a********???*******", [], { null: true }, ["abc"]] + , ["[]", [], { null: true }, ["a"]] + , ["[abc", [], { null: true }, ["["]] + + , "nocase tests" + , ["XYZ", ["xYz"], { nocase: true, null: true } + , ["xYz", "ABC", "IjK"]] + , ["ab*", ["ABC"], { nocase: true, null: true } + , ["xYz", "ABC", "IjK"]] + , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } + , ["xYz", "ABC", "IjK"]] + + // [ pattern, [matches], MM opts, files, TAP opts] + , "onestar/twostar" + , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] + , ["{/?,*}", ["/a", "bb"], {null: true} + , ["/a", "/b/b", "/a/b/c", "bb"]] + + , "dots should not match unless requested" + , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] + + // .. and . can only match patterns starting with ., + // even when options.dot is set. + , function () { + files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] + } + , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] + , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] + , ["a/*/b", ["a/c/b"], {dot:false}] + , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] + + + // this also tests that changing the options needs + // to change the cache key, even if the pattern is + // the same! + , ["**", ["a/b","a/.d",".a/.d"], { dot: true } + , [ ".a/.d", "a/.d", "a/b"]] + + , "paren sets cannot contain slashes" + , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] + + // brace sets trump all else. + // + // invalid glob pattern. fails on bash4 and bsdglob. + // however, in this implementation, it's easier just + // to do the intuitive thing, and let brace-expansion + // actually come before parsing any extglob patterns, + // like the documentation seems to say. + // + // XXX: if anyone complains about this, either fix it + // or tell them to grow up and stop complaining. + // + // bash/bsdglob says this: + // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] + // but we do this instead: + , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] + + // test partial parsing in the presence of comment/negation chars + , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] + , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] + + // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. + , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" + , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] + , {} + , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] + + + // crazy nested {,,} and *(||) tests. + , function () { + files = [ "a", "b", "c", "d" + , "ab", "ac", "ad" + , "bc", "cb" + , "bc,d", "c,db", "c,d" + , "d)", "(b|c", "*(b|c" + , "b|c", "b|cc", "cb|c" + , "x(a|b|c)", "x(a|c)" + , "(a|b|c)", "(a|c)"] + } + , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] + , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] + // a + // *(b|c) + // *(b|d) + , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] + , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] + + + // test various flag settings. + , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] + , { noext: true } ] + , ["a?b", ["x/y/acb", "acb/"], {matchBase: true} + , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] + , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] + + + // begin channelling Boole and deMorgan... + , "negation tests" + , function () { + files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] + } + + // anything that is NOT a* matches. + , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] + + // anything that IS !a* matches. + , ["!a*", ["!ab", "!abc"], {nonegate: true}] + + // anything that IS a* matches + , ["!!a*", ["a!b"]] + + // anything that is NOT !a* matches + , ["!\\!a*", ["a!b", "d", "e", "\\!a"]] + + // negation nestled within a pattern + , function () { + files = [ "foo.js" + , "foo.bar" + // can't match this one without negative lookbehind. + , "foo.js.js" + , "blar.js" + , "foo." + , "boo.js.boo" ] + } + , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] + + ].forEach(function (c) { + if (typeof c === "function") return c() + if (typeof c === "string") return t.comment(c) + + var pattern = c[0] + , expect = c[1].sort(alpha) + , options = c[2] || {} + , f = c[3] || files + , tapOpts = c[4] || {} + + // options.debug = true + var Class = mm.defaults(options).Minimatch + var m = new Class(pattern, {}) + var r = m.makeRe() + tapOpts.re = String(r) || JSON.stringify(r) + tapOpts.files = JSON.stringify(f) + tapOpts.pattern = pattern + tapOpts.set = m.set + tapOpts.negated = m.negate + + var actual = mm.match(f, pattern, options) + actual.sort(alpha) + + t.equivalent( actual, expect + , JSON.stringify(pattern) + " " + JSON.stringify(expect) + , tapOpts ) + }) + + t.comment("time=" + (Date.now() - start) + "ms") + t.end() +}) + +tap.test("global leak test", function (t) { + var globalAfter = Object.keys(global) + t.equivalent(globalAfter, globalBefore, "no new globals, please") + t.end() +}) + +function alpha (a, b) { + return a > b ? 1 : -1 +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/test/extglob-ending-with-state-char.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/test/extglob-ending-with-state-char.js new file mode 100644 index 00000000..6676e262 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimatch/test/extglob-ending-with-state-char.js @@ -0,0 +1,8 @@ +var test = require('tap').test +var minimatch = require('../') + +test('extglob ending with statechar', function(t) { + t.notOk(minimatch('ax', 'a?(b*)')) + t.ok(minimatch('ax', '?(a*|b)')) + t.end() +}) diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/minimist/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/.travis.yml similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/minimist/.travis.yml rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/LICENSE new file mode 100644 index 00000000..ee27ba4b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/LICENSE @@ -0,0 +1,18 @@ +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/example/parse.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/example/parse.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/example/parse.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/example/parse.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/index.js new file mode 100644 index 00000000..584f551a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/index.js @@ -0,0 +1,187 @@ +module.exports = function (args, opts) { + if (!opts) opts = {}; + + var flags = { bools : {}, strings : {} }; + + [].concat(opts['boolean']).filter(Boolean).forEach(function (key) { + flags.bools[key] = true; + }); + + [].concat(opts.string).filter(Boolean).forEach(function (key) { + flags.strings[key] = true; + }); + + var aliases = {}; + Object.keys(opts.alias || {}).forEach(function (key) { + aliases[key] = [].concat(opts.alias[key]); + aliases[key].forEach(function (x) { + aliases[x] = [key].concat(aliases[key].filter(function (y) { + return x !== y; + })); + }); + }); + + var defaults = opts['default'] || {}; + + var argv = { _ : [] }; + Object.keys(flags.bools).forEach(function (key) { + setArg(key, defaults[key] === undefined ? false : defaults[key]); + }); + + var notFlags = []; + + if (args.indexOf('--') !== -1) { + notFlags = args.slice(args.indexOf('--')+1); + args = args.slice(0, args.indexOf('--')); + } + + function setArg (key, val) { + var value = !flags.strings[key] && isNumber(val) + ? Number(val) : val + ; + setKey(argv, key.split('.'), value); + + (aliases[key] || []).forEach(function (x) { + setKey(argv, x.split('.'), value); + }); + } + + for (var i = 0; i < args.length; i++) { + var arg = args[i]; + + if (/^--.+=/.test(arg)) { + // Using [\s\S] instead of . because js doesn't support the + // 'dotall' regex modifier. See: + // http://stackoverflow.com/a/1068308/13216 + var m = arg.match(/^--([^=]+)=([\s\S]*)$/); + setArg(m[1], m[2]); + } + else if (/^--no-.+/.test(arg)) { + var key = arg.match(/^--no-(.+)/)[1]; + setArg(key, false); + } + else if (/^--.+/.test(arg)) { + var key = arg.match(/^--(.+)/)[1]; + var next = args[i + 1]; + if (next !== undefined && !/^-/.test(next) + && !flags.bools[key] + && (aliases[key] ? !flags.bools[aliases[key]] : true)) { + setArg(key, next); + i++; + } + else if (/^(true|false)$/.test(next)) { + setArg(key, next === 'true'); + i++; + } + else { + setArg(key, flags.strings[key] ? '' : true); + } + } + else if (/^-[^-]+/.test(arg)) { + var letters = arg.slice(1,-1).split(''); + + var broken = false; + for (var j = 0; j < letters.length; j++) { + var next = arg.slice(j+2); + + if (next === '-') { + setArg(letters[j], next) + continue; + } + + if (/[A-Za-z]/.test(letters[j]) + && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) { + setArg(letters[j], next); + broken = true; + break; + } + + if (letters[j+1] && letters[j+1].match(/\W/)) { + setArg(letters[j], arg.slice(j+2)); + broken = true; + break; + } + else { + setArg(letters[j], flags.strings[letters[j]] ? '' : true); + } + } + + var key = arg.slice(-1)[0]; + if (!broken && key !== '-') { + if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1]) + && !flags.bools[key] + && (aliases[key] ? !flags.bools[aliases[key]] : true)) { + setArg(key, args[i+1]); + i++; + } + else if (args[i+1] && /true|false/.test(args[i+1])) { + setArg(key, args[i+1] === 'true'); + i++; + } + else { + setArg(key, flags.strings[key] ? '' : true); + } + } + } + else { + argv._.push( + flags.strings['_'] || !isNumber(arg) ? arg : Number(arg) + ); + } + } + + Object.keys(defaults).forEach(function (key) { + if (!hasKey(argv, key.split('.'))) { + setKey(argv, key.split('.'), defaults[key]); + + (aliases[key] || []).forEach(function (x) { + setKey(argv, x.split('.'), defaults[key]); + }); + } + }); + + notFlags.forEach(function(key) { + argv._.push(key); + }); + + return argv; +}; + +function hasKey (obj, keys) { + var o = obj; + keys.slice(0,-1).forEach(function (key) { + o = (o[key] || {}); + }); + + var key = keys[keys.length - 1]; + return key in o; +} + +function setKey (obj, keys, value) { + var o = obj; + keys.slice(0,-1).forEach(function (key) { + if (o[key] === undefined) o[key] = {}; + o = o[key]; + }); + + var key = keys[keys.length - 1]; + if (o[key] === undefined || typeof o[key] === 'boolean') { + o[key] = value; + } + else if (Array.isArray(o[key])) { + o[key].push(value); + } + else { + o[key] = [ o[key], value ]; + } +} + +function isNumber (x) { + if (typeof x === 'number') return true; + if (/^0x[0-9a-f]+$/i.test(x)) return true; + return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); +} + +function longest (xs) { + return Math.max.apply(null, xs.map(function (x) { return x.length })); +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/package.json new file mode 100644 index 00000000..7798473c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/package.json @@ -0,0 +1,93 @@ +{ + "_args": [ + [ + "minimist@0.0.8", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp" + ] + ], + "_from": "minimist@0.0.8", + "_id": "minimist@0.0.8", + "_inCache": true, + "_installable": true, + "_location": "/mocha/minimist", + "_npmUser": { + "email": "mail@substack.net", + "name": "substack" + }, + "_npmVersion": "1.4.3", + "_phantomChildren": {}, + "_requested": { + "name": "minimist", + "raw": "minimist@0.0.8", + "rawSpec": "0.0.8", + "scope": null, + "spec": "0.0.8", + "type": "version" + }, + "_requiredBy": [ + "/mocha/mkdirp" + ], + "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "_shasum": "857fcabfc3397d2625b8228262e86aa7a011b05d", + "_shrinkwrap": null, + "_spec": "minimist@0.0.8", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\mkdirp", + "author": { + "email": "mail@substack.net", + "name": "James Halliday", + "url": "http://substack.net" + }, + "bugs": { + "url": "https://github.com/substack/minimist/issues" + }, + "dependencies": {}, + "description": "parse argument options", + "devDependencies": { + "tap": "~0.4.0", + "tape": "~1.0.4" + }, + "directories": {}, + "dist": { + "shasum": "857fcabfc3397d2625b8228262e86aa7a011b05d", + "tarball": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + }, + "homepage": "https://github.com/substack/minimist", + "keywords": [ + "argv", + "getopt", + "parser", + "optimist" + ], + "license": "MIT", + "main": "index.js", + "maintainers": [ + { + "email": "mail@substack.net", + "name": "substack" + } + ], + "name": "minimist", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/substack/minimist.git" + }, + "scripts": { + "test": "tap test/*.js" + }, + "testling": { + "browsers": [ + "ie/6..latest", + "ff/5", + "firefox/latest", + "chrome/10", + "chrome/latest", + "safari/5.1", + "safari/latest", + "opera/12" + ], + "files": "test/*.js" + }, + "version": "0.0.8" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/readme.markdown b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/readme.markdown similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/readme.markdown rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/readme.markdown diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/dash.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/test/dash.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/dash.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/test/dash.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/default_bool.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/test/default_bool.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/default_bool.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/test/default_bool.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/dotted.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/test/dotted.js similarity index 75% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/dotted.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/test/dotted.js index d8b3e856..ef0ae349 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/dotted.js +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/test/dotted.js @@ -14,9 +14,3 @@ test('dotted default', function (t) { t.equal(argv.aa.bb, 11); t.end(); }); - -test('dotted default with no alias', function (t) { - var argv = parse('', {default: {'a.b': 11}}); - t.equal(argv.a.b, 11); - t.end(); -}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/long.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/test/long.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/long.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/test/long.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/test/parse.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/test/parse.js new file mode 100644 index 00000000..8a906466 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/test/parse.js @@ -0,0 +1,318 @@ +var parse = require('../'); +var test = require('tape'); + +test('parse args', function (t) { + t.deepEqual( + parse([ '--no-moo' ]), + { moo : false, _ : [] }, + 'no' + ); + t.deepEqual( + parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]), + { v : ['a','b','c'], _ : [] }, + 'multi' + ); + t.end(); +}); + +test('comprehensive', function (t) { + t.deepEqual( + parse([ + '--name=meowmers', 'bare', '-cats', 'woo', + '-h', 'awesome', '--multi=quux', + '--key', 'value', + '-b', '--bool', '--no-meep', '--multi=baz', + '--', '--not-a-flag', 'eek' + ]), + { + c : true, + a : true, + t : true, + s : 'woo', + h : 'awesome', + b : true, + bool : true, + key : 'value', + multi : [ 'quux', 'baz' ], + meep : false, + name : 'meowmers', + _ : [ 'bare', '--not-a-flag', 'eek' ] + } + ); + t.end(); +}); + +test('nums', function (t) { + var argv = parse([ + '-x', '1234', + '-y', '5.67', + '-z', '1e7', + '-w', '10f', + '--hex', '0xdeadbeef', + '789' + ]); + t.deepEqual(argv, { + x : 1234, + y : 5.67, + z : 1e7, + w : '10f', + hex : 0xdeadbeef, + _ : [ 789 ] + }); + t.deepEqual(typeof argv.x, 'number'); + t.deepEqual(typeof argv.y, 'number'); + t.deepEqual(typeof argv.z, 'number'); + t.deepEqual(typeof argv.w, 'string'); + t.deepEqual(typeof argv.hex, 'number'); + t.deepEqual(typeof argv._[0], 'number'); + t.end(); +}); + +test('flag boolean', function (t) { + var argv = parse([ '-t', 'moo' ], { boolean: 't' }); + t.deepEqual(argv, { t : true, _ : [ 'moo' ] }); + t.deepEqual(typeof argv.t, 'boolean'); + t.end(); +}); + +test('flag boolean value', function (t) { + var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], { + boolean: [ 't', 'verbose' ], + default: { verbose: true } + }); + + t.deepEqual(argv, { + verbose: false, + t: true, + _: ['moo'] + }); + + t.deepEqual(typeof argv.verbose, 'boolean'); + t.deepEqual(typeof argv.t, 'boolean'); + t.end(); +}); + +test('flag boolean default false', function (t) { + var argv = parse(['moo'], { + boolean: ['t', 'verbose'], + default: { verbose: false, t: false } + }); + + t.deepEqual(argv, { + verbose: false, + t: false, + _: ['moo'] + }); + + t.deepEqual(typeof argv.verbose, 'boolean'); + t.deepEqual(typeof argv.t, 'boolean'); + t.end(); + +}); + +test('boolean groups', function (t) { + var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], { + boolean: ['x','y','z'] + }); + + t.deepEqual(argv, { + x : true, + y : false, + z : true, + _ : [ 'one', 'two', 'three' ] + }); + + t.deepEqual(typeof argv.x, 'boolean'); + t.deepEqual(typeof argv.y, 'boolean'); + t.deepEqual(typeof argv.z, 'boolean'); + t.end(); +}); + +test('newlines in params' , function (t) { + var args = parse([ '-s', "X\nX" ]) + t.deepEqual(args, { _ : [], s : "X\nX" }); + + // reproduce in bash: + // VALUE="new + // line" + // node program.js --s="$VALUE" + args = parse([ "--s=X\nX" ]) + t.deepEqual(args, { _ : [], s : "X\nX" }); + t.end(); +}); + +test('strings' , function (t) { + var s = parse([ '-s', '0001234' ], { string: 's' }).s; + t.equal(s, '0001234'); + t.equal(typeof s, 'string'); + + var x = parse([ '-x', '56' ], { string: 'x' }).x; + t.equal(x, '56'); + t.equal(typeof x, 'string'); + t.end(); +}); + +test('stringArgs', function (t) { + var s = parse([ ' ', ' ' ], { string: '_' })._; + t.same(s.length, 2); + t.same(typeof s[0], 'string'); + t.same(s[0], ' '); + t.same(typeof s[1], 'string'); + t.same(s[1], ' '); + t.end(); +}); + +test('empty strings', function(t) { + var s = parse([ '-s' ], { string: 's' }).s; + t.equal(s, ''); + t.equal(typeof s, 'string'); + + var str = parse([ '--str' ], { string: 'str' }).str; + t.equal(str, ''); + t.equal(typeof str, 'string'); + + var letters = parse([ '-art' ], { + string: [ 'a', 't' ] + }); + + t.equal(letters.a, ''); + t.equal(letters.r, true); + t.equal(letters.t, ''); + + t.end(); +}); + + +test('slashBreak', function (t) { + t.same( + parse([ '-I/foo/bar/baz' ]), + { I : '/foo/bar/baz', _ : [] } + ); + t.same( + parse([ '-xyz/foo/bar/baz' ]), + { x : true, y : true, z : '/foo/bar/baz', _ : [] } + ); + t.end(); +}); + +test('alias', function (t) { + var argv = parse([ '-f', '11', '--zoom', '55' ], { + alias: { z: 'zoom' } + }); + t.equal(argv.zoom, 55); + t.equal(argv.z, argv.zoom); + t.equal(argv.f, 11); + t.end(); +}); + +test('multiAlias', function (t) { + var argv = parse([ '-f', '11', '--zoom', '55' ], { + alias: { z: [ 'zm', 'zoom' ] } + }); + t.equal(argv.zoom, 55); + t.equal(argv.z, argv.zoom); + t.equal(argv.z, argv.zm); + t.equal(argv.f, 11); + t.end(); +}); + +test('nested dotted objects', function (t) { + var argv = parse([ + '--foo.bar', '3', '--foo.baz', '4', + '--foo.quux.quibble', '5', '--foo.quux.o_O', + '--beep.boop' + ]); + + t.same(argv.foo, { + bar : 3, + baz : 4, + quux : { + quibble : 5, + o_O : true + } + }); + t.same(argv.beep, { boop : true }); + t.end(); +}); + +test('boolean and alias with chainable api', function (t) { + var aliased = [ '-h', 'derp' ]; + var regular = [ '--herp', 'derp' ]; + var opts = { + herp: { alias: 'h', boolean: true } + }; + var aliasedArgv = parse(aliased, { + boolean: 'herp', + alias: { h: 'herp' } + }); + var propertyArgv = parse(regular, { + boolean: 'herp', + alias: { h: 'herp' } + }); + var expected = { + herp: true, + h: true, + '_': [ 'derp' ] + }; + + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +test('boolean and alias with options hash', function (t) { + var aliased = [ '-h', 'derp' ]; + var regular = [ '--herp', 'derp' ]; + var opts = { + alias: { 'h': 'herp' }, + boolean: 'herp' + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + var expected = { + herp: true, + h: true, + '_': [ 'derp' ] + }; + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +test('boolean and alias using explicit true', function (t) { + var aliased = [ '-h', 'true' ]; + var regular = [ '--herp', 'true' ]; + var opts = { + alias: { h: 'herp' }, + boolean: 'h' + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + var expected = { + herp: true, + h: true, + '_': [ ] + }; + + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +// regression, see https://github.com/substack/node-optimist/issues/71 +test('boolean and --x=true', function(t) { + var parsed = parse(['--boool', '--other=true'], { + boolean: 'boool' + }); + + t.same(parsed.boool, true); + t.same(parsed.other, 'true'); + + parsed = parse(['--boool', '--other=false'], { + boolean: 'boool' + }); + + t.same(parsed.boool, true); + t.same(parsed.other, 'false'); + t.end(); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/parse_modified.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/test/parse_modified.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/parse_modified.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/test/parse_modified.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/short.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/test/short.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/short.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/test/short.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/whitespace.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/test/whitespace.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/whitespace.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/minimist/test/whitespace.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/.travis.yml new file mode 100644 index 00000000..74c57bf1 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/.travis.yml @@ -0,0 +1,8 @@ +language: node_js +node_js: + - "0.8" + - "0.10" + - "0.12" + - "iojs" +before_install: + - npm install -g npm@~1.4.6 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/LICENSE new file mode 100644 index 00000000..432d1aeb --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/LICENSE @@ -0,0 +1,21 @@ +Copyright 2010 James Halliday (mail@substack.net) + +This project is free software released under the MIT/X11 license: + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/bin/cmd.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/bin/cmd.js new file mode 100644 index 00000000..d95de15a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/bin/cmd.js @@ -0,0 +1,33 @@ +#!/usr/bin/env node + +var mkdirp = require('../'); +var minimist = require('minimist'); +var fs = require('fs'); + +var argv = minimist(process.argv.slice(2), { + alias: { m: 'mode', h: 'help' }, + string: [ 'mode' ] +}); +if (argv.help) { + fs.createReadStream(__dirname + '/usage.txt').pipe(process.stdout); + return; +} + +var paths = argv._.slice(); +var mode = argv.mode ? parseInt(argv.mode, 8) : undefined; + +(function next () { + if (paths.length === 0) return; + var p = paths.shift(); + + if (mode === undefined) mkdirp(p, cb) + else mkdirp(p, mode, cb) + + function cb (err) { + if (err) { + console.error(err.message); + process.exit(1); + } + else next(); + } +})(); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/bin/usage.txt b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/bin/usage.txt new file mode 100644 index 00000000..f952aa2c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/bin/usage.txt @@ -0,0 +1,12 @@ +usage: mkdirp [DIR1,DIR2..] {OPTIONS} + + Create each supplied directory including any necessary parent directories that + don't yet exist. + + If the directory already exists, do nothing. + +OPTIONS are: + + -m, --mode If a directory needs to be created, set the mode as an octal + permission string. + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/examples/pow.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/examples/pow.js new file mode 100644 index 00000000..e6924212 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/examples/pow.js @@ -0,0 +1,6 @@ +var mkdirp = require('mkdirp'); + +mkdirp('/tmp/foo/bar/baz', function (err) { + if (err) console.error(err) + else console.log('pow!') +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/index.js new file mode 100644 index 00000000..6ce241b5 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/index.js @@ -0,0 +1,98 @@ +var path = require('path'); +var fs = require('fs'); +var _0777 = parseInt('0777', 8); + +module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; + +function mkdirP (p, opts, f, made) { + if (typeof opts === 'function') { + f = opts; + opts = {}; + } + else if (!opts || typeof opts !== 'object') { + opts = { mode: opts }; + } + + var mode = opts.mode; + var xfs = opts.fs || fs; + + if (mode === undefined) { + mode = _0777 & (~process.umask()); + } + if (!made) made = null; + + var cb = f || function () {}; + p = path.resolve(p); + + xfs.mkdir(p, mode, function (er) { + if (!er) { + made = made || p; + return cb(null, made); + } + switch (er.code) { + case 'ENOENT': + mkdirP(path.dirname(p), opts, function (er, made) { + if (er) cb(er, made); + else mkdirP(p, opts, cb, made); + }); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + xfs.stat(p, function (er2, stat) { + // if the stat fails, then that's super weird. + // let the original error be the failure reason. + if (er2 || !stat.isDirectory()) cb(er, made) + else cb(null, made); + }); + break; + } + }); +} + +mkdirP.sync = function sync (p, opts, made) { + if (!opts || typeof opts !== 'object') { + opts = { mode: opts }; + } + + var mode = opts.mode; + var xfs = opts.fs || fs; + + if (mode === undefined) { + mode = _0777 & (~process.umask()); + } + if (!made) made = null; + + p = path.resolve(p); + + try { + xfs.mkdirSync(p, mode); + made = made || p; + } + catch (err0) { + switch (err0.code) { + case 'ENOENT' : + made = sync(path.dirname(p), opts, made); + sync(p, opts, made); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + var stat; + try { + stat = xfs.statSync(p); + } + catch (err1) { + throw err0; + } + if (!stat.isDirectory()) throw err0; + break; + } + } + + return made; +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/package.json new file mode 100644 index 00000000..1b64852b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/package.json @@ -0,0 +1,85 @@ +{ + "_args": [ + [ + "mkdirp@0.5.1", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha" + ] + ], + "_from": "mkdirp@0.5.1", + "_id": "mkdirp@0.5.1", + "_inCache": true, + "_installable": true, + "_location": "/mocha/mkdirp", + "_nodeVersion": "2.0.0", + "_npmUser": { + "email": "substack@gmail.com", + "name": "substack" + }, + "_npmVersion": "2.9.0", + "_phantomChildren": {}, + "_requested": { + "name": "mkdirp", + "raw": "mkdirp@0.5.1", + "rawSpec": "0.5.1", + "scope": null, + "spec": "0.5.1", + "type": "version" + }, + "_requiredBy": [ + "/mocha" + ], + "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "_shasum": "30057438eac6cf7f8c4767f38648d6697d75c903", + "_shrinkwrap": null, + "_spec": "mkdirp@0.5.1", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha", + "author": { + "email": "mail@substack.net", + "name": "James Halliday", + "url": "http://substack.net" + }, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "bugs": { + "url": "https://github.com/substack/node-mkdirp/issues" + }, + "dependencies": { + "minimist": "0.0.8" + }, + "description": "Recursively mkdir, like `mkdir -p`", + "devDependencies": { + "mock-fs": "2 >=2.7.0", + "tap": "1" + }, + "directories": {}, + "dist": { + "shasum": "30057438eac6cf7f8c4767f38648d6697d75c903", + "tarball": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" + }, + "gitHead": "d4eff0f06093aed4f387e88e9fc301cb76beedc7", + "homepage": "https://github.com/substack/node-mkdirp#readme", + "keywords": [ + "mkdir", + "directory" + ], + "license": "MIT", + "main": "index.js", + "maintainers": [ + { + "email": "mail@substack.net", + "name": "substack" + } + ], + "name": "mkdirp", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/substack/node-mkdirp.git" + }, + "scripts": { + "test": "tap test/*.js" + }, + "version": "0.5.1" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/readme.markdown b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/readme.markdown new file mode 100644 index 00000000..3cc13153 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/readme.markdown @@ -0,0 +1,100 @@ +# mkdirp + +Like `mkdir -p`, but in node.js! + +[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp) + +# example + +## pow.js + +```js +var mkdirp = require('mkdirp'); + +mkdirp('/tmp/foo/bar/baz', function (err) { + if (err) console.error(err) + else console.log('pow!') +}); +``` + +Output + +``` +pow! +``` + +And now /tmp/foo/bar/baz exists, huzzah! + +# methods + +```js +var mkdirp = require('mkdirp'); +``` + +## mkdirp(dir, opts, cb) + +Create a new directory and any necessary subdirectories at `dir` with octal +permission string `opts.mode`. If `opts` is a non-object, it will be treated as +the `opts.mode`. + +If `opts.mode` isn't specified, it defaults to `0777 & (~process.umask())`. + +`cb(err, made)` fires with the error or the first directory `made` +that had to be created, if any. + +You can optionally pass in an alternate `fs` implementation by passing in +`opts.fs`. Your implementation should have `opts.fs.mkdir(path, mode, cb)` and +`opts.fs.stat(path, cb)`. + +## mkdirp.sync(dir, opts) + +Synchronously create a new directory and any necessary subdirectories at `dir` +with octal permission string `opts.mode`. If `opts` is a non-object, it will be +treated as the `opts.mode`. + +If `opts.mode` isn't specified, it defaults to `0777 & (~process.umask())`. + +Returns the first directory that had to be created, if any. + +You can optionally pass in an alternate `fs` implementation by passing in +`opts.fs`. Your implementation should have `opts.fs.mkdirSync(path, mode)` and +`opts.fs.statSync(path)`. + +# usage + +This package also ships with a `mkdirp` command. + +``` +usage: mkdirp [DIR1,DIR2..] {OPTIONS} + + Create each supplied directory including any necessary parent directories that + don't yet exist. + + If the directory already exists, do nothing. + +OPTIONS are: + + -m, --mode If a directory needs to be created, set the mode as an octal + permission string. + +``` + +# install + +With [npm](http://npmjs.org) do: + +``` +npm install mkdirp +``` + +to get the library, or + +``` +npm install -g mkdirp +``` + +to get the command. + +# license + +MIT diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/chmod.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/chmod.js new file mode 100644 index 00000000..6a404b93 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/chmod.js @@ -0,0 +1,41 @@ +var mkdirp = require('../').mkdirp; +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; +var _0777 = parseInt('0777', 8); +var _0755 = parseInt('0755', 8); +var _0744 = parseInt('0744', 8); + +var ps = [ '', 'tmp' ]; + +for (var i = 0; i < 25; i++) { + var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + ps.push(dir); +} + +var file = ps.join('/'); + +test('chmod-pre', function (t) { + var mode = _0744 + mkdirp(file, mode, function (er) { + t.ifError(er, 'should not error'); + fs.stat(file, function (er, stat) { + t.ifError(er, 'should exist'); + t.ok(stat && stat.isDirectory(), 'should be directory'); + t.equal(stat && stat.mode & _0777, mode, 'should be 0744'); + t.end(); + }); + }); +}); + +test('chmod', function (t) { + var mode = _0755 + mkdirp(file, mode, function (er) { + t.ifError(er, 'should not error'); + fs.stat(file, function (er, stat) { + t.ifError(er, 'should exist'); + t.ok(stat && stat.isDirectory(), 'should be directory'); + t.end(); + }); + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/clobber.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/clobber.js new file mode 100644 index 00000000..2433b9ad --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/clobber.js @@ -0,0 +1,38 @@ +var mkdirp = require('../').mkdirp; +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; +var _0755 = parseInt('0755', 8); + +var ps = [ '', 'tmp' ]; + +for (var i = 0; i < 25; i++) { + var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + ps.push(dir); +} + +var file = ps.join('/'); + +// a file in the way +var itw = ps.slice(0, 3).join('/'); + + +test('clobber-pre', function (t) { + console.error("about to write to "+itw) + fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.'); + + fs.stat(itw, function (er, stat) { + t.ifError(er) + t.ok(stat && stat.isFile(), 'should be file') + t.end() + }) +}) + +test('clobber', function (t) { + t.plan(2); + mkdirp(file, _0755, function (err) { + t.ok(err); + t.equal(err.code, 'ENOTDIR'); + t.end(); + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/mkdirp.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/mkdirp.js new file mode 100644 index 00000000..eaa8921c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/mkdirp.js @@ -0,0 +1,28 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var exists = fs.exists || path.exists; +var test = require('tap').test; +var _0777 = parseInt('0777', 8); +var _0755 = parseInt('0755', 8); + +test('woo', function (t) { + t.plan(5); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + mkdirp(file, _0755, function (err) { + t.ifError(err); + exists(file, function (ex) { + t.ok(ex, 'file created'); + fs.stat(file, function (err, stat) { + t.ifError(err); + t.equal(stat.mode & _0777, _0755); + t.ok(stat.isDirectory(), 'target not a directory'); + }) + }) + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/opts_fs.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/opts_fs.js new file mode 100644 index 00000000..97186b62 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/opts_fs.js @@ -0,0 +1,29 @@ +var mkdirp = require('../'); +var path = require('path'); +var test = require('tap').test; +var mockfs = require('mock-fs'); +var _0777 = parseInt('0777', 8); +var _0755 = parseInt('0755', 8); + +test('opts.fs', function (t) { + t.plan(5); + + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/beep/boop/' + [x,y,z].join('/'); + var xfs = mockfs.fs(); + + mkdirp(file, { fs: xfs, mode: _0755 }, function (err) { + t.ifError(err); + xfs.exists(file, function (ex) { + t.ok(ex, 'created file'); + xfs.stat(file, function (err, stat) { + t.ifError(err); + t.equal(stat.mode & _0777, _0755); + t.ok(stat.isDirectory(), 'target not a directory'); + }); + }); + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/opts_fs_sync.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/opts_fs_sync.js new file mode 100644 index 00000000..6c370aa6 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/opts_fs_sync.js @@ -0,0 +1,27 @@ +var mkdirp = require('../'); +var path = require('path'); +var test = require('tap').test; +var mockfs = require('mock-fs'); +var _0777 = parseInt('0777', 8); +var _0755 = parseInt('0755', 8); + +test('opts.fs sync', function (t) { + t.plan(4); + + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/beep/boop/' + [x,y,z].join('/'); + var xfs = mockfs.fs(); + + mkdirp.sync(file, { fs: xfs, mode: _0755 }); + xfs.exists(file, function (ex) { + t.ok(ex, 'created file'); + xfs.stat(file, function (err, stat) { + t.ifError(err); + t.equal(stat.mode & _0777, _0755); + t.ok(stat.isDirectory(), 'target not a directory'); + }); + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/perm.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/perm.js new file mode 100644 index 00000000..fbce44b8 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/perm.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var exists = fs.exists || path.exists; +var test = require('tap').test; +var _0777 = parseInt('0777', 8); +var _0755 = parseInt('0755', 8); + +test('async perm', function (t) { + t.plan(5); + var file = '/tmp/' + (Math.random() * (1<<30)).toString(16); + + mkdirp(file, _0755, function (err) { + t.ifError(err); + exists(file, function (ex) { + t.ok(ex, 'file created'); + fs.stat(file, function (err, stat) { + t.ifError(err); + t.equal(stat.mode & _0777, _0755); + t.ok(stat.isDirectory(), 'target not a directory'); + }) + }) + }); +}); + +test('async root perm', function (t) { + mkdirp('/tmp', _0755, function (err) { + if (err) t.fail(err); + t.end(); + }); + t.end(); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/perm_sync.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/perm_sync.js new file mode 100644 index 00000000..398229fe --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/perm_sync.js @@ -0,0 +1,36 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var exists = fs.exists || path.exists; +var test = require('tap').test; +var _0777 = parseInt('0777', 8); +var _0755 = parseInt('0755', 8); + +test('sync perm', function (t) { + t.plan(4); + var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json'; + + mkdirp.sync(file, _0755); + exists(file, function (ex) { + t.ok(ex, 'file created'); + fs.stat(file, function (err, stat) { + t.ifError(err); + t.equal(stat.mode & _0777, _0755); + t.ok(stat.isDirectory(), 'target not a directory'); + }); + }); +}); + +test('sync root perm', function (t) { + t.plan(3); + + var file = '/tmp'; + mkdirp.sync(file, _0755); + exists(file, function (ex) { + t.ok(ex, 'file created'); + fs.stat(file, function (err, stat) { + t.ifError(err); + t.ok(stat.isDirectory(), 'target not a directory'); + }) + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/race.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/race.js new file mode 100644 index 00000000..b0b9e183 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/race.js @@ -0,0 +1,37 @@ +var mkdirp = require('../').mkdirp; +var path = require('path'); +var fs = require('fs'); +var exists = fs.exists || path.exists; +var test = require('tap').test; +var _0777 = parseInt('0777', 8); +var _0755 = parseInt('0755', 8); + +test('race', function (t) { + t.plan(10); + var ps = [ '', 'tmp' ]; + + for (var i = 0; i < 25; i++) { + var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + ps.push(dir); + } + var file = ps.join('/'); + + var res = 2; + mk(file); + + mk(file); + + function mk (file, cb) { + mkdirp(file, _0755, function (err) { + t.ifError(err); + exists(file, function (ex) { + t.ok(ex, 'file created'); + fs.stat(file, function (err, stat) { + t.ifError(err); + t.equal(stat.mode & _0777, _0755); + t.ok(stat.isDirectory(), 'target not a directory'); + }); + }) + }); + } +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/rel.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/rel.js new file mode 100644 index 00000000..4ddb3427 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/rel.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var exists = fs.exists || path.exists; +var test = require('tap').test; +var _0777 = parseInt('0777', 8); +var _0755 = parseInt('0755', 8); + +test('rel', function (t) { + t.plan(5); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var cwd = process.cwd(); + process.chdir('/tmp'); + + var file = [x,y,z].join('/'); + + mkdirp(file, _0755, function (err) { + t.ifError(err); + exists(file, function (ex) { + t.ok(ex, 'file created'); + fs.stat(file, function (err, stat) { + t.ifError(err); + process.chdir(cwd); + t.equal(stat.mode & _0777, _0755); + t.ok(stat.isDirectory(), 'target not a directory'); + }) + }) + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/return.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/return.js new file mode 100644 index 00000000..bce68e56 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/return.js @@ -0,0 +1,25 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('return value', function (t) { + t.plan(4); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + // should return the first dir created. + // By this point, it would be profoundly surprising if /tmp didn't + // already exist, since every other test makes things in there. + mkdirp(file, function (err, made) { + t.ifError(err); + t.equal(made, '/tmp/' + x); + mkdirp(file, function (err, made) { + t.ifError(err); + t.equal(made, null); + }); + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/return_sync.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/return_sync.js new file mode 100644 index 00000000..7c222d35 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/return_sync.js @@ -0,0 +1,24 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('return value', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + // should return the first dir created. + // By this point, it would be profoundly surprising if /tmp didn't + // already exist, since every other test makes things in there. + // Note that this will throw on failure, which will fail the test. + var made = mkdirp.sync(file); + t.equal(made, '/tmp/' + x); + + // making the same file again should have no effect. + made = mkdirp.sync(file); + t.equal(made, null); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/root.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/root.js new file mode 100644 index 00000000..9e7d079d --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/root.js @@ -0,0 +1,19 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; +var _0755 = parseInt('0755', 8); + +test('root', function (t) { + // '/' on unix, 'c:/' on windows. + var file = path.resolve('/'); + + mkdirp(file, _0755, function (err) { + if (err) throw err + fs.stat(file, function (er, stat) { + if (er) throw er + t.ok(stat.isDirectory(), 'target is a directory'); + t.end(); + }) + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/sync.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/sync.js new file mode 100644 index 00000000..8c8dc938 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/sync.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var exists = fs.exists || path.exists; +var test = require('tap').test; +var _0777 = parseInt('0777', 8); +var _0755 = parseInt('0755', 8); + +test('sync', function (t) { + t.plan(4); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + try { + mkdirp.sync(file, _0755); + } catch (err) { + t.fail(err); + return t.end(); + } + + exists(file, function (ex) { + t.ok(ex, 'file created'); + fs.stat(file, function (err, stat) { + t.ifError(err); + t.equal(stat.mode & _0777, _0755); + t.ok(stat.isDirectory(), 'target not a directory'); + }); + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/umask.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/umask.js new file mode 100644 index 00000000..2033c63a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/umask.js @@ -0,0 +1,28 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var exists = fs.exists || path.exists; +var test = require('tap').test; +var _0777 = parseInt('0777', 8); +var _0755 = parseInt('0755', 8); + +test('implicit mode from umask', function (t) { + t.plan(5); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + mkdirp(file, function (err) { + t.ifError(err); + exists(file, function (ex) { + t.ok(ex, 'file created'); + fs.stat(file, function (err, stat) { + t.ifError(err); + t.equal(stat.mode & _0777, _0777 & (~process.umask())); + t.ok(stat.isDirectory(), 'target not a directory'); + }); + }) + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/umask_sync.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/umask_sync.js new file mode 100644 index 00000000..11a76147 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/node_modules/mkdirp/test/umask_sync.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var exists = fs.exists || path.exists; +var test = require('tap').test; +var _0777 = parseInt('0777', 8); +var _0755 = parseInt('0755', 8); + +test('umask sync modes', function (t) { + t.plan(4); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + try { + mkdirp.sync(file); + } catch (err) { + t.fail(err); + return t.end(); + } + + exists(file, function (ex) { + t.ok(ex, 'file created'); + fs.stat(file, function (err, stat) { + t.ifError(err); + t.equal(stat.mode & _0777, (_0777 & (~process.umask()))); + t.ok(stat.isDirectory(), 'target not a directory'); + }); + }); +}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/package.json new file mode 100644 index 00000000..617f3301 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/mocha/package.json @@ -0,0 +1,1104 @@ +{ + "_args": [ + [ + "mocha@latest", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector" + ] + ], + "_from": "mocha@latest", + "_id": "mocha@2.4.5", + "_inCache": true, + "_installable": true, + "_location": "/mocha", + "_nodeVersion": "5.5.0", + "_npmUser": { + "email": "boneskull@boneskull.com", + "name": "boneskull" + }, + "_npmVersion": "3.5.3", + "_phantomChildren": { + "graceful-fs": "2.0.3", + "inherits": "2.0.1", + "lru-cache": "2.7.3", + "ms": "0.7.1", + "sigmund": "1.0.1" + }, + "_requested": { + "name": "mocha", + "raw": "mocha@latest", + "rawSpec": "latest", + "scope": null, + "spec": "latest", + "type": "tag" + }, + "_requiredBy": [ + "#DEV:/" + ], + "_resolved": "https://registry.npmjs.org/mocha/-/mocha-2.4.5.tgz", + "_shasum": "151768dd2875eb51bc8295e9800026e9f2bb398f", + "_shrinkwrap": null, + "_spec": "mocha@latest", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector", + "author": { + "email": "tj@vision-media.ca", + "name": "TJ Holowaychuk" + }, + "bin": { + "_mocha": "./bin/_mocha", + "mocha": "./bin/mocha" + }, + "browser": { + "debug": "./lib/browser/debug.js", + "events": "./lib/browser/events.js", + "tty": "./lib/browser/tty.js" + }, + "bugs": { + "url": "https://github.com/mochajs/mocha/issues" + }, + "contributors": [ + { + "email": "tj@travisjeffery.com", + "name": "Travis Jeffery" + }, + { + "email": "boneskull@boneskull.com", + "name": "Christopher Hiller" + }, + { + "email": "jappelman@xebia.com", + "name": "Joshua Appelman" + }, + { + "email": "rauchg@gmail.com", + "name": "Guillermo Rauch" + }, + { + "email": "dasilvacontin@gmail.com", + "name": "David da Silva Contín" + }, + { + "email": "danielst.jules@gmail.com", + "name": "Daniel St. Jules" + }, + { + "email": "ariel@mashraki.co.il", + "name": "Ariel Mashraki" + }, + { + "email": "adomokos@gmail.com", + "name": "Attila Domokos" + }, + { + "email": "john.firebaugh@gmail.com", + "name": "John Firebaugh" + }, + { + "email": "nathan@tootallnate.net", + "name": "Nathan Rajlich" + }, + { + "email": "joliss42@gmail.com", + "name": "Jo Liss" + }, + { + "email": "mike@mikepennisi.com", + "name": "Mike Pennisi" + }, + { + "email": "brendan.nee@gmail.com", + "name": "Brendan Nee" + }, + { + "email": "james.r.carr@gmail.com", + "name": "James Carr" + }, + { + "email": "tricknotes.rs@gmail.com", + "name": "Ryunosuke SATO" + }, + { + "email": "aaron.heckmann+github@gmail.com", + "name": "Aaron Heckmann" + }, + { + "email": "jonathanrichardong@gmail.com", + "name": "Jonathan Ong" + }, + { + "email": "forbes@lindesay.co.uk", + "name": "Forbes Lindesay" + }, + { + "email": "raynos2@gmail.com", + "name": "Raynos" + }, + { + "email": "xavier@antoviaque.org", + "name": "Xavier Antoviaque" + }, + { + "email": "k.hokamura@gmail.com", + "name": "hokaccha" + }, + { + "email": "joshuakrall@pobox.com", + "name": "Joshua Krall" + }, + { + "email": "domenic@domenicdenicola.com", + "name": "Domenic Denicola" + }, + { + "email": "glenjamin@gmail.com", + "name": "Glen Mailer" + }, + { + "email": "mathieudesve@MacBook-Pro-de-Mathieu.local", + "name": "Mathieu Desvé" + }, + { + "email": "cory.thomas@bazaarvoice.com", + "name": "Cory Thomas" + }, + { + "email": "fredrik@devloop.se", + "name": "Fredrik Enestad" + }, + { + "email": "ben@bradleyit.com", + "name": "Ben Bradley" + }, + { + "email": "sindresorhus@gmail.com", + "name": "Sindre Sorhus" + }, + { + "email": "jesse.dailey@gmail.com", + "name": "Jesse Dailey" + }, + { + "email": "ben.lindsey@vungle.com", + "name": "Ben Lindsey" + }, + { + "email": "mail@maxantoni.de", + "name": "Maximilian Antoni" + }, + { + "email": "merrick.christensen@gmail.com", + "name": "Merrick Christensen" + }, + { + "email": "demmer@jut.io", + "name": "Michael Demmer" + }, + { + "email": "tyson@tysontate.com", + "name": "Tyson Tate" + }, + { + "email": "github-com@agachi.name", + "name": "Valentin Agachi" + }, + { + "email": "wil.moore@wilmoore.com", + "name": "Wil Moore III" + }, + { + "email": "benjie@jemjie.com", + "name": "Benjie Gillam" + }, + { + "email": "nathan.bowser@spiderstrategies.com", + "name": "Nathan Bowser" + }, + { + "email": "eiji.ienaga@gmail.com", + "name": "eiji.ienaga" + }, + { + "email": "fool2fish@gmail.com", + "name": "fool2fish" + }, + { + "email": "paul@paulmillr.com", + "name": "Paul Miller" + }, + { + "email": "andreas@one.com", + "name": "Andreas Lind Petersen" + }, + { + "email": "krinklemail@gmail.com", + "name": "Timo Tijhof" + }, + { + "email": "nathan.alderson@adtran.com", + "name": "Nathan Alderson" + }, + { + "email": "ian@ianstormtaylor.com", + "name": "Ian Storm Taylor" + }, + { + "email": "arian@aryweb.nl", + "name": "Arian Stolwijk" + }, + { + "email": "rstacruz@users.noreply.github.com", + "name": "Rico Sta. Cruz" + }, + { + "email": "domenic@domenicdenicola.com", + "name": "domenic" + }, + { + "email": "jacob@wejendorp.dk", + "name": "Jacob Wejendorp" + }, + { + "email": "fabio.crisci@amadeus.com", + "name": "fcrisci" + }, + { + "email": "gaeremyncks@gmail.com", + "name": "Simon Gaeremynck" + }, + { + "email": "jnylen@gmail.com", + "name": "James Nylen" + }, + { + "email": "telaviv@github", + "name": "Shawn Krisman" + }, + { + "email": "slang800@gmail.com", + "name": "Sean Lang" + }, + { + "email": "david.henderson@triggeredmessaging.com", + "name": "David Henderson" + }, + { + "email": "js.developer.undefined@gmail.com", + "name": "jsdevel" + }, + { + "email": "alexander.early@gmail.com", + "name": "Alexander Early" + }, + { + "email": "parkrmoore@gmail.com", + "name": "Parker Moore" + }, + { + "email": "paul@paularmstrongdesigns.com", + "name": "Paul Armstrong" + }, + { + "email": "monowerker@gmail.com", + "name": "monowerker" + }, + { + "email": "github@kkaefer.com", + "name": "Konstantin Käfer" + }, + { + "email": "justin.dujardin@sococo.com", + "name": "Justin DuJardin" + }, + { + "email": "er.juzerali@gmail.com", + "name": "Juzer Ali" + }, + { + "email": "dominique@quatravaux.org", + "name": "Dominique Quatravaux" + }, + { + "email": "quangvvv@gmail.com", + "name": "Quang Van" + }, + { + "email": "kyan.ql.he@gmail.com", + "name": "Quanlong He" + }, + { + "email": "vlad@webflow.com", + "name": "Vlad Magdalin" + }, + { + "email": "exogen@gmail.com", + "name": "Brian Beck" + }, + { + "email": "jonas.westerlund@me.com", + "name": "Jonas Westerlund" + }, + { + "email": "michael.riley@autodesk.com", + "name": "Michael Riley" + }, + { + "email": "b@chromatin.ca", + "name": "Buck Doyle" + }, + { + "email": "mate.farkas@virtual-call-center.eu", + "name": "FARKAS Máté" + }, + { + "email": "sune@we-knowhow.dk", + "name": "Sune Simonsen" + }, + { + "email": "github@keithcirkel.co.uk", + "name": "Keith Cirkel" + }, + { + "email": "kent+github@doddsfamily.us", + "name": "Kent C. Dodds" + }, + { + "email": "kevinjacobconway@gmail.com", + "name": "Kevin Conway" + }, + { + "email": "Kev.Kirsche+GitHub@gmail.com", + "name": "Kevin Kirsche" + }, + { + "email": "kirill.korolyov@gmail.com", + "name": "Kirill Korolyov" + }, + { + "email": "koen@koenpunt.nl", + "name": "Koen Punt" + }, + { + "email": "kyle@kemitchell.com", + "name": "Kyle Mitchell" + }, + { + "email": "lackac@lackac.hu", + "name": "Laszlo Bacsi" + }, + { + "email": "bitwiseman@gmail.com", + "name": "Liam Newman" + }, + { + "email": "linus@folkdatorn.se", + "name": "Linus Unnebäck" + }, + { + "email": "lackac@lackac.hu", + "name": "László Bácsi" + }, + { + "email": "maciej.malecki@notimplemented.org", + "name": "Maciej Małecki" + }, + { + "email": "mal.graty@googlemail.com", + "name": "Mal Graty" + }, + { + "email": "kuomarc2@gmail.com", + "name": "Marc Kuo" + }, + { + "email": "marcello@cellosoft.com", + "name": "Marcello Bastea-Forte" + }, + { + "email": "marcus@gratex.com", + "name": "Martin Marko" + }, + { + "email": "matija.marohnic@gmail.com", + "name": "Matija Marohnić" + }, + { + "email": "matt@ydekproductions.com", + "name": "Matt Robenolt" + }, + { + "email": "matthewgarysmith@gmail.com", + "name": "Matt Smith" + }, + { + "email": "matthewshanley@littlesecretsrecords.com", + "name": "Matthew Shanley" + }, + { + "email": "mattias.tidlund@learningwell.se", + "name": "Mattias Tidlund" + }, + { + "email": "mjijackson@gmail.com", + "name": "Michael Jackson" + }, + { + "email": "mwolson@member.fsf.org", + "name": "Michael Olson" + }, + { + "email": "michael.r.schoonmaker@gmail.com", + "name": "Michael Schoonmaker" + }, + { + "email": "michalcharemza@gmail.com", + "name": "Michal Charemza" + }, + { + "email": "mkolodny@integralads.com", + "name": "Moshe Kolodny" + }, + { + "email": "nathan@nathanblack.org", + "name": "Nathan Black" + }, + { + "email": "fitzgen@gmail.com", + "name": "Nick Fitzgerald" + }, + { + "email": "taddei.uk@gmail.com", + "name": "Nicolo Taddei" + }, + { + "email": "nosh@blackpiano.com", + "name": "Noshir Patel" + }, + { + "email": "panu.horsmalahti@iki.fi", + "name": "Panu Horsmalahti" + }, + { + "email": "pete@petes-imac.frontinternal.net", + "name": "Pete Hawkins" + }, + { + "email": "pete@phawk.co.uk", + "name": "Pete Hawkins" + }, + { + "email": "psung@dnanexus.com", + "name": "Phil Sung" + }, + { + "email": "rviskus@gmail.com", + "name": "R56" + }, + { + "email": "=", + "name": "Raynos" + }, + { + "email": "refael@empeeric.com", + "name": "Refael Ackermann" + }, + { + "email": "rdingwall@gmail.com", + "name": "Richard Dingwall" + }, + { + "email": "RichardKnop@users.noreply.github.com", + "name": "Richard Knop" + }, + { + "email": "rob@robwu.nl", + "name": "Rob Wu" + }, + { + "email": "romain.prieto@gmail.com", + "name": "Romain Prieto" + }, + { + "email": "rneuhauser@suse.cz", + "name": "Roman Neuhauser" + }, + { + "email": "shtylman@gmail.com", + "name": "Roman Shtylman" + }, + { + "email": "devdazed@me.com", + "name": "Russ Bradberry" + }, + { + "email": "rmunson@github.com", + "name": "Russell Munson" + }, + { + "email": "mustafin@kt-labs.com", + "name": "Rustem Mustafin" + }, + { + "email": "ryanmhubbard@gmail.com", + "name": "Ryan Hubbard" + }, + { + "email": "salehen.rahman@gmail.com", + "name": "Salehen Shovon Rahman" + }, + { + "email": "smussell@gmail.com", + "name": "Sam Mussell" + }, + { + "email": "koss@nocorp.me", + "name": "Sasha Koss" + }, + { + "email": "nulltask@gmail.com", + "name": "Seiya Konno" + }, + { + "email": "shaine@squidtree.com", + "name": "Shaine Hatch" + }, + { + "email": "simon@attentif.ch", + "name": "Simon Goumaz" + }, + { + "email": "opichals@gmail.com", + "name": "Standa Opichal" + }, + { + "email": "smath23@gmail.com", + "name": "Stephen Mathieson" + }, + { + "email": "stevem@brandwatch.com", + "name": "Steve Mason" + }, + { + "email": "stewart.taylor1@gmail.com", + "name": "Stewart Taylor" + }, + { + "email": "tapiwa@munzwa.tk", + "name": "Tapiwa Kelvin" + }, + { + "email": "teddyzeenny@gmail.com", + "name": "Teddy Zeenny" + }, + { + "email": "timehat@gmail.com", + "name": "Tim Ehat" + }, + { + "email": "tagulnick@onjack.com", + "name": "Todd Agulnick" + }, + { + "email": "tom@thau.me", + "name": "Tom Coquereau" + }, + { + "email": "vnikiti@ncsu.edu", + "name": "Vadim Nikitin" + }, + { + "email": "costan@gmail.com", + "name": "Victor Costan" + }, + { + "email": "william.langstroth@gmail.com", + "name": "Will Langstroth" + }, + { + "email": "yanis.wang@gmail.com", + "name": "Yanis Wang" + }, + { + "email": "yuestwang@gmail.com", + "name": "Yuest Wang" + }, + { + "email": "zsolt@takacs.cc", + "name": "Zsolt Takács" + }, + { + "email": "a@abrkn.com", + "name": "abrkn" + }, + { + "email": "airportyh@gmail.com", + "name": "airportyh" + }, + { + "email": "baduncaduncan@gmail.com", + "name": "badunk" + }, + { + "email": "claudyus@HEX.(none)", + "name": "claudyus", + "url": "none" + }, + { + "email": "daviddasilvacontin@gmail.com", + "name": "dasilvacontin" + }, + { + "email": "fengmk2@gmail.com", + "name": "fengmk2" + }, + { + "email": "gaye@mozilla.com", + "name": "gaye" + }, + { + "email": "me@grasgendar.me", + "name": "grasGendarme" + }, + { + "email": "klaemo@fastmail.fm", + "name": "klaemo" + }, + { + "email": "lakmeerkravid@gmail.com", + "name": "lakmeer" + }, + { + "email": "salva@unoyunodiez.com", + "name": "lodr" + }, + { + "email": "mrshturman@gmail.com", + "name": "mrShturman" + }, + { + "email": "Takuya_Nishigori@voyagegroup.com", + "name": "nishigori" + }, + { + "email": "thedelarosa@gmail.com", + "name": "omardelarosa" + }, + { + "email": "qiuzuhui@users.noreply.github.com", + "name": "qiuzuhui" + }, + { + "email": "samuel.goldszmidt@gmail.com", + "name": "samuel goldszmidt" + }, + { + "email": "seb.vincent@gmail.com", + "name": "sebv" + }, + { + "email": "syl.faucherand@gmail.com", + "name": "slyg" + }, + { + "email": "jake.mc@icloud.com", + "name": "startswithaj" + }, + { + "email": "tgautier@gmail.com", + "name": "tgautier@yahoo.com" + }, + { + "email": "darkphoenix739@gmail.com", + "name": "traleig1" + }, + { + "email": "iamvlad@gmail.com", + "name": "vlad" + }, + { + "email": "yuitest@cjhat.net", + "name": "yuitest" + }, + { + "email": "zhiyelee@gmail.com", + "name": "zhiyelee" + }, + { + "email": "adam.crabtree@redrobotlabs.com", + "name": "Adam Crabtree" + }, + { + "email": "talknmime@gmail.com", + "name": "Adam Gruber" + }, + { + "email": "andreas@opuno.com", + "name": "Andreas Brekken" + }, + { + "email": "andrewnez@gmail.com", + "name": "Andrew Nesbitt" + }, + { + "email": "8mayday@gmail.com", + "name": "Andrey Popp" + }, + { + "email": "eagleeyes91@gmail.com", + "name": "Andrii Shumada" + }, + { + "email": "anis.safine.ext@francetv.fr", + "name": "Anis Safine" + }, + { + "email": "arnaud.brousseau@gmail.com", + "name": "Arnaud Brousseau" + }, + { + "email": "asoftonight@gmail.com", + "name": "Atsuya Takagi" + }, + { + "email": "mraustinbirch@gmail.com", + "name": "Austin Birch" + }, + { + "email": "info@bnoordhuis.nl", + "name": "Ben Noordhuis" + }, + { + "email": "bzugmeyer@gmail.com", + "name": "Benoît Zugmeyer" + }, + { + "email": "bjoerge@origo.no", + "name": "Bjørge Næss" + }, + { + "email": "blalor@bravo5.org", + "name": "Brian Lalor" + }, + { + "email": "brian.m.carlson@gmail.com", + "name": "Brian M. Carlson" + }, + { + "email": "guardbionic-github@yahoo.com", + "name": "Brian Moore" + }, + { + "email": "bdondo@gmail.com", + "name": "Bryan Donovan" + }, + { + "email": "cscott@cscott.net", + "name": "C. Scott Ananian" + }, + { + "email": "casey@caseywebdev.com", + "name": "Casey Foster" + }, + { + "email": "chris@cmbuckley.co.uk", + "name": "Chris Buckley" + }, + { + "email": "cthewren@gmail.com", + "name": "ChrisWren" + }, + { + "email": "connorhd@gmail.com", + "name": "Connor Dunn" + }, + { + "email": "corey@coreybutler.com", + "name": "Corey Butler" + }, + { + "email": "daniel.stockman@gmail.com", + "name": "Daniel Stockman" + }, + { + "email": "davemckenna01@gmail.com", + "name": "Dave McKenna" + }, + { + "email": "bardadymchik@gmail.com", + "name": "Denis Bardadym" + }, + { + "email": "suki@tritarget.org", + "name": "Devin Weaver" + }, + { + "email": "dwu@palantir.com", + "name": "Di Wu" + }, + { + "email": "diogo.gmt@gmail.com", + "name": "Diogo Monteiro" + }, + { + "email": "deadrunk@gmail.com", + "name": "Dmitry Shirokov" + }, + { + "email": "dominic@dbarnes.info", + "name": "Dominic Barnes" + }, + { + "email": "doug@somethingdoug.com", + "name": "Douglas Christopher Wilson" + }, + { + "email": "i@2fd.me", + "name": "Fede Ramirez" + }, + { + "email": "fedor.indutny@gmail.com", + "name": "Fedor Indutny" + }, + { + "email": "florian@margaine.com", + "name": "Florian Margaine" + }, + { + "email": "frederico.silva@gmail.com", + "name": "Frederico Silva" + }, + { + "email": "fredriklindin@gmail.com", + "name": "Fredrik Lindin" + }, + { + "email": "gaye@mozilla.com", + "name": "Gareth Aye" + }, + { + "email": "gareth.cpm@gmail.com", + "name": "Gareth Murphy" + }, + { + "email": "GavinM@airg.com", + "name": "Gavin Mogan" + }, + { + "email": "giggio@giggio.net", + "name": "Giovanni Bassi" + }, + { + "email": "curvedmark@gmail.com", + "name": "Glen Huang" + }, + { + "email": "gregperkins@alum.mit.edu", + "name": "Greg Perkins" + }, + { + "email": "hyeluri@gmail.com", + "name": "Harish" + }, + { + "email": "harry.brundage@gmail.com", + "name": "Harry Brundage" + }, + { + "email": "herman@geekli.st", + "name": "Herman Junge" + }, + { + "email": "ian.greenleaf@gmail.com", + "name": "Ian Young" + }, + { + "email": "ian@thesecretlocation.net", + "name": "Ian Zamojc" + }, + { + "email": "ivan@kinvey.com", + "name": "Ivan" + }, + { + "email": "jpbochi@gmail.com", + "name": "JP Bochi" + }, + { + "email": "jaakko.salonen@iki.fi", + "name": "Jaakko Salonen" + }, + { + "email": "james.craige@gmail.com", + "name": "Jake Craige" + }, + { + "email": "jakemmarsh@gmail.com", + "name": "Jake Marsh" + }, + { + "email": "jakub@apiary.io", + "name": "Jakub Nešetřil" + }, + { + "email": "jbowes@repl.ca", + "name": "James Bowes" + }, + { + "email": "james@lightsofapollo.com", + "name": "James Lal" + }, + { + "email": "jan.kopriva@gooddata.com", + "name": "Jan Kopriva" + }, + { + "email": "jay@jcbarry.com", + "name": "Jason Barry" + }, + { + "email": "javierav@javierav.com", + "name": "Javier Aranda" + }, + { + "email": "gelule@gmail.com", + "name": "Jean Ponchon" + }, + { + "email": "jeff.kunkle@nearinfinity.com", + "name": "Jeff Kunkle" + }, + { + "email": "jeff.schilling@q2ebanking.com", + "name": "Jeff Schilling" + }, + { + "email": "jmar777@gmail.com", + "name": "Jeremy Martin" + }, + { + "email": "jimmy@jimmycuadra.com", + "name": "Jimmy Cuadra" + }, + { + "email": "jrhdoty@gmail.com", + "name": "John Doty" + }, + { + "email": "outdooricon@gmail.com", + "name": "Johnathon Sanders" + }, + { + "email": "jonas@mbr-targeting.com", + "name": "Jonas Dohse" + }, + { + "email": "matrixhasyou2k4@gmail.com", + "name": "Jonathan Creamer" + }, + { + "email": "jdelgado@rewip.com", + "name": "Jonathan Delgado" + }, + { + "email": "jpark@daptiv.com", + "name": "Jonathan Park" + }, + { + "email": "jordan@jordansexton.com", + "name": "Jordan Sexton" + }, + { + "email": "jussi.k.virtanen@gmail.com", + "name": "Jussi Virtanen" + }, + { + "email": "katiegengler@gmail.com", + "name": "Katie Gengler" + }, + { + "email": "k.hokamura@gmail.com", + "name": "Kazuhito Hokamura" + } + ], + "dependencies": { + "commander": "2.3.0", + "debug": "2.2.0", + "diff": "1.4.0", + "escape-string-regexp": "1.0.2", + "glob": "3.2.3", + "growl": "1.8.1", + "jade": "0.26.3", + "mkdirp": "0.5.1", + "supports-color": "1.2.0" + }, + "description": "simple, flexible, fun test framework", + "devDependencies": { + "browser-stdout": "^1.2.0", + "browserify": "10.2.4", + "coffee-script": "~1.8.0", + "eslint": "^1.2.1", + "should": "~8.0.0", + "through2": "~0.6.5" + }, + "directories": {}, + "dist": { + "shasum": "151768dd2875eb51bc8295e9800026e9f2bb398f", + "tarball": "https://registry.npmjs.org/mocha/-/mocha-2.4.5.tgz" + }, + "engines": { + "node": ">= 0.8.x" + }, + "files": [ + "bin", + "images", + "lib", + "index.js", + "mocha.css", + "mocha.js", + "LICENSE" + ], + "gitHead": "2a8594424c73ffeca41ef1668446372160528b4a", + "homepage": "https://github.com/mochajs/mocha#readme", + "keywords": [ + "mocha", + "test", + "bdd", + "tdd", + "tap" + ], + "license": "MIT", + "licenses": [ + { + "type": "MIT", + "url": "https://raw.github.com/mochajs/mocha/master/LICENSE" + } + ], + "main": "./index", + "maintainers": [ + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + }, + { + "email": "tj@travisjeffery.com", + "name": "travisjeffery" + }, + { + "email": "boneskull@boneskull.com", + "name": "boneskull" + }, + { + "email": "jappelman@xebia.com", + "name": "jbnicolai" + } + ], + "name": "mocha", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/mochajs/mocha.git" + }, + "scripts": { + "test": "make test-all" + }, + "version": "2.4.5" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/.npmignore new file mode 100644 index 00000000..30d74d25 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/.npmignore @@ -0,0 +1 @@ +test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/Makefile new file mode 100644 index 00000000..bd17c559 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/Makefile @@ -0,0 +1,9 @@ +BIN = ./node_modules/.bin/ + +test: + @$(BIN)mocha \ + --require should \ + --reporter spec \ + --bail + +.PHONY: test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/README.md new file mode 100644 index 00000000..89299c2d --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/README.md @@ -0,0 +1,15 @@ +# Connect Logger + +Connect's logging middleware. Named after [Dexter](http://en.wikipedia.org/wiki/Dexter_Morgan), a show you should not watch until completion. You may view the old docs at http://www.senchalabs.org/connect/logger.html. Otherwise, view the source code's JSDocs. + +## License + +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong me@jongleberry.com + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/morgan/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/morgan/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/.npmignore new file mode 100644 index 00000000..9daeafb9 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/.npmignore @@ -0,0 +1 @@ +test diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/History.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/History.md new file mode 100644 index 00000000..f233ed16 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/History.md @@ -0,0 +1,15 @@ + +0.2.1 / 2013-04-01 +================== + + * add .component + +0.2.0 / 2012-10-28 +================== + + * bytes(200).should.eql('200b') + +0.1.0 / 2012-07-04 +================== + + * add bytes to string conversion [yields] diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/Makefile new file mode 100644 index 00000000..8e8640f2 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --reporter spec \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/Readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/Readme.md new file mode 100644 index 00000000..9325d5bf --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/Readme.md @@ -0,0 +1,51 @@ +# node-bytes + + Byte string parser / formatter. + +## Example: + +```js +bytes('1kb') +// => 1024 + +bytes('2mb') +// => 2097152 + +bytes('1gb') +// => 1073741824 + +bytes(1073741824) +// => 1gb +``` + +## Installation + +``` +$ npm install bytes +$ component install visionmedia/bytes.js +``` + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/morgan/node_modules/bytes/component.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/component.json similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/morgan/node_modules/bytes/component.json rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/component.json diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/morgan/node_modules/bytes/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/morgan/node_modules/bytes/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/package.json new file mode 100644 index 00000000..f7aa80b3 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/node_modules/bytes/package.json @@ -0,0 +1,67 @@ +{ + "_args": [ + [ + "bytes@~0.2.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\morgan" + ] + ], + "_from": "bytes@>=0.2.0 <0.3.0", + "_id": "bytes@0.2.1", + "_inCache": true, + "_installable": true, + "_location": "/morgan/bytes", + "_npmUser": { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + }, + "_npmVersion": "1.2.14", + "_phantomChildren": {}, + "_requested": { + "name": "bytes", + "raw": "bytes@~0.2.0", + "rawSpec": "~0.2.0", + "scope": null, + "spec": ">=0.2.0 <0.3.0", + "type": "range" + }, + "_requiredBy": [ + "/morgan" + ], + "_resolved": "https://registry.npmjs.org/bytes/-/bytes-0.2.1.tgz", + "_shasum": "555b08abcb063f8975905302523e4cd4ffdfdf31", + "_shrinkwrap": null, + "_spec": "bytes@~0.2.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\morgan", + "author": { + "email": "tj@vision-media.ca", + "name": "TJ Holowaychuk", + "url": "http://tjholowaychuk.com" + }, + "component": { + "scripts": { + "bytes/index.js": "index.js" + } + }, + "dependencies": {}, + "description": "byte size string parser / serializer", + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "directories": {}, + "dist": { + "shasum": "555b08abcb063f8975905302523e4cd4ffdfdf31", + "tarball": "https://registry.npmjs.org/bytes/-/bytes-0.2.1.tgz" + }, + "main": "index.js", + "maintainers": [ + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + } + ], + "name": "bytes", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "version": "0.2.1" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/package.json new file mode 100644 index 00000000..b339c01b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/morgan/package.json @@ -0,0 +1,77 @@ +{ + "_args": [ + [ + "morgan@1.0.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect" + ] + ], + "_from": "morgan@1.0.0", + "_id": "morgan@1.0.0", + "_inCache": true, + "_installable": true, + "_location": "/morgan", + "_npmUser": { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + }, + "_npmVersion": "1.3.24", + "_phantomChildren": {}, + "_requested": { + "name": "morgan", + "raw": "morgan@1.0.0", + "rawSpec": "1.0.0", + "scope": null, + "spec": "1.0.0", + "type": "version" + }, + "_requiredBy": [ + "/connect" + ], + "_resolved": "https://registry.npmjs.org/morgan/-/morgan-1.0.0.tgz", + "_shasum": "83cf74b9f2d841901f1a9a6b8fa7a468d2e47a8d", + "_shrinkwrap": null, + "_spec": "morgan@1.0.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect", + "author": { + "email": "me@jongleberry.com", + "name": "Jonathan Ong", + "url": "http://jongleberry.com" + }, + "bugs": { + "url": "https://github.com/expressjs/morgan/issues" + }, + "dependencies": { + "bytes": "~0.2.0" + }, + "description": "connect's logger for node.js", + "devDependencies": { + "connect": "*", + "mocha": "*", + "should": "*", + "supertest": "*" + }, + "directories": {}, + "dist": { + "shasum": "83cf74b9f2d841901f1a9a6b8fa7a468d2e47a8d", + "tarball": "https://registry.npmjs.org/morgan/-/morgan-1.0.0.tgz" + }, + "homepage": "https://github.com/expressjs/morgan", + "license": "MIT", + "maintainers": [ + { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + } + ], + "name": "morgan", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/expressjs/morgan.git" + }, + "scripts": { + "test": "make test" + }, + "version": "1.0.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ms/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ms/.npmignore new file mode 100644 index 00000000..d1aa0ce4 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ms/.npmignore @@ -0,0 +1,5 @@ +node_modules +test +History.md +Makefile +component.json diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ms/History.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ms/History.md new file mode 100644 index 00000000..32fdfc17 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ms/History.md @@ -0,0 +1,66 @@ + +0.7.1 / 2015-04-20 +================== + + * prevent extraordinary long inputs (@evilpacket) + * Fixed broken readme link + +0.7.0 / 2014-11-24 +================== + + * add time abbreviations, updated tests and readme for the new units + * fix example in the readme. + * add LICENSE file + +0.6.2 / 2013-12-05 +================== + + * Adding repository section to package.json to suppress warning from NPM. + +0.6.1 / 2013-05-10 +================== + + * fix singularization [visionmedia] + +0.6.0 / 2013-03-15 +================== + + * fix minutes + +0.5.1 / 2013-02-24 +================== + + * add component namespace + +0.5.0 / 2012-11-09 +================== + + * add short formatting as default and .long option + * add .license property to component.json + * add version to component.json + +0.4.0 / 2012-10-22 +================== + + * add rounding to fix crazy decimals + +0.3.0 / 2012-09-07 +================== + + * fix `ms()` [visionmedia] + +0.2.0 / 2012-09-03 +================== + + * add component.json [visionmedia] + * add days support [visionmedia] + * add hours support [visionmedia] + * add minutes support [visionmedia] + * add seconds support [visionmedia] + * add ms string support [visionmedia] + * refactor tests to facilitate ms(number) [visionmedia] + +0.1.0 / 2012-03-07 +================== + + * Initial release diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ms/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ms/LICENSE new file mode 100644 index 00000000..6c07561b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ms/LICENSE @@ -0,0 +1,20 @@ +(The MIT License) + +Copyright (c) 2014 Guillermo Rauch + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ms/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ms/README.md new file mode 100644 index 00000000..9b4fd035 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ms/README.md @@ -0,0 +1,35 @@ +# ms.js: miliseconds conversion utility + +```js +ms('2 days') // 172800000 +ms('1d') // 86400000 +ms('10h') // 36000000 +ms('2.5 hrs') // 9000000 +ms('2h') // 7200000 +ms('1m') // 60000 +ms('5s') // 5000 +ms('100') // 100 +``` + +```js +ms(60000) // "1m" +ms(2 * 60000) // "2m" +ms(ms('10 hours')) // "10h" +``` + +```js +ms(60000, { long: true }) // "1 minute" +ms(2 * 60000, { long: true }) // "2 minutes" +ms(ms('10 hours'), { long: true }) // "10 hours" +``` + +- Node/Browser compatible. Published as [`ms`](https://www.npmjs.org/package/ms) in [NPM](http://nodejs.org/download). +- If a number is supplied to `ms`, a string with a unit is returned. +- If a string that contains the number is supplied, it returns it as +a number (e.g: it returns `100` for `'100'`). +- If you pass a string with a number and a valid unit, the number of +equivalent ms is returned. + +## License + +MIT diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ms/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ms/index.js new file mode 100644 index 00000000..4f927716 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ms/index.js @@ -0,0 +1,125 @@ +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} options + * @return {String|Number} + * @api public + */ + +module.exports = function(val, options){ + options = options || {}; + if ('string' == typeof val) return parse(val); + return options.long + ? long(val) + : short(val); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = '' + str; + if (str.length > 10000) return; + var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str); + if (!match) return; + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function short(ms) { + if (ms >= d) return Math.round(ms / d) + 'd'; + if (ms >= h) return Math.round(ms / h) + 'h'; + if (ms >= m) return Math.round(ms / m) + 'm'; + if (ms >= s) return Math.round(ms / s) + 's'; + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function long(ms) { + return plural(ms, d, 'day') + || plural(ms, h, 'hour') + || plural(ms, m, 'minute') + || plural(ms, s, 'second') + || ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, n, name) { + if (ms < n) return; + if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name; + return Math.ceil(ms / n) + ' ' + name + 's'; +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ms/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ms/package.json new file mode 100644 index 00000000..a8ba609e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ms/package.json @@ -0,0 +1,74 @@ +{ + "_args": [ + [ + "ms@0.7.1", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug" + ] + ], + "_from": "ms@0.7.1", + "_id": "ms@0.7.1", + "_inCache": true, + "_installable": true, + "_location": "/ms", + "_nodeVersion": "0.12.2", + "_npmUser": { + "email": "rauchg@gmail.com", + "name": "rauchg" + }, + "_npmVersion": "2.7.5", + "_phantomChildren": {}, + "_requested": { + "name": "ms", + "raw": "ms@0.7.1", + "rawSpec": "0.7.1", + "scope": null, + "spec": "0.7.1", + "type": "version" + }, + "_requiredBy": [ + "/mocha/debug" + ], + "_resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "_shasum": "9cd13c03adbff25b65effde7ce864ee952017098", + "_shrinkwrap": null, + "_spec": "ms@0.7.1", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\mocha\\node_modules\\debug", + "bugs": { + "url": "https://github.com/guille/ms.js/issues" + }, + "component": { + "scripts": { + "ms/index.js": "index.js" + } + }, + "dependencies": {}, + "description": "Tiny ms conversion utility", + "devDependencies": { + "expect.js": "*", + "mocha": "*", + "serve": "*" + }, + "directories": {}, + "dist": { + "shasum": "9cd13c03adbff25b65effde7ce864ee952017098", + "tarball": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + }, + "gitHead": "713dcf26d9e6fd9dbc95affe7eff9783b7f1b909", + "homepage": "https://github.com/guille/ms.js", + "main": "./index", + "maintainers": [ + { + "email": "rauchg@gmail.com", + "name": "rauchg" + } + ], + "name": "ms", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/guille/ms.js.git" + }, + "scripts": {}, + "version": "0.7.1" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/.jshintrc b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/.jshintrc similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/.jshintrc rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/.jshintrc diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/.npmignore new file mode 100644 index 00000000..07e6e472 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/.npmignore @@ -0,0 +1 @@ +/node_modules diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/.travis.yml similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/.travis.yml rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/CHANGELOG.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/CHANGELOG.md similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/CHANGELOG.md rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/CHANGELOG.md diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/LICENSE similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/LICENSE rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/LICENSE diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/README.md new file mode 100644 index 00000000..f149ac04 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/README.md @@ -0,0 +1,177 @@ +[![Build Status](https://travis-ci.org/superjoe30/node-multiparty.png?branch=master)](https://travis-ci.org/superjoe30/node-multiparty) +# multiparty + +Parse http requests with content-type `multipart/form-data`, also known as file uploads. + +See also [busboy](https://github.com/mscdex/busboy) - a +[faster](https://github.com/mscdex/dicer/wiki/Benchmarks) alternative +which may be worth looking into. + +### Why the fork? + + * This module uses the Node.js v0.10 streams properly, *even in Node.js v0.8* + * It will not create a temp file for you unless you want it to. + * Counts bytes and does math to help you figure out the `Content-Length` of + each part. + * You can easily stream uploads to s3 with + [knox](https://github.com/LearnBoost/knox), for [example](examples/s3.js). + * Less bugs. This code is simpler, has all deprecated functionality removed, + has cleaner tests, and does not try to do anything beyond multipart stream + parsing. + +## Installation + +``` +npm install multiparty +``` + +## Usage + + * See [examples](examples). + +Parse an incoming `multipart/form-data` request. + +```js +var multiparty = require('multiparty') + , http = require('http') + , util = require('util') + +http.createServer(function(req, res) { + if (req.url === '/upload' && req.method === 'POST') { + // parse a file upload + var form = new multiparty.Form(); + + form.parse(req, function(err, fields, files) { + res.writeHead(200, {'content-type': 'text/plain'}); + res.write('received upload:\n\n'); + res.end(util.inspect({fields: fields, files: files})); + }); + + return; + } + + // show a file upload form + res.writeHead(200, {'content-type': 'text/html'}); + res.end( + '
    '+ + '
    '+ + '
    '+ + ''+ + '
    ' + ); +}).listen(8080); +``` + +## API + +### multiparty.Form +```js +var form = new multiparty.Form(options) +``` +Creates a new form. Options: + + * `encoding` - sets encoding for the incoming form fields. Defaults to `utf8`. + * `maxFieldSize` - Limits the amount of memory a field (not a file) can + allocate in bytes. If this value is exceeded, an `error` event is emitted. + The default size is 2MB. + * `maxFields` - Limits the number of fields that will be parsed before + emitting an `error` event. A file counts as a field in this case. + Defaults to 1000. + * `autoFields` - Enables `field` events. This is automatically set to `true` + if you add a `field` listener. + * `autoFiles` - Enables `file` events. This is automatically set to `true` + if you add a `file` listener. + * `uploadDir` - Only relevant when `autoFiles` is `true`. The directory for + placing file uploads in. You can move them later using `fs.rename()`. + Defaults to `os.tmpDir()`. + * `hash` - Only relevant when `autoFiles` is `true`. If you want checksums + calculated for incoming files, set this to either `sha1` or `md5`. + Defaults to off. + +#### form.parse(request, [cb]) + +Parses an incoming node.js `request` containing form data. If `cb` is +provided, `autoFields` and `autoFiles` are set to `true` and all fields and +files are collected and passed to the callback: + +```js +form.parse(req, function(err, fieldsObject, filesObject, fieldsList, filesList) { + // ... +}); +``` + +It is often convenient to access a field or file by name. In this situation, +use `fieldsObject` or `filesObject`. However sometimes, as in the case of a +`` the multipart stream will contain +multiple files of the same input name, and you are interested in all of them. +In this case, use `filesList`. + +Another example is when you do not care what the field name of a file is; you +are merely interested in a single upload. In this case, set `maxFields` to 1 +(assuming no other fields expected besides the file) and use `filesList[0]`. + +#### form.bytesReceived + +The amount of bytes received for this form so far. + +#### form.bytesExpected + +The expected number of bytes in this form. + +### Events + +#### 'error' (err) + +You definitely want to handle this event. If not your server *will* crash when +users submit bogus multipart requests! + +#### 'part' (part) + +Emitted when a part is encountered in the request. `part` is a +`ReadableStream`. It also has the following properties: + + * `headers` - the headers for this part. For example, you may be interested + in `content-type`. + * `name` - the field name for this part + * `filename` - only if the part is an incoming file + * `byteOffset` - the byte offset of this part in the request body + * `byteCount` - assuming that this is the last part in the request, + this is the size of this part in bytes. You could use this, for + example, to set the `Content-Length` header if uploading to S3. + If the part had a `Content-Length` header then that value is used + here instead. + +#### 'aborted' + +Emitted when the request is aborted. This event will be followed shortly +by an `error` event. In practice you do not need to handle this event. + +#### 'progress' (bytesReceived, bytesExpected) + +#### 'close' + +Emitted after all parts have been parsed and emitted. Not emitted if an `error` +event is emitted. This is typically when you would send your response. + +#### 'file' (name, file) + +**By default multiparty will not touch your hard drive.** But if you add this +listener, multiparty automatically sets `form.autoFiles` to `true` and will +stream uploads to disk for you. + + * `name` - the field name for this file + * `file` - an object with these properties: + - `fieldName` - same as `name` - the field name for this file + - `originalFilename` - the filename that the user reports for the file + - `path` - the absolute path of the uploaded file on disk + - `headers` - the HTTP headers that were sent along with this file + - `size` - size of the file in bytes + +If you set the `form.hash` option, then `file` will also contain a `hash` +property which is the checksum of the file. + +#### 'field' (name, value) + + * `name` - field name + * `value` - string field value + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/examples/azureblobstorage.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/examples/azureblobstorage.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/examples/azureblobstorage.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/examples/azureblobstorage.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/examples/s3.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/examples/s3.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/examples/s3.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/examples/s3.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/examples/upload.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/examples/upload.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/examples/upload.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/examples/upload.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/package.json new file mode 100644 index 00000000..0e59a7ce --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/package.json @@ -0,0 +1,85 @@ +{ + "_args": [ + [ + "multiparty@2.2.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect" + ] + ], + "_from": "multiparty@2.2.0", + "_id": "multiparty@2.2.0", + "_inCache": true, + "_installable": true, + "_location": "/multiparty", + "_npmUser": { + "email": "superjoe30@gmail.com", + "name": "superjoe" + }, + "_npmVersion": "1.3.11", + "_phantomChildren": {}, + "_requested": { + "name": "multiparty", + "raw": "multiparty@2.2.0", + "rawSpec": "2.2.0", + "scope": null, + "spec": "2.2.0", + "type": "version" + }, + "_requiredBy": [ + "/connect" + ], + "_resolved": "https://registry.npmjs.org/multiparty/-/multiparty-2.2.0.tgz", + "_shasum": "a567c2af000ad22dc8f2a653d91978ae1f5316f4", + "_shrinkwrap": null, + "_spec": "multiparty@2.2.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect", + "bugs": { + "url": "https://github.com/superjoe30/node-multiparty/issues" + }, + "dependencies": { + "readable-stream": "~1.1.9", + "stream-counter": "~0.2.0" + }, + "description": "multipart/form-data parser which supports streaming", + "devDependencies": { + "findit": "0.1.1", + "hashish": "0.0.4", + "mkdirp": "~0.3.5", + "mocha": "~1.8.2", + "request": "~2.16.6", + "superagent": "~0.14.1" + }, + "directories": {}, + "dist": { + "shasum": "a567c2af000ad22dc8f2a653d91978ae1f5316f4", + "tarball": "https://registry.npmjs.org/multiparty/-/multiparty-2.2.0.tgz" + }, + "engines": { + "node": ">=0.8.0" + }, + "homepage": "https://github.com/superjoe30/node-multiparty#readme", + "keywords": [ + "file", + "upload", + "formidable", + "stream", + "s3" + ], + "license": "MIT", + "maintainers": [ + { + "email": "superjoe30@gmail.com", + "name": "superjoe" + } + ], + "name": "multiparty", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/superjoe30/node-multiparty.git" + }, + "scripts": { + "test": "ulimit -n 500 && mocha --timeout 4000 --reporter spec --recursive test/test.js" + }, + "version": "2.2.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/bench-multipart-parser.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/bench-multipart-parser.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/bench-multipart-parser.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/bench-multipart-parser.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/file/beta-sticker-1.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/file/beta-sticker-1.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/file/beta-sticker-1.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/file/beta-sticker-1.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/file/binaryfile.tar.gz b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/file/binaryfile.tar.gz similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/file/binaryfile.tar.gz rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/file/binaryfile.tar.gz diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/file/blank.gif b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/file/blank.gif similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/file/blank.gif rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/file/blank.gif diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/file/funkyfilename.txt b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/file/funkyfilename.txt similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/file/funkyfilename.txt rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/file/funkyfilename.txt diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/file/menu_separator.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/file/menu_separator.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/file/menu_separator.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/file/menu_separator.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/file/pf1y5.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/file/pf1y5.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/file/pf1y5.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/file/pf1y5.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/file/plain.txt b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/file/plain.txt similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/file/plain.txt rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/file/plain.txt diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/encoding/beta-sticker-1.png.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/encoding/beta-sticker-1.png.http similarity index 99% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/encoding/beta-sticker-1.png.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/encoding/beta-sticker-1.png.http index 833b83ca..7bfc6dcc 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/encoding/beta-sticker-1.png.http +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/encoding/beta-sticker-1.png.http @@ -1,12 +1,12 @@ -POST /upload HTTP/1.1 -Host: localhost:8080 -Content-Type: multipart/form-data; boundary=\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ -Content-Length: 2483 - ---\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ -Content-Disposition: form-data; name="sticker"; filename="beta-sticker-1.png" -Content-Type: image/png -Content-Transfer-Encoding: base64 - -iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABh5JREFUeNrMmHtIHEcYwGfv5SNwaovxEanEiJKqlYCCTRo1f0SvDeof1legEcE/YttQaNOiaQjYFFtpKaJILZU8SCRUWqlJGpoWepGLTXqUEnzFxCrnK9DEelbvvPOe/WacuY7r7HmGFjrwsbNzt7u//V7zfYvQ/2xI/9K1/NyvMP9PgCTuGmmL6/0ckD9UOGmbIExUsqMkAPHJjv5QwKRtgKioqDlh5+w/7IFeCuLlxCeA2zQ0IcCwh2qoaLH09fUdTElJ2e/1elU+n0/y+9fvPz4+fvfYsWN3YOoBcXPiocLghD4mBYHhQTCErqWlZU9FRcXJqKiowyqVSk/uSEH4o8fjWVlYWDB2d3e3d3R0WGB5jYqLg/NyGgsKxMNgkDB4451NTU3vxcXF1SlBKB0tFsuVxsbGjlu3bj2GJQeIk8K5RVBqBTMxrYRfuHAh9/jx4+ejo6MPS9I6f6hHPOC6rOLi4vyVlZXf7t27Z5c5/iZfkgMxxyUwFy9ezC0tLe3V6XRJ/MOCAYjWwsLCni0oKCh98uSJaWhoyMZFn0/uT2qBqYi/1NbWxjc0NJwPFUYExc/B53R5eXk5ZrN5YH5+3slFn5+D2uBDzG90IJETExOtzGdC9RelNf78wYMH3xQWFn4Ep0sgyyCr1NmJP6kEIa5tbW3dEx8fXxeKRoJpT76OR3p6enllZWUKTCOwNalFAglWDkTCvLq6+uR2YYKZSw4GQVKNfZQCafjkqhKYTBsTE3NY/uYi2Q4MP5KTkw9QGB3VEMv6G/YioqFLly5lazQavfytxobnUW+PWTGisIyNPEL3QYLB4PPIyMi4EydO7JUBbTIZ0RDYOFPkE8t/OdHczCK6Y/qdzP8BfUTW8Tj/uQndvT1F5vOzVvTLz1PwX4cQbt++fekURsNpSNLIw16v1z/HLsRRgecsSnovm8nxs5bvUe+NN1Bz47fkfBaAXj2aA2BWEsM/3hhFX1/5Fe3NTEAfvn8NXTO+tSH68IiNjU2Qw/AmCzg2XCQp+YyhJAu9c+pl9GJ+KmhiEt38bhjpoyJQRtYudA60k3dwD6o4mouKjmSiolcy0ArRqnXz3rT+knwFEShhNKLNlmmFP7Kf8XxuehHpj0QQmLdPGch/ioYyCSAe57pMaHnJgcprctDdwUkRjKi8CUTWhipvbm7uvlJo3zFNoHJDOznPeGEXqn+9EBUf+AQZXvqU+BEG/KCpHz2flYh+ALO9++ZX5L/Mj3gfevjw4ZRoP+PzD/b4HadPn844c+aMkb0F1DqIz9byzBvquXytvr6+7vr16+Ow9CfN2njjdfFAWpo9o2FnNmm12kQMw24gcvSnhbHb7Y+huHsNlhapLNHSxK3idlq287qhhrkKlSByOBzIZrPhGyCn04ncbjfRGAMV5ZlQxvDw8E+yYi1Q3qpleYjUQlNTU5aysrJqgNBhIAwGVSDCkFj48BVFULA1eCl7XV3dx1CKYK3YqKnY7u9Ti2royclJ76FDh1YhxefgsoFpCIOtra0RuGBQwYbRaLzc1dVlpjA2ZiqmKbWsDAmEYU9Pz8Tg4OCNoqKixNTU1BQostDq6iqBcrlcRBiYfEff1KBR+OnpabPBYOikWlnhtOOWm0zUffpnZ2ednZ2dJtCYMTs7+xkA2x0eHk6gsMYwFPYr/EC1Wo2LMEWzWa1WC1QRZ8FUVgpj42ohD3umWqHjRFxf5RkZGVkCNQ9CcTWQn5+flpSUtBOiMKAt7Fek/FSAmpmZMVdVVZ0dGxv7g4PhteMVlbBIofv0sh4Lbmhtb2+/Cbv1eFpaWmJCQsJODMO0hGGgUghAAay9v7//i5KSki9lmmG+4+Jg/MHaIH6f0dCkqaNFFc5VkViam5v319TUNEDdvRubEGsNYHGqsAwMDFxta2u7DdpdpA+3c+LgWiHfVkCiFnpDw0iLqwgqO6BVKoPo00K6WIDsOzE6OrpE395FzeLgxMn5jVe0dYTa26s5jfFg4VR0nAuwNtrFda1rgmToD6VzVWq3eTPyYAxOwwH5gvT2PiWY7X4fUgJTywp1fivyyL6E+Lb6XvQ0X9AkBeeXZED+p/k+9LcAAwAXm3hBLzoZPAAAAABJRU5ErkJggg== ---\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/-- +POST /upload HTTP/1.1 +Host: localhost:8080 +Content-Type: multipart/form-data; boundary=\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ +Content-Length: 2483 + +--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ +Content-Disposition: form-data; name="sticker"; filename="beta-sticker-1.png" +Content-Type: image/png +Content-Transfer-Encoding: base64 + +iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABh5JREFUeNrMmHtIHEcYwGfv5SNwaovxEanEiJKqlYCCTRo1f0SvDeof1legEcE/YttQaNOiaQjYFFtpKaJILZU8SCRUWqlJGpoWepGLTXqUEnzFxCrnK9DEelbvvPOe/WacuY7r7HmGFjrwsbNzt7u//V7zfYvQ/2xI/9K1/NyvMP9PgCTuGmmL6/0ckD9UOGmbIExUsqMkAPHJjv5QwKRtgKioqDlh5+w/7IFeCuLlxCeA2zQ0IcCwh2qoaLH09fUdTElJ2e/1elU+n0/y+9fvPz4+fvfYsWN3YOoBcXPiocLghD4mBYHhQTCErqWlZU9FRcXJqKiowyqVSk/uSEH4o8fjWVlYWDB2d3e3d3R0WGB5jYqLg/NyGgsKxMNgkDB4451NTU3vxcXF1SlBKB0tFsuVxsbGjlu3bj2GJQeIk8K5RVBqBTMxrYRfuHAh9/jx4+ejo6MPS9I6f6hHPOC6rOLi4vyVlZXf7t27Z5c5/iZfkgMxxyUwFy9ezC0tLe3V6XRJ/MOCAYjWwsLCni0oKCh98uSJaWhoyMZFn0/uT2qBqYi/1NbWxjc0NJwPFUYExc/B53R5eXk5ZrN5YH5+3slFn5+D2uBDzG90IJETExOtzGdC9RelNf78wYMH3xQWFn4Ep0sgyyCr1NmJP6kEIa5tbW3dEx8fXxeKRoJpT76OR3p6enllZWUKTCOwNalFAglWDkTCvLq6+uR2YYKZSw4GQVKNfZQCafjkqhKYTBsTE3NY/uYi2Q4MP5KTkw9QGB3VEMv6G/YioqFLly5lazQavfytxobnUW+PWTGisIyNPEL3QYLB4PPIyMi4EydO7JUBbTIZ0RDYOFPkE8t/OdHczCK6Y/qdzP8BfUTW8Tj/uQndvT1F5vOzVvTLz1PwX4cQbt++fekURsNpSNLIw16v1z/HLsRRgecsSnovm8nxs5bvUe+NN1Bz47fkfBaAXj2aA2BWEsM/3hhFX1/5Fe3NTEAfvn8NXTO+tSH68IiNjU2Qw/AmCzg2XCQp+YyhJAu9c+pl9GJ+KmhiEt38bhjpoyJQRtYudA60k3dwD6o4mouKjmSiolcy0ArRqnXz3rT+knwFEShhNKLNlmmFP7Kf8XxuehHpj0QQmLdPGch/ioYyCSAe57pMaHnJgcprctDdwUkRjKi8CUTWhipvbm7uvlJo3zFNoHJDOznPeGEXqn+9EBUf+AQZXvqU+BEG/KCpHz2flYh+ALO9++ZX5L/Mj3gfevjw4ZRoP+PzD/b4HadPn844c+aMkb0F1DqIz9byzBvquXytvr6+7vr16+Ow9CfN2njjdfFAWpo9o2FnNmm12kQMw24gcvSnhbHb7Y+huHsNlhapLNHSxK3idlq287qhhrkKlSByOBzIZrPhGyCn04ncbjfRGAMV5ZlQxvDw8E+yYi1Q3qpleYjUQlNTU5aysrJqgNBhIAwGVSDCkFj48BVFULA1eCl7XV3dx1CKYK3YqKnY7u9Ti2royclJ76FDh1YhxefgsoFpCIOtra0RuGBQwYbRaLzc1dVlpjA2ZiqmKbWsDAmEYU9Pz8Tg4OCNoqKixNTU1BQostDq6iqBcrlcRBiYfEff1KBR+OnpabPBYOikWlnhtOOWm0zUffpnZ2ednZ2dJtCYMTs7+xkA2x0eHk6gsMYwFPYr/EC1Wo2LMEWzWa1WC1QRZ8FUVgpj42ohD3umWqHjRFxf5RkZGVkCNQ9CcTWQn5+flpSUtBOiMKAt7Fek/FSAmpmZMVdVVZ0dGxv7g4PhteMVlbBIofv0sh4Lbmhtb2+/Cbv1eFpaWmJCQsJODMO0hGGgUghAAay9v7//i5KSki9lmmG+4+Jg/MHaIH6f0dCkqaNFFc5VkViam5v319TUNEDdvRubEGsNYHGqsAwMDFxta2u7DdpdpA+3c+LgWiHfVkCiFnpDw0iLqwgqO6BVKoPo00K6WIDsOzE6OrpE395FzeLgxMn5jVe0dYTa26s5jfFg4VR0nAuwNtrFda1rgmToD6VzVWq3eTPyYAxOwwH5gvT2PiWY7X4fUgJTywp1fivyyL6E+Lb6XvQ0X9AkBeeXZED+p/k+9LcAAwAXm3hBLzoZPAAAAABJRU5ErkJggg== +--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/-- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/encoding/binaryfile.tar.gz.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/encoding/binaryfile.tar.gz.http similarity index 98% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/encoding/binaryfile.tar.gz.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/encoding/binaryfile.tar.gz.http index 4f4fadb0..28b1d0e6 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/encoding/binaryfile.tar.gz.http +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/encoding/binaryfile.tar.gz.http @@ -1,12 +1,12 @@ -POST /upload HTTP/1.1 -Host: localhost:8080 -Content-Type: multipart/form-data; boundary=\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ -Content-Length: 676 - ---\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ -Content-Disposition: form-data; name="file"; filename="binaryfile.tar.gz" -Content-Type: application/x-gzip -Content-Transfer-Encoding: base64 - -H4sIAGiNIU8AA+3R0W6CMBQGYK59iobLZantRDG73osUOGqnFNJWM2N897UghG1ZdmWWLf93U/jP4bRAq8q92hJ/dY1J7kQEqyyLq8yXYrp2ltkqkTKXYiEykYc++ZTLVcLEvQ40dXReWcYSV1pdnL/v+6n+R11mjKVG1ZQ+s3TT2FpXqjhQ+hjzE1mnGxNLkgu+7tOKWjIVmVKTC6XL9ZaeXj4VQhwKWzL+cI4zwgQuuhkh3mhTad/Hkssh3im3027X54JnQ360R/M19OT8kC7SEN7Ooi2VvrEfznHQRWzl83gxttZKmzGehzPRW/+W8X+3fvL8sFet9sS6m3EIma02071MU3Uf9KHrmV1/+y8DAAAAAAAAAAAAAAAAAAAAAMB/9A6txIuJACgAAA== ---\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/-- +POST /upload HTTP/1.1 +Host: localhost:8080 +Content-Type: multipart/form-data; boundary=\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ +Content-Length: 676 + +--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ +Content-Disposition: form-data; name="file"; filename="binaryfile.tar.gz" +Content-Type: application/x-gzip +Content-Transfer-Encoding: base64 + +H4sIAGiNIU8AA+3R0W6CMBQGYK59iobLZantRDG73osUOGqnFNJWM2N897UghG1ZdmWWLf93U/jP4bRAq8q92hJ/dY1J7kQEqyyLq8yXYrp2ltkqkTKXYiEykYc++ZTLVcLEvQ40dXReWcYSV1pdnL/v+6n+R11mjKVG1ZQ+s3TT2FpXqjhQ+hjzE1mnGxNLkgu+7tOKWjIVmVKTC6XL9ZaeXj4VQhwKWzL+cI4zwgQuuhkh3mhTad/Hkssh3im3027X54JnQ360R/M19OT8kC7SEN7Ooi2VvrEfznHQRWzl83gxttZKmzGehzPRW/+W8X+3fvL8sFet9sS6m3EIma02071MU3Uf9KHrmV1/+y8DAAAAAAAAAAAAAAAAAAAAAMB/9A6txIuJACgAAA== +--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/-- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/encoding/blank.gif.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/encoding/blank.gif.http similarity index 97% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/encoding/blank.gif.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/encoding/blank.gif.http index 7426f5b6..cf54956d 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/encoding/blank.gif.http +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/encoding/blank.gif.http @@ -1,12 +1,12 @@ -POST /upload HTTP/1.1 -Host: localhost:8080 -Content-Type: multipart/form-data; boundary=\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ -Content-Length: 323 - ---\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ -Content-Disposition: form-data; name="file"; filename="blank.gif" -Content-Type: image/gif -Content-Transfer-Encoding: base64 - -R0lGODlhAQABAJH/AP///wAAAMDAwAAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw== ---\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/-- +POST /upload HTTP/1.1 +Host: localhost:8080 +Content-Type: multipart/form-data; boundary=\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ +Content-Length: 323 + +--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ +Content-Disposition: form-data; name="file"; filename="blank.gif" +Content-Type: image/gif +Content-Transfer-Encoding: base64 + +R0lGODlhAQABAJH/AP///wAAAMDAwAAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw== +--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/-- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/encoding/menu_seperator.png.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/encoding/menu_seperator.png.http similarity index 99% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/encoding/menu_seperator.png.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/encoding/menu_seperator.png.http index d08fd37e..3fd5085e 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/encoding/menu_seperator.png.http +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/encoding/menu_seperator.png.http @@ -1,12 +1,12 @@ -POST /upload HTTP/1.1 -Host: localhost:8080 -Content-Type: multipart/form-data; boundary=\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ -Content-Length: 1509 - ---\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ -Content-Disposition: form-data; name="image"; filename="menu_separator.png" -Content-Type: image/png -Content-Transfer-Encoding: base64 - -iVBORw0KGgoAAAANSUhEUgAAAAIAAAAYCAIAAABfmbuOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDcxODNBNzJERDcyMTFFMUFBOEVFNDQzOTA0MDJDMjQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDcxODNBNzNERDcyMTFFMUFBOEVFNDQzOTA0MDJDMjQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowNzE4M0E3MERENzIxMUUxQUE4RUU0NDM5MDQwMkMyNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowNzE4M0E3MURENzIxMUUxQUE4RUU0NDM5MDQwMkMyNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pmvhbb8AAAAXSURBVHjaYnHk9PON8WJiAIPBSwEEGAAPrgG+VozFWgAAAABJRU5ErkJggg== ---\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/-- +POST /upload HTTP/1.1 +Host: localhost:8080 +Content-Type: multipart/form-data; boundary=\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ +Content-Length: 1509 + +--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ +Content-Disposition: form-data; name="image"; filename="menu_separator.png" +Content-Type: image/png +Content-Transfer-Encoding: base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAYCAIAAABfmbuOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDcxODNBNzJERDcyMTFFMUFBOEVFNDQzOTA0MDJDMjQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDcxODNBNzNERDcyMTFFMUFBOEVFNDQzOTA0MDJDMjQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowNzE4M0E3MERENzIxMUUxQUE4RUU0NDM5MDQwMkMyNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowNzE4M0E3MURENzIxMUUxQUE4RUU0NDM5MDQwMkMyNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pmvhbb8AAAAXSURBVHjaYnHk9PON8WJiAIPBSwEEGAAPrgG+VozFWgAAAABJRU5ErkJggg== +--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/-- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/encoding/pf1y5.png.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/encoding/pf1y5.png.http similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/encoding/pf1y5.png.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/encoding/pf1y5.png.http diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/encoding/plain.txt.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/encoding/plain.txt.http similarity index 96% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/encoding/plain.txt.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/encoding/plain.txt.http index 5e85ad6b..230b2054 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/encoding/plain.txt.http +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/encoding/plain.txt.http @@ -1,13 +1,13 @@ -POST /upload HTTP/1.1 -Host: localhost:8080 -Content-Type: multipart/form-data; boundary=----TLV0SrKD4z1TRxRhAPUvZ -Content-Length: 221 - -------TLV0SrKD4z1TRxRhAPUvZ -Content-Disposition: form-data; name="file"; filename="plain.txt" -Content-Type: text/plain -Content-Transfer-Encoding: 7bit - +POST /upload HTTP/1.1 +Host: localhost:8080 +Content-Type: multipart/form-data; boundary=----TLV0SrKD4z1TRxRhAPUvZ +Content-Length: 221 + +------TLV0SrKD4z1TRxRhAPUvZ +Content-Disposition: form-data; name="file"; filename="plain.txt" +Content-Type: text/plain +Content-Transfer-Encoding: 7bit + I am a plain text file - -------TLV0SrKD4z1TRxRhAPUvZ-- + +------TLV0SrKD4z1TRxRhAPUvZ-- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/no-filename/filename-name.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/no-filename/filename-name.http similarity index 96% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/no-filename/filename-name.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/no-filename/filename-name.http index 43672a32..e449156b 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/no-filename/filename-name.http +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/no-filename/filename-name.http @@ -1,13 +1,13 @@ -POST /upload HTTP/1.1 -Host: localhost:8080 -Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytyE4wkKlZ5CQJVTG -Content-Length: 1000 - -------WebKitFormBoundarytyE4wkKlZ5CQJVTG -Content-Disposition: form-data; filename="plain.txt"; name="upload" -Content-Type: text/plain - +POST /upload HTTP/1.1 +Host: localhost:8080 +Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytyE4wkKlZ5CQJVTG +Content-Length: 1000 + +------WebKitFormBoundarytyE4wkKlZ5CQJVTG +Content-Disposition: form-data; filename="plain.txt"; name="upload" +Content-Type: text/plain + I am a plain text file - -------WebKitFormBoundarytyE4wkKlZ5CQJVTG-- + +------WebKitFormBoundarytyE4wkKlZ5CQJVTG-- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/no-filename/generic.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/no-filename/generic.http similarity index 96% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/no-filename/generic.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/no-filename/generic.http index e0dee27c..c051d852 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/no-filename/generic.http +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/no-filename/generic.http @@ -1,13 +1,13 @@ -POST /upload HTTP/1.1 -Host: localhost:8080 -Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytyE4wkKlZ5CQJVTG -Content-Length: 1000 - -------WebKitFormBoundarytyE4wkKlZ5CQJVTG -Content-Disposition: form-data; name="upload"; filename="" -Content-Type: text/plain - +POST /upload HTTP/1.1 +Host: localhost:8080 +Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytyE4wkKlZ5CQJVTG +Content-Length: 1000 + +------WebKitFormBoundarytyE4wkKlZ5CQJVTG +Content-Disposition: form-data; name="upload"; filename="" +Content-Type: text/plain + I am a plain text file - -------WebKitFormBoundarytyE4wkKlZ5CQJVTG-- + +------WebKitFormBoundarytyE4wkKlZ5CQJVTG-- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/preamble/crlf.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/preamble/crlf.http similarity index 96% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/preamble/crlf.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/preamble/crlf.http index 1d5f7095..1357950a 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/preamble/crlf.http +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/preamble/crlf.http @@ -1,13 +1,13 @@ -POST /upload HTTP/1.1 -Host: localhost:8080 -Content-Type: multipart/form-data; boundary=----TLV0SrKD4z1TRxRhAPUvZ -Content-Length: 184 - - -------TLV0SrKD4z1TRxRhAPUvZ -Content-Disposition: form-data; name="upload"; filename="plain.txt" -Content-Type: text/plain - +POST /upload HTTP/1.1 +Host: localhost:8080 +Content-Type: multipart/form-data; boundary=----TLV0SrKD4z1TRxRhAPUvZ +Content-Length: 184 + + +------TLV0SrKD4z1TRxRhAPUvZ +Content-Disposition: form-data; name="upload"; filename="plain.txt" +Content-Type: text/plain + I am a plain text file - -------TLV0SrKD4z1TRxRhAPUvZ-- + +------TLV0SrKD4z1TRxRhAPUvZ-- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/preamble/preamble.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/preamble/preamble.http similarity index 96% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/preamble/preamble.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/preamble/preamble.http index d14d4330..ab490a36 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/preamble/preamble.http +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/preamble/preamble.http @@ -1,13 +1,13 @@ -POST /upload HTTP/1.1 -Host: localhost:8080 -Content-Type: multipart/form-data; boundary=----TLV0SrKD4z1TRxRhAPUvZ -Content-Length: 226 - -This is a preamble which should be ignored -------TLV0SrKD4z1TRxRhAPUvZ -Content-Disposition: form-data; name="upload"; filename="plain.txt" -Content-Type: text/plain - +POST /upload HTTP/1.1 +Host: localhost:8080 +Content-Type: multipart/form-data; boundary=----TLV0SrKD4z1TRxRhAPUvZ +Content-Length: 226 + +This is a preamble which should be ignored +------TLV0SrKD4z1TRxRhAPUvZ +Content-Disposition: form-data; name="upload"; filename="plain.txt" +Content-Type: text/plain + I am a plain text file - -------TLV0SrKD4z1TRxRhAPUvZ-- + +------TLV0SrKD4z1TRxRhAPUvZ-- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/info.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/info.md similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/info.md rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/info.md diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/osx-chrome-13.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/osx-chrome-13.http similarity index 97% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/osx-chrome-13.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/osx-chrome-13.http index 4ef39172..6dec0d38 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/osx-chrome-13.http @@ -1,26 +1,26 @@ -POST /upload HTTP/1.1 -Host: localhost:8080 -Connection: keep-alive -Referer: http://localhost:8080/ -Content-Length: 383 -Cache-Control: max-age=0 -Origin: http://localhost:8080 -User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1 -Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytyE4wkKlZ5CQJVTG -Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 -Accept-Encoding: gzip,deflate,sdch -Accept-Language: en-US,en;q=0.8 -Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 -Cookie: jqCookieJar_tablesorter=%7B%22showListTable%22%3A%5B%5B5%2C1%5D%2C%5B1%2C0%5D%5D%7D - -------WebKitFormBoundarytyE4wkKlZ5CQJVTG -Content-Disposition: form-data; name="title" - -Weird filename -------WebKitFormBoundarytyE4wkKlZ5CQJVTG -Content-Disposition: form-data; name="upload"; filename=": \ ? % * | %22 < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt" -Content-Type: text/plain - +POST /upload HTTP/1.1 +Host: localhost:8080 +Connection: keep-alive +Referer: http://localhost:8080/ +Content-Length: 383 +Cache-Control: max-age=0 +Origin: http://localhost:8080 +User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1 +Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytyE4wkKlZ5CQJVTG +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 +Accept-Encoding: gzip,deflate,sdch +Accept-Language: en-US,en;q=0.8 +Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 +Cookie: jqCookieJar_tablesorter=%7B%22showListTable%22%3A%5B%5B5%2C1%5D%2C%5B1%2C0%5D%5D%7D + +------WebKitFormBoundarytyE4wkKlZ5CQJVTG +Content-Disposition: form-data; name="title" + +Weird filename +------WebKitFormBoundarytyE4wkKlZ5CQJVTG +Content-Disposition: form-data; name="upload"; filename=": \ ? % * | %22 < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt" +Content-Type: text/plain + I am a text file with a funky name! - -------WebKitFormBoundarytyE4wkKlZ5CQJVTG-- + +------WebKitFormBoundarytyE4wkKlZ5CQJVTG-- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http similarity index 97% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http index bf49f85f..76ff2b34 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http @@ -1,24 +1,24 @@ -POST /upload HTTP/1.1 -Host: localhost:8080 -User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.22) Gecko/20110902 Firefox/3.6.22 -Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 -Accept-Language: en-us,en;q=0.5 -Accept-Encoding: gzip,deflate -Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 -Keep-Alive: 115 -Connection: keep-alive -Referer: http://localhost:8080/ -Content-Type: multipart/form-data; boundary=---------------------------9849436581144108930470211272 -Content-Length: 438 - ------------------------------9849436581144108930470211272 -Content-Disposition: form-data; name="title" - -Weird filename ------------------------------9849436581144108930470211272 -Content-Disposition: form-data; name="upload"; filename=": \ ? % * | " < > . ☃ ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt" -Content-Type: text/plain - +POST /upload HTTP/1.1 +Host: localhost:8080 +User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.22) Gecko/20110902 Firefox/3.6.22 +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 +Accept-Language: en-us,en;q=0.5 +Accept-Encoding: gzip,deflate +Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 +Keep-Alive: 115 +Connection: keep-alive +Referer: http://localhost:8080/ +Content-Type: multipart/form-data; boundary=---------------------------9849436581144108930470211272 +Content-Length: 438 + +-----------------------------9849436581144108930470211272 +Content-Disposition: form-data; name="title" + +Weird filename +-----------------------------9849436581144108930470211272 +Content-Disposition: form-data; name="upload"; filename=": \ ? % * | " < > . ☃ ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt" +Content-Type: text/plain + I am a text file with a funky name! - ------------------------------9849436581144108930470211272-- + +-----------------------------9849436581144108930470211272-- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/osx-safari-5.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/osx-safari-5.http similarity index 97% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/osx-safari-5.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/osx-safari-5.http index ff158a43..b3652d90 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/osx-safari-5.http +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/osx-safari-5.http @@ -1,23 +1,23 @@ -POST /upload HTTP/1.1 -Host: localhost:8080 -Origin: http://localhost:8080 -Content-Length: 383 -User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1 -Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryQJZ1gvhvdgfisJPJ -Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 -Referer: http://localhost:8080/ -Accept-Language: en-us -Accept-Encoding: gzip, deflate -Connection: keep-alive - -------WebKitFormBoundaryQJZ1gvhvdgfisJPJ -Content-Disposition: form-data; name="title" - -Weird filename -------WebKitFormBoundaryQJZ1gvhvdgfisJPJ -Content-Disposition: form-data; name="upload"; filename=": \ ? % * | %22 < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt" -Content-Type: text/plain - +POST /upload HTTP/1.1 +Host: localhost:8080 +Origin: http://localhost:8080 +Content-Length: 383 +User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1 +Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryQJZ1gvhvdgfisJPJ +Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 +Referer: http://localhost:8080/ +Accept-Language: en-us +Accept-Encoding: gzip, deflate +Connection: keep-alive + +------WebKitFormBoundaryQJZ1gvhvdgfisJPJ +Content-Disposition: form-data; name="title" + +Weird filename +------WebKitFormBoundaryQJZ1gvhvdgfisJPJ +Content-Disposition: form-data; name="upload"; filename=": \ ? % * | %22 < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt" +Content-Type: text/plain + I am a text file with a funky name! - -------WebKitFormBoundaryQJZ1gvhvdgfisJPJ-- + +------WebKitFormBoundaryQJZ1gvhvdgfisJPJ-- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-chrome-12.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-chrome-12.http similarity index 97% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-chrome-12.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-chrome-12.http index f0fc533a..ef8d1d60 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-chrome-12.http @@ -1,24 +1,24 @@ -POST /upload HTTP/1.1 -Host: 192.168.56.1:8080 -Connection: keep-alive -Referer: http://192.168.56.1:8080/ -Content-Length: 344 -Cache-Control: max-age=0 -Origin: http://192.168.56.1:8080 -User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30 -Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryEvqBNplR3ByrwQPa -Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 -Accept-Encoding: gzip,deflate,sdch -Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4 -Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 - -------WebKitFormBoundaryEvqBNplR3ByrwQPa -Content-Disposition: form-data; name="title" - -Weird filename -------WebKitFormBoundaryEvqBNplR3ByrwQPa -Content-Disposition: form-data; name="upload"; filename=" ? % * | %22 < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt" -Content-Type: text/plain - - -------WebKitFormBoundaryEvqBNplR3ByrwQPa-- +POST /upload HTTP/1.1 +Host: 192.168.56.1:8080 +Connection: keep-alive +Referer: http://192.168.56.1:8080/ +Content-Length: 344 +Cache-Control: max-age=0 +Origin: http://192.168.56.1:8080 +User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30 +Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryEvqBNplR3ByrwQPa +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 +Accept-Encoding: gzip,deflate,sdch +Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4 +Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 + +------WebKitFormBoundaryEvqBNplR3ByrwQPa +Content-Disposition: form-data; name="title" + +Weird filename +------WebKitFormBoundaryEvqBNplR3ByrwQPa +Content-Disposition: form-data; name="upload"; filename=" ? % * | %22 < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt" +Content-Type: text/plain + + +------WebKitFormBoundaryEvqBNplR3ByrwQPa-- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-ie-7.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-ie-7.http similarity index 97% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-ie-7.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-ie-7.http index 2e2c61c7..4befdc71 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-ie-7.http +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-ie-7.http @@ -1,22 +1,22 @@ -POST /upload HTTP/1.1 -Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, */* -Referer: http://192.168.56.1:8080/ -Accept-Language: de -User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1) -Content-Type: multipart/form-data; boundary=---------------------------7db1fe232017c -Accept-Encoding: gzip, deflate -Host: 192.168.56.1:8080 -Content-Length: 368 -Connection: Keep-Alive -Cache-Control: no-cache - ------------------------------7db1fe232017c -Content-Disposition: form-data; name="title" - -Weird filename ------------------------------7db1fe232017c -Content-Disposition: form-data; name="upload"; filename=" ? % * | " < > . ☃ ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt" -Content-Type: application/octet-stream - - ------------------------------7db1fe232017c-- +POST /upload HTTP/1.1 +Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, */* +Referer: http://192.168.56.1:8080/ +Accept-Language: de +User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1) +Content-Type: multipart/form-data; boundary=---------------------------7db1fe232017c +Accept-Encoding: gzip, deflate +Host: 192.168.56.1:8080 +Content-Length: 368 +Connection: Keep-Alive +Cache-Control: no-cache + +-----------------------------7db1fe232017c +Content-Disposition: form-data; name="title" + +Weird filename +-----------------------------7db1fe232017c +Content-Disposition: form-data; name="upload"; filename=" ? % * | " < > . ☃ ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt" +Content-Type: application/octet-stream + + +-----------------------------7db1fe232017c-- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-ie-8.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-ie-8.http similarity index 97% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-ie-8.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-ie-8.http index e2b94fae..9c1c5330 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-ie-8.http +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-ie-8.http @@ -1,22 +1,22 @@ -POST /upload HTTP/1.1 -Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, */* -Referer: http://192.168.56.1:8080/ -Accept-Language: de -User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0) -Content-Type: multipart/form-data; boundary=---------------------------7db3a8372017c -Accept-Encoding: gzip, deflate -Host: 192.168.56.1:8080 -Content-Length: 368 -Connection: Keep-Alive -Cache-Control: no-cache - ------------------------------7db3a8372017c -Content-Disposition: form-data; name="title" - -Weird filename ------------------------------7db3a8372017c -Content-Disposition: form-data; name="upload"; filename=" ? % * | " < > . ☃ ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt" -Content-Type: application/octet-stream - - ------------------------------7db3a8372017c-- +POST /upload HTTP/1.1 +Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, */* +Referer: http://192.168.56.1:8080/ +Accept-Language: de +User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0) +Content-Type: multipart/form-data; boundary=---------------------------7db3a8372017c +Accept-Encoding: gzip, deflate +Host: 192.168.56.1:8080 +Content-Length: 368 +Connection: Keep-Alive +Cache-Control: no-cache + +-----------------------------7db3a8372017c +Content-Disposition: form-data; name="title" + +Weird filename +-----------------------------7db3a8372017c +Content-Disposition: form-data; name="upload"; filename=" ? % * | " < > . ☃ ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt" +Content-Type: application/octet-stream + + +-----------------------------7db3a8372017c-- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-safari-5.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-safari-5.http similarity index 97% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-safari-5.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-safari-5.http index 6379ac01..2b7bacb5 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-safari-5.http +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/special-chars-in-filename/xp-safari-5.http @@ -1,22 +1,22 @@ -POST /upload HTTP/1.1 -Host: 192.168.56.1:8080 -Referer: http://192.168.56.1:8080/ -Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 -Accept-Language: en-US -Origin: http://192.168.56.1:8080 -User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4 -Accept-Encoding: gzip, deflate -Content-Type: multipart/form-data; boundary=----WebKitFormBoundarykmaWSUbu697WN9TM -Content-Length: 344 -Connection: keep-alive - -------WebKitFormBoundarykmaWSUbu697WN9TM -Content-Disposition: form-data; name="title" - -Weird filename -------WebKitFormBoundarykmaWSUbu697WN9TM -Content-Disposition: form-data; name="upload"; filename=" ? % * | %22 < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt" -Content-Type: text/plain - - -------WebKitFormBoundarykmaWSUbu697WN9TM-- +POST /upload HTTP/1.1 +Host: 192.168.56.1:8080 +Referer: http://192.168.56.1:8080/ +Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 +Accept-Language: en-US +Origin: http://192.168.56.1:8080 +User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4 +Accept-Encoding: gzip, deflate +Content-Type: multipart/form-data; boundary=----WebKitFormBoundarykmaWSUbu697WN9TM +Content-Length: 344 +Connection: keep-alive + +------WebKitFormBoundarykmaWSUbu697WN9TM +Content-Disposition: form-data; name="title" + +Weird filename +------WebKitFormBoundarykmaWSUbu697WN9TM +Content-Disposition: form-data; name="upload"; filename=" ? % * | %22 < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt" +Content-Type: text/plain + + +------WebKitFormBoundarykmaWSUbu697WN9TM-- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/workarounds/missing-hyphens1.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/workarounds/missing-hyphens1.http similarity index 96% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/workarounds/missing-hyphens1.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/workarounds/missing-hyphens1.http index 28268903..31ea3959 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/workarounds/missing-hyphens1.http +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/workarounds/missing-hyphens1.http @@ -1,12 +1,12 @@ -POST /upload HTTP/1.1 -Host: localhost:8080 -Content-Type: multipart/form-data; boundary=----TLV0SrKD4z1TRxRhAPUvZ -Content-Length: 178 - -------TLV0SrKD4z1TRxRhAPUvZ -Content-Disposition: form-data; name="upload"; filename="plain.txt" -Content-Type: text/plain - +POST /upload HTTP/1.1 +Host: localhost:8080 +Content-Type: multipart/form-data; boundary=----TLV0SrKD4z1TRxRhAPUvZ +Content-Length: 178 + +------TLV0SrKD4z1TRxRhAPUvZ +Content-Disposition: form-data; name="upload"; filename="plain.txt" +Content-Type: text/plain + I am a plain text file - -------TLV0SrKD4z1TRxRhAPUvZ + +------TLV0SrKD4z1TRxRhAPUvZ diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/workarounds/missing-hyphens2.http b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/workarounds/missing-hyphens2.http similarity index 96% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/workarounds/missing-hyphens2.http rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/workarounds/missing-hyphens2.http index 8e181947..515f519c 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/http/workarounds/missing-hyphens2.http +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/http/workarounds/missing-hyphens2.http @@ -1,12 +1,12 @@ -POST /upload HTTP/1.1 -Host: localhost:8080 -Content-Type: multipart/form-data; boundary=----TLV0SrKD4z1TRxRhAPUvZ -Content-Length: 180 - -------TLV0SrKD4z1TRxRhAPUvZ -Content-Disposition: form-data; name="upload"; filename="plain.txt" -Content-Type: text/plain - +POST /upload HTTP/1.1 +Host: localhost:8080 +Content-Type: multipart/form-data; boundary=----TLV0SrKD4z1TRxRhAPUvZ +Content-Length: 180 + +------TLV0SrKD4z1TRxRhAPUvZ +Content-Disposition: form-data; name="upload"; filename="plain.txt" +Content-Type: text/plain + I am a plain text file - -------TLV0SrKD4z1TRxRhAPUvZ + +------TLV0SrKD4z1TRxRhAPUvZ diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/js/encoding.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/js/encoding.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/js/encoding.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/js/encoding.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/js/no-filename.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/js/no-filename.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/js/no-filename.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/js/no-filename.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/js/preamble.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/js/preamble.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/js/preamble.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/js/preamble.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/js/special-chars-in-filename.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/js/special-chars-in-filename.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/js/special-chars-in-filename.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/js/special-chars-in-filename.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/js/workarounds.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/js/workarounds.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/js/workarounds.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/js/workarounds.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/multi_video.upload b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/multi_video.upload similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/multi_video.upload rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/multi_video.upload diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/multipart.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/multipart.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/fixture/multipart.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/fixture/multipart.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/record.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/record.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/record.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/record.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/standalone/test-connection-aborted.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/standalone/test-connection-aborted.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/standalone/test-connection-aborted.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/standalone/test-connection-aborted.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/standalone/test-content-transfer-encoding.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/standalone/test-content-transfer-encoding.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/standalone/test-content-transfer-encoding.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/standalone/test-content-transfer-encoding.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/standalone/test-invalid.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/standalone/test-invalid.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/standalone/test-invalid.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/standalone/test-invalid.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/standalone/test-issue-15.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/standalone/test-issue-15.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/standalone/test-issue-15.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/standalone/test-issue-15.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/standalone/test-issue-19.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/standalone/test-issue-19.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/standalone/test-issue-19.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/standalone/test-issue-19.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/standalone/test-issue-21.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/standalone/test-issue-21.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/standalone/test-issue-21.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/standalone/test-issue-21.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/standalone/test-issue-4.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/standalone/test-issue-4.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/standalone/test-issue-4.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/standalone/test-issue-4.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/standalone/test-issue-46.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/standalone/test-issue-46.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/standalone/test-issue-46.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/standalone/test-issue-46.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/standalone/test-issue-5.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/standalone/test-issue-5.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/standalone/test-issue-5.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/standalone/test-issue-5.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/test.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/test/test.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/multiparty/test/test.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/.dntrc b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/.dntrc new file mode 100644 index 00000000..1c3e6243 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/.dntrc @@ -0,0 +1,36 @@ +## DNT config file +## see https://github.com/rvagg/dnt + +NODE_VERSIONS="\ + master \ + v0.11.13 \ + v0.11.10 \ + v0.11.9 \ + v0.11.8 \ + v0.11.7 \ + v0.11.6 \ + v0.11.5 \ + v0.11.4 \ + v0.10.26 \ + v0.10.25 \ + v0.10.24 \ + v0.10.23 \ + v0.10.22 \ + v0.10.21 \ + v0.10.20 \ + v0.10.19 \ + v0.10.18 \ + v0.8.26 \ + v0.8.25 \ + v0.8.24 \ + v0.8.23 \ + v0.8.22 \ +" +OUTPUT_PREFIX="nan-" +TEST_CMD="\ + cd /dnt/test/ && \ + npm install && \ + node_modules/.bin/node-gyp --nodedir /usr/src/node/ rebuild && \ + node_modules/.bin/tap --gc js/*-test.js; \ +" + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/LICENSE new file mode 100644 index 00000000..d502e18a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/LICENSE @@ -0,0 +1,46 @@ +Copyright 2013, NAN contributors: + - Rod Vagg + - Benjamin Byholm + - Trevor Norris + - Nathan Rajlich + - Brett Lawson + - Ben Noordhuis +(the "Original Author") +All rights reserved. + +MIT +no-false-attribs License + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +Distributions of all or part of the Software intended to be used +by the recipients as they would use the unmodified Software, +containing modifications that substantially alter, remove, or +disable functionality of the Software, outside of the documented +configuration mechanisms provided by the Software, shall be +modified such that the Original Author's bug reporting email +addresses and urls are either replaced with the contact information +of the parties responsible for the changes, or removed entirely. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + + +Except where noted, this license applies to any and all software +programs and associated documentation files created by the +Original Author, when distributed with the Software. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/README.md new file mode 100644 index 00000000..7c8d6883 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/README.md @@ -0,0 +1,947 @@ +Native Abstractions for Node.js +=============================== + +**A header file filled with macro and utility goodness for making add-on development for Node.js easier across versions 0.8, 0.10 and 0.11, and eventually 0.12.** + +***Current version: 1.0.0*** *(See [nan.h](https://github.com/rvagg/nan/blob/master/nan.h) for complete ChangeLog)* + +[![NPM](https://nodei.co/npm/nan.png?downloads=true)](https://nodei.co/npm/nan/) [![NPM](https://nodei.co/npm-dl/nan.png?months=6)](https://nodei.co/npm/nan/) + +Thanks to the crazy changes in V8 (and some in Node core), keeping native addons compiling happily across versions, particularly 0.10 to 0.11/0.12, is a minor nightmare. The goal of this project is to store all logic necessary to develop native Node.js addons without having to inspect `NODE_MODULE_VERSION` and get yourself into a macro-tangle. + +This project also contains some helper utilities that make addon development a bit more pleasant. + + * **[News & Updates](#news)** + * **[Usage](#usage)** + * **[Example](#example)** + * **[API](#api)** + +
    +## News & Updates + +### May-2013: Major changes for V8 3.25 / Node 0.11.13 + +Node 0.11.11 and 0.11.12 were both broken releases for native add-ons, you simply can't properly compile against either of them for different reasons. But we now have a 0.11.13 release that jumps a couple of versions of V8 ahead and includes some more, major (traumatic) API changes. + +Because we are now nearing Node 0.12 and estimate that the version of V8 we are using in Node 0.11.13 will be close to the API we get for 0.12, we have taken the opportunity to not only *fix* NAN for 0.11.13 but make some major changes to improve the NAN API. + +We have **removed support for Node 0.11 versions prior to 0.11.13**, (although our tests are still passing for 0.11.10). As usual, our tests are run against (and pass) the last 5 versions of Node 0.8 and Node 0.10. We also include Node 0.11.13 obviously. + +The major change is something that [Benjamin Byholm](kkoopa) has put many hours in to. We now have a fantastic new `NanNew(args)` interface for creating new `Local`s, this replaces `NanNewLocal()` and much more. If you look in [./nan.h](nan.h) you'll see a large number of overloaded versions of this method. In general you should be able to `NanNew(arguments)` for any type you want to make a `Local` from. This includes `Persistent` types, so we now have a `Local NanNew(const Persistent arg)` to replace `NanPersistentToLocal()`. + +We also now have `NanUndefined()`, `NanNull()`, `NanTrue()` and `NanFalse()`. Mainly because of the new requirement for an `Isolate` argument for each of the native V8 versions of this. + +V8 has now introduced an `EscapableHandleScope` from which you `scope.Escape(Local value)` to *return* a value from a one scope to another. This replaces the standard `HandleScope` and `scope.Close(Local value)`, although `HandleScope` still exists for when you don't need to return a handle to the caller. For NAN we are exposing it as `NanEscapableScope()` and `NanEscapeScope()`, while `NanScope()` is still how you create a new scope that doesn't need to return handles. For older versions of Node/V8, it'll still map to the older `HandleScope` functionality. + +`NanFromV8String()` was deprecated and has now been removed. You should use `NanCString()` or `NanRawString()` instead. + +Because `node::MakeCallback()` now takes an `Isolate`, and because it doesn't exist in older versions of Node, we've introduced `NanMakeCallabck()`. You should *always* use this when calling a JavaScript function from C++. + +There's lots more, check out the Changelog in nan.h or look through [#86](https://github.com/rvagg/nan/pull/86) for all the gory details. + +### Dec-2013: NanCString and NanRawString + +Two new functions have been introduced to replace the functionality that's been provided by `NanFromV8String` until now. NanCString has sensible defaults so it's super easy to fetch a null-terminated c-style string out of a `v8::String`. `NanFromV8String` is still around and has defaults that allow you to pass a single handle to fetch a `char*` while `NanRawString` requires a little more attention to arguments. + +### Nov-2013: Node 0.11.9+ breaking V8 change + +The version of V8 that's shipping with Node 0.11.9+ has changed the signature for new `Local`s to: `v8::Local::New(isolate, value)`, i.e. introducing the `isolate` argument and therefore breaking all new `Local` declarations for previous versions. NAN 0.6+ now includes a `NanNewLocal(value)` that can be used in place to work around this incompatibility and maintain compatibility with 0.8->0.11.9+ (minus a few early 0.11 releases). + +For example, if you wanted to return a `null` on a callback you will have to change the argument from `v8::Local::New(v8::Null())` to `NanNewLocal(v8::Null())`. + +### Nov-2013: Change to binding.gyp `"include_dirs"` for NAN + +Inclusion of NAN in a project's binding.gyp is now greatly simplified. You can now just use `" +## Usage + +Simply add **NAN** as a dependency in the *package.json* of your Node addon: + +``` bash +$ npm install --save nan +``` + +Pull in the path to **NAN** in your *binding.gyp* so that you can use `#include ` in your *.cpp* files: + +``` python +"include_dirs" : [ + "` when compiling your addon. + + +## Example + +See **[LevelDOWN](https://github.com/rvagg/node-leveldown/pull/48)** for a full example of **NAN** in use. + +For a simpler example, see the **[async pi estimation example](https://github.com/rvagg/nan/tree/master/examples/async_pi_estimate)** in the examples directory for full code and an explanation of what this Monte Carlo Pi estimation example does. Below are just some parts of the full example that illustrate the use of **NAN**. + +Compare to the current 0.10 version of this example, found in the [node-addon-examples](https://github.com/rvagg/node-addon-examples/tree/master/9_async_work) repository and also a 0.11 version of the same found [here](https://github.com/kkoopa/node-addon-examples/tree/5c01f58fc993377a567812597e54a83af69686d7/9_async_work). + +Note that there is no embedded version sniffing going on here and also the async work is made much simpler, see below for details on the `NanAsyncWorker` class. + +```c++ +// addon.cc +#include +#include +// ... + +using v8::FunctionTemplate; +using v8::Handle; +using v8::Object; + +void InitAll(Handle exports) { + exports->Set(NanSymbol("calculateSync"), + NanNew(CalculateSync)->GetFunction()); + + exports->Set(NanSymbol("calculateAsync"), + NanNew(CalculateAsync)->GetFunction()); +} + +NODE_MODULE(addon, InitAll) +``` + +```c++ +// sync.h +#include +#include + +NAN_METHOD(CalculateSync); +``` + +```c++ +// sync.cc +#include +#include +#include "./sync.h" +// ... + +using v8::Number; + +// Simple synchronous access to the `Estimate()` function +NAN_METHOD(CalculateSync) { + NanScope(); + + // expect a number as the first argument + int points = args[0]->Uint32Value(); + double est = Estimate(points); + + NanReturnValue(NanNew(est)); +} +``` + +```c++ +// async.cc +#include +#include +#include "./async.h" + +// ... + +using v8::Function; +using v8::Local; +using v8::Null; +using v8::Number; +using v8::Value; + +class PiWorker : public NanAsyncWorker { + public: + PiWorker(NanCallback *callback, int points) + : NanAsyncWorker(callback), points(points) {} + ~PiWorker() {} + + // Executed inside the worker-thread. + // It is not safe to access V8, or V8 data structures + // here, so everything we need for input and output + // should go on `this`. + void Execute () { + estimate = Estimate(points); + } + + // Executed when the async work is complete + // this function will be run inside the main event loop + // so it is safe to use V8 again + void HandleOKCallback () { + NanScope(); + + Local argv[] = { + NanNew(NanNull()) + , NanNew(estimate) + }; + + callback->Call(2, argv); + }; + + private: + int points; + double estimate; +}; + +// Asynchronous access to the `Estimate()` function +NAN_METHOD(CalculateAsync) { + NanScope(); + + int points = args[0]->Uint32Value(); + NanCallback *callback = new NanCallback(args[1].As()); + + NanAsyncQueueWorker(new PiWorker(callback, points)); + NanReturnUndefined(); +} +``` + + +## API + + * NAN_METHOD + * NAN_GETTER + * NAN_SETTER + * NAN_PROPERTY_GETTER + * NAN_PROPERTY_SETTER + * NAN_PROPERTY_ENUMERATOR + * NAN_PROPERTY_DELETER + * NAN_PROPERTY_QUERY + * NAN_INDEX_GETTER + * NAN_INDEX_SETTER + * NAN_INDEX_ENUMERATOR + * NAN_INDEX_DELETER + * NAN_INDEX_QUERY + * NAN_WEAK_CALLBACK + * NAN_DEPRECATED + * NAN_INLINE + * NanNew + * NanUndefined + * NanNull + * NanTrue + * NanFalse + * NanReturnValue + * NanReturnUndefined + * NanReturnNull + * NanReturnEmptyString + * NanScope + * NanEscapableScope + * NanEscapeScope + * NanLocker + * NanUnlocker + * NanGetInternalFieldPointer + * NanSetInternalFieldPointer + * NanObjectWrapHandle + * NanSymbol + * NanGetPointerSafe + * NanSetPointerSafe + * NanRawString + * NanCString + * NanBooleanOptionValue + * NanUInt32OptionValue + * NanError, NanTypeError, NanRangeError + * NanThrowError, NanThrowTypeError, NanThrowRangeError, NanThrowError(Handle), NanThrowError(Handle, int) + * NanNewBufferHandle(char *, size_t, FreeCallback, void *), NanNewBufferHandle(char *, uint32_t), NanNewBufferHandle(uint32_t) + * NanBufferUse(char *, uint32_t) + * NanNewContextHandle + * NanGetCurrentContext + * NanHasInstance + * NanDisposePersistent + * NanAssignPersistent + * NanMakeWeakPersistent + * NanSetTemplate + * NanMakeCallback + * NanCompileScript + * NanRunScript + * NanAdjustExternalMemory + * NanAddGCEpilogueCallback + * NanAddGCPrologueCallback + * NanRemoveGCEpilogueCallback + * NanRemoveGCPrologueCallback + * NanGetHeapStatistics + * NanCallback + * NanAsyncWorker + * NanAsyncQueueWorker + + +### NAN_METHOD(methodname) + +Use `NAN_METHOD` to define your V8 accessible methods: + +```c++ +// .h: +class Foo : public node::ObjectWrap { + ... + + static NAN_METHOD(Bar); + static NAN_METHOD(Baz); +} + + +// .cc: +NAN_METHOD(Foo::Bar) { + ... +} + +NAN_METHOD(Foo::Baz) { + ... +} +``` + +The reason for this macro is because of the method signature change in 0.11: + +```c++ +// 0.10 and below: +Handle name(const Arguments& args) + +// 0.11 and above +void name(const FunctionCallbackInfo& args) +``` + +The introduction of `FunctionCallbackInfo` brings additional complications: + + +### NAN_GETTER(methodname) + +Use `NAN_GETTER` to declare your V8 accessible getters. You get a `Local` `property` and an appropriately typed `args` object that can act like the `args` argument to a `NAN_METHOD` call. + +You can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_GETTER`. + + +### NAN_SETTER(methodname) + +Use `NAN_SETTER` to declare your V8 accessible setters. Same as `NAN_GETTER` but you also get a `Local` `value` object to work with. + + +### NAN_PROPERTY_GETTER(cbname) +Use `NAN_PROPERTY_GETTER` to declare your V8 accessible property getters. You get a `Local` `property` and an appropriately typed `args` object that can act similar to the `args` argument to a `NAN_METHOD` call. + +You can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_PROPERTY_GETTER`. + + +### NAN_PROPERTY_SETTER(cbname) +Use `NAN_PROPERTY_SETTER` to declare your V8 accessible property setters. Same as `NAN_PROPERTY_GETTER` but you also get a `Local` `value` object to work with. + + +### NAN_PROPERTY_ENUMERATOR(cbname) +Use `NAN_PROPERTY_ENUMERATOR` to declare your V8 accessible property enumerators. You get an appropriately typed `args` object like the `args` argument to a `NAN_PROPERTY_GETTER` call. + +You can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_PROPERTY_ENUMERATOR`. + + +### NAN_PROPERTY_DELETER(cbname) +Use `NAN_PROPERTY_DELETER` to declare your V8 accessible property deleters. Same as `NAN_PROPERTY_GETTER`. + +You can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_PROPERTY_DELETER`. + + +### NAN_PROPERTY_QUERY(cbname) +Use `NAN_PROPERTY_QUERY` to declare your V8 accessible property queries. Same as `NAN_PROPERTY_GETTER`. + +You can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_PROPERTY_QUERY`. + + +### NAN_INDEX_GETTER(cbname) +Use `NAN_INDEX_GETTER` to declare your V8 accessible index getters. You get a `uint32_t` `index` and an appropriately typed `args` object that can act similar to the `args` argument to a `NAN_METHOD` call. + +You can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_INDEX_GETTER`. + + +### NAN_INDEX_SETTER(cbname) +Use `NAN_INDEX_SETTER` to declare your V8 accessible index setters. Same as `NAN_INDEX_GETTER` but you also get a `Local` `value` object to work with. + + +### NAN_INDEX_ENUMERATOR(cbname) +Use `NAN_INDEX_ENUMERATOR` to declare your V8 accessible index enumerators. You get an appropriately typed `args` object like the `args` argument to a `NAN_INDEX_GETTER` call. + +You can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_INDEX_ENUMERATOR`. + + +### NAN_INDEX_DELETER(cbname) +Use `NAN_INDEX_DELETER` to declare your V8 accessible index deleters. Same as `NAN_INDEX_GETTER`. + +You can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_INDEX_DELETER`. + + +### NAN_INDEX_QUERY(cbname) +Use `NAN_INDEX_QUERY` to declare your V8 accessible index queries. Same as `NAN_INDEX_GETTER`. + +You can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_INDEX_QUERY`. + + +### NAN_WEAK_CALLBACK(cbname) + +Use `NAN_WEAK_CALLBACK` to define your V8 WeakReference callbacks. Do not use for declaration. There is an argument object `const _NanWeakCallbackData &data` allowing access to the weak object and the supplied parameter through its `GetValue` and `GetParameter` methods. + +```c++ +NAN_WEAK_CALLBACK(weakCallback) { + int *parameter = data.GetParameter(); + NanMakeCallback(NanGetCurrentContext()->Global(), data.GetValue(), 0, NULL); + if ((*parameter)++ == 0) { + data.Revive(); + } else { + delete parameter; + data.Dispose(); + } +} +``` + + +### NAN_DEPRECATED +Declares a function as deprecated. + +```c++ +static NAN_DEPRECATED NAN_METHOD(foo) { + ... +} +``` + + +### NAN_INLINE +Inlines a function. + +```c++ +NAN_INLINE int foo(int bar) { + ... +} +``` + + +### Local<T> NanNew<T>( ... ) + +Use `NanNew` to construct almost all v8 objects and make new local handles. + +```c++ +Local s = NanNew("value"); + +... + +Persistent o; + +... + +Local lo = NanNew(o); + +``` + + +### Handle<Primitive> NanUndefined() + +Use instead of `Undefined()` + + +### Handle<Primitive> NanNull() + +Use instead of `Null()` + + +### Handle<Primitive> NanTrue() + +Use instead of `True()` + + +### Handle<Primitive> NanFalse() + +Use instead of `False()` + + +### NanReturnValue(Handle<Value>) + +Use `NanReturnValue` when you want to return a value from your V8 accessible method: + +```c++ +NAN_METHOD(Foo::Bar) { + ... + + NanReturnValue(NanNew("FooBar!")); +} +``` + +No `return` statement required. + + +### NanReturnUndefined() + +Use `NanReturnUndefined` when you don't want to return anything from your V8 accessible method: + +```c++ +NAN_METHOD(Foo::Baz) { + ... + + NanReturnUndefined(); +} +``` + + +### NanReturnNull() + +Use `NanReturnNull` when you want to return `Null` from your V8 accessible method: + +```c++ +NAN_METHOD(Foo::Baz) { + ... + + NanReturnNull(); +} +``` + + +### NanReturnEmptyString() + +Use `NanReturnEmptyString` when you want to return an empty `String` from your V8 accessible method: + +```c++ +NAN_METHOD(Foo::Baz) { + ... + + NanReturnEmptyString(); +} +``` + + +### NanScope() + +The introduction of `isolate` references for many V8 calls in Node 0.11 makes `NanScope()` necessary, use it in place of `HandleScope scope`: + +```c++ +NAN_METHOD(Foo::Bar) { + NanScope(); + + NanReturnValue(NanNew("FooBar!")); +} +``` + + +### NanEscapableScope() + +The separation of handle scopes into escapable and inescapable scopes makes `NanEscapableScope()` necessary, use it in place of `HandleScope scope` when you later wish to `Close()` the scope: + +```c++ +Handle Foo::Bar() { + NanEscapableScope(); + + return NanEscapeScope(NanNew("FooBar!")); +} +``` + + +### Local<T> NanEscapeScope(Handle<T> value); +Use together with `NanEscapableScope` to escape the scope. Corresponds to `HandleScope::Close` or `EscapableHandleScope::Escape`. + + +### NanLocker() + +The introduction of `isolate` references for many V8 calls in Node 0.11 makes `NanLocker()` necessary, use it in place of `Locker locker`: + +```c++ +NAN_METHOD(Foo::Bar) { + NanLocker(); + ... + NanUnlocker(); +} +``` + + +### NanUnlocker() + +The introduction of `isolate` references for many V8 calls in Node 0.11 makes `NanUnlocker()` necessary, use it in place of `Unlocker unlocker`: + +```c++ +NAN_METHOD(Foo::Bar) { + NanLocker(); + ... + NanUnlocker(); +} +``` + + +### void * NanGetInternalFieldPointer(Handle<Object>, int) + +Gets a pointer to the internal field with at `index` from a V8 `Object` handle. + +```c++ +Local obj; +... +NanGetInternalFieldPointer(obj, 0); +``` + +### void NanSetInternalFieldPointer(Handle<Object>, int, void *) + +Sets the value of the internal field at `index` on a V8 `Object` handle. + +```c++ +static Persistent dataWrapperCtor; +... +Local wrapper = NanPersistentToLocal(dataWrapperCtor)->NewInstance(); +NanSetInternalFieldPointer(wrapper, 0, this); +``` + + +### Local<Object> NanObjectWrapHandle(Object) + +When you want to fetch the V8 object handle from a native object you've wrapped with Node's `ObjectWrap`, you should use `NanObjectWrapHandle`: + +```c++ +NanObjectWrapHandle(iterator)->Get(NanSymbol("end")) +``` + + +### String NanSymbol(char *) + +Use to create string symbol objects (i.e. `v8::String::NewSymbol(x)`), for getting and setting object properties, or names of objects. + +```c++ +bool foo = false; +if (obj->Has(NanSymbol("foo"))) + foo = optionsObj->Get(NanSymbol("foo"))->BooleanValue() +``` + + +### Type NanGetPointerSafe(Type *[, Type]) + +A helper for getting values from optional pointers. If the pointer is `NULL`, the function returns the optional default value, which defaults to `0`. Otherwise, the function returns the value the pointer points to. + +```c++ +char *plugh(uint32_t *optional) { + char res[] = "xyzzy"; + uint32_t param = NanGetPointerSafe(optional, 0x1337); + switch (param) { + ... + } + NanSetPointerSafe(optional, 0xDEADBEEF); +} +``` + + +### bool NanSetPointerSafe(Type *, Type) + +A helper for setting optional argument pointers. If the pointer is `NULL`, the function simply returns `false`. Otherwise, the value is assigned to the variable the pointer points to. + +```c++ +const char *plugh(size_t *outputsize) { + char res[] = "xyzzy"; + if !(NanSetPointerSafe(outputsize, strlen(res) + 1)) { + ... + } + + ... +} +``` + + +### void* NanRawString(Handle<Value>, enum Nan::Encoding, size_t *, void *, size_t, int) + +When you want to convert a V8 `String` to a `char*` buffer, use `NanRawString`. You have to supply an encoding as well as a pointer to a variable that will be assigned the number of bytes in the returned string. It is also possible to supply a buffer and its length to the function in order not to have a new buffer allocated. The final argument allows setting `String::WriteOptions`. +Just remember that you'll end up with an object that you'll need to `delete[]` at some point unless you supply your own buffer: + +```c++ +size_t count; +void* decoded = NanRawString(args[1], Nan::BASE64, &count, NULL, 0, String::HINT_MANY_WRITES_EXPECTED); +char param_copy[count]; +memcpy(param_copy, decoded, count); +delete[] decoded; +``` + + +### char* NanCString(Handle<Value>, size_t *[, char *, size_t, int]) + +When you want to convert a V8 `String` to a null-terminated C `char*` use `NanCString`. The resulting `char*` will be UTF-8-encoded, and you need to supply a pointer to a variable that will be assigned the number of bytes in the returned string. It is also possible to supply a buffer and its length to the function in order not to have a new buffer allocated. The final argument allows optionally setting `String::WriteOptions`, which default to `v8::String::NO_OPTIONS`. +Just remember that you'll end up with an object that you'll need to `delete[]` at some point unless you supply your own buffer: + +```c++ +size_t count; +char* name = NanCString(args[0], &count); +``` + + +### bool NanBooleanOptionValue(Handle<Value>, Handle<String>[, bool]) + +When you have an "options" object that you need to fetch properties from, boolean options can be fetched with this pair. They check first if the object exists (`IsEmpty`), then if the object has the given property (`Has`) then they get and convert/coerce the property to a `bool`. + +The optional last parameter is the *default* value, which is `false` if left off: + +```c++ +// `foo` is false unless the user supplies a truthy value for it +bool foo = NanBooleanOptionValue(optionsObj, NanSymbol("foo")); +// `bar` is true unless the user supplies a falsy value for it +bool bar = NanBooleanOptionValueDefTrue(optionsObj, NanSymbol("bar"), true); +``` + + +### uint32_t NanUInt32OptionValue(Handle<Value>, Handle<String>, uint32_t) + +Similar to `NanBooleanOptionValue`, use `NanUInt32OptionValue` to fetch an integer option from your options object. Can be any kind of JavaScript `Number` and it will be coerced to an unsigned 32-bit integer. + +Requires all 3 arguments as a default is not optional: + +```c++ +uint32_t count = NanUInt32OptionValue(optionsObj, NanSymbol("count"), 1024); +``` + + +### NanError(message), NanTypeError(message), NanRangeError(message) + +For making `Error`, `TypeError` and `RangeError` objects. + +```c++ +Local res = NanError("you must supply a callback argument"); +``` + + +### NanThrowError(message), NanThrowTypeError(message), NanThrowRangeError(message), NanThrowError(Local<Value>), NanThrowError(Local<Value>, int) + +For throwing `Error`, `TypeError` and `RangeError` objects. You should `return` this call: + +```c++ +return NanThrowError("you must supply a callback argument"); +``` + +Can also handle any custom object you may want to throw. If used with the error code argument, it will add the supplied error code to the error object as a property called `code`. + + +### Local<Object> NanNewBufferHandle(char *, uint32_t), Local<Object> NanNewBufferHandle(uint32_t) + +The `Buffer` API has changed a little in Node 0.11, this helper provides consistent access to `Buffer` creation: + +```c++ +NanNewBufferHandle((char*)value.data(), value.size()); +``` + +Can also be used to initialize a `Buffer` with just a `size` argument. + +Can also be supplied with a `NanFreeCallback` and a hint for the garbage collector. + + +### Local<Object> NanBufferUse(char*, uint32_t) + +`Buffer::New(char*, uint32_t)` prior to 0.11 would make a copy of the data. +While it was possible to get around this, it required a shim by passing a +callback. So the new API `Buffer::Use(char*, uint32_t)` was introduced to remove +needing to use this shim. + +`NanBufferUse` uses the `char*` passed as the backing data, and will free the +memory automatically when the weak callback is called. Keep this in mind, as +careless use can lead to "double free or corruption" and other cryptic failures. + + +### bool NanHasInstance(Persistent<FunctionTemplate>&, Handle<Value>) + +Can be used to check the type of an object to determine it is of a particular class you have already defined and have a `Persistent` handle for. + + +### Local<Context> NanNewContextHandle([ExtensionConfiguration*, Handle<ObjectTemplate>, Handle<Value>]) +Creates a new `Local` handle. + +```c++ +Local ftmpl = NanNew(); +Local otmpl = ftmpl->InstanceTemplate(); +Local ctx = NanNewContextHandle(NULL, otmpl); +``` + + +### Local NanGetCurrentContext() + +Gets the current context. + +```c++ +Local ctx = NanGetCurrentContext(); +``` + + +### void NanDisposePersistent(Persistent<T> &) + +Use `NanDisposePersistent` to dispose a `Persistent` handle. + +```c++ +NanDisposePersistent(persistentHandle); +``` + + +### NanAssignPersistent(type, handle, object) + +Use `NanAssignPersistent` to assign a non-`Persistent` handle to a `Persistent` one. You can no longer just declare a `Persistent` handle and assign directly to it later, you have to `Reset` it in Node 0.11, so this makes it easier. + +In general it is now better to place anything you want to protect from V8's garbage collector as properties of a generic `Object` and then assign that to a `Persistent`. This works in older versions of Node also if you use `NanAssignPersistent`: + +```c++ +Persistent persistentHandle; + +... + +Local obj = NanNew(); +obj->Set(NanSymbol("key"), keyHandle); // where keyHandle might be a Local +NanAssignPersistent(Object, persistentHandle, obj) +``` + + +### NanMakeWeakPersistent(Handle<T> handle, P* parameter, _NanWeakCallbackInfo<T, P>::Callback callback) + +Creates a weak persistent handle with the supplied parameter and `NAN_WEAK_CALLBACK`. The callback has to be fully specialized to work on all versions of Node. + +```c++ +NAN_WEAK_CALLBACK(weakCallback) { + +... + +} + +Local func; + +... + +int *parameter = new int(0); +NanMakeWeakPersistent(func, parameter, &weakCallback); +``` + + +### NanSetTemplate(templ, name, value) + +Use to add properties on object and function templates. + + +### NanMakeCallback(target, func, argc, argv) + +Use instead of `node::MakeCallback` to call javascript functions. This is the only proper way of calling functions. + + +### NanCompileScript(Handle s [, const ScriptOrigin& origin]) + +Use to create new scripts bound to the current context. + + +### NanRunScript(script) + +Use to run both bound and unbound scripts. + + +### NanAdjustExternalMemory(int change_in_bytes) + +Simply does `AdjustAmountOfExternalAllocatedMemory` + + +### NanAddGCEpilogueCallback(GCEpilogueCallback callback, GCType gc_type_filter=kGCTypeAll) + +Simply does `AddGCEpilogueCallback` + + +### NanAddGCPrologueCallback(GCPrologueCallback callback, GCType gc_type_filter=kGCTypeAll) + +Simply does `AddGCPrologueCallback` + + +### NanRemoveGCEpilogueCallback(GCEpilogueCallback callback) + +Simply does `RemoveGCEpilogueCallback` + + +### NanRemoveGCPrologueCallback(GCPrologueCallback callback) + +Simply does `RemoveGCPrologueCallback` + + +### NanGetHeapStatistics(HeapStatistics *heap_statistics) + +Simply does `GetHeapStatistics` + + +### NanCallback + +Because of the difficulties imposed by the changes to `Persistent` handles in V8 in Node 0.11, creating `Persistent` versions of your `Handle` is annoyingly tricky. `NanCallback` makes it easier by taking your handle, making it persistent until the `NanCallback` is deleted and even providing a handy `Call()` method to fetch and execute the callback `Function`. + +```c++ +Local callbackHandle = args[0].As(); +NanCallback *callback = new NanCallback(callbackHandle); +// pass `callback` around and it's safe from GC until you: +delete callback; +``` + +You can execute the callback like so: + +```c++ +// no arguments: +callback->Call(0, NULL); + +// an error argument: +Handle argv[] = { + NanError(NanNew("fail!")) +}; +callback->Call(1, argv); + +// a success argument: +Handle argv[] = { + NanNull(), + NanNew("w00t!") +}; +callback->Call(2, argv); +``` + +`NanCallback` also has a `Local GetCallback()` method that you can use +to fetch a local handle to the underlying callback function, as well as a +`void SetFunction(Handle)` for setting the callback on the +`NanCallback`. Additionally a generic constructor is available for using +`NanCallback` without performing heap allocations. + + +### NanAsyncWorker + +`NanAsyncWorker` is an abstract class that you can subclass to have much of the annoying async queuing and handling taken care of for you. It can even store arbitrary V8 objects for you and have them persist while the async work is in progress. + +See a rough outline of the implementation: + +```c++ +class NanAsyncWorker { +public: + NanAsyncWorker (NanCallback *callback); + + // Clean up persistent handles and delete the *callback + virtual ~NanAsyncWorker (); + + // Check the `char *errmsg` property and call HandleOKCallback() + // or HandleErrorCallback depending on whether it has been set or not + virtual void WorkComplete (); + + // You must implement this to do some async work. If there is an + // error then allocate `errmsg` to a message and the callback will + // be passed that string in an Error object + virtual void Execute (); + + // Save a V8 object in a Persistent handle to protect it from GC + void SavePersistent(const char *key, Local &obj); + + // Fetch a stored V8 object (don't call from within `Execute()`) + Local GetFromPersistent(const char *key); + +protected: + // Set this if there is an error, otherwise it's NULL + const char *errmsg; + + // Default implementation calls the callback function with no arguments. + // Override this to return meaningful data + virtual void HandleOKCallback (); + + // Default implementation calls the callback function with an Error object + // wrapping the `errmsg` string + virtual void HandleErrorCallback (); +}; +``` + + +### NanAsyncQueueWorker(NanAsyncWorker *) + +`NanAsyncQueueWorker` will run a `NanAsyncWorker` asynchronously via libuv. Both the *execute* and *after_work* steps are taken care of for you—most of the logic for this is embedded in `NanAsyncWorker`. + +### Contributors + +NAN is only possible due to the excellent work of the following contributors: + + + + + + + + +
    Rod VaggGitHub/rvaggTwitter/@rvagg
    Benjamin ByholmGitHub/kkoopa
    Trevor NorrisGitHub/trevnorrisTwitter/@trevnorris
    Nathan RajlichGitHub/TooTallNateTwitter/@TooTallNate
    Brett LawsonGitHub/brett19Twitter/@brett19x
    Ben NoordhuisGitHub/bnoordhuisTwitter/@bnoordhuis
    + +Licence & copyright +----------------------- + +Copyright (c) 2014 NAN contributors (listed above). + +Native Abstractions for Node.js is licensed under an MIT +no-false-attribs license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/build/config.gypi b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/build/config.gypi new file mode 100644 index 00000000..e085a500 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/build/config.gypi @@ -0,0 +1,38 @@ +# Do not edit. File was generated by node-gyp's "configure" step +{ + "target_defaults": { + "cflags": [], + "default_configuration": "Release", + "defines": [], + "include_dirs": [], + "libraries": [] + }, + "variables": { + "clang": 0, + "gcc_version": 47, + "host_arch": "x64", + "node_install_npm": "true", + "node_prefix": "", + "node_shared_cares": "false", + "node_shared_http_parser": "false", + "node_shared_libuv": "false", + "node_shared_openssl": "false", + "node_shared_v8": "false", + "node_shared_zlib": "false", + "node_tag": "", + "node_unsafe_optimizations": 0, + "node_use_dtrace": "false", + "node_use_etw": "false", + "node_use_openssl": "true", + "node_use_perfctr": "false", + "node_use_systemtap": "false", + "python": "/usr/bin/python", + "target_arch": "x64", + "v8_enable_gdbjit": 0, + "v8_no_strict_aliasing": 1, + "v8_use_snapshot": "true", + "nodedir": "/home/rvagg/.node-gyp/0.10.21", + "copy_dev_lib": "true", + "standalone_static_library": 1 + } +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/include_dirs.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/include_dirs.js new file mode 100644 index 00000000..4f1dfb41 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/include_dirs.js @@ -0,0 +1 @@ +console.log(require('path').relative('.', __dirname)); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/nan.h b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/nan.h new file mode 100644 index 00000000..bc544f53 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/nan.h @@ -0,0 +1,1910 @@ +/********************************************************************************** + * NAN - Native Abstractions for Node.js + * + * Copyright (c) 2014 NAN contributors: + * - Rod Vagg + * - Benjamin Byholm + * - Trevor Norris + * - Nathan Rajlich + * - Brett Lawson + * - Ben Noordhuis + * + * MIT +no-false-attribs License + * + * Version 1.0.0 (current Node unstable: 0.11.13, Node stable: 0.10.28) + * + * ChangeLog: + * * 1.0.0 May 4 2014 + * - Heavy API changes for V8 3.25 / Node 0.11.13 + * - Use cpplint.py + * - Removed NanInitPersistent + * - Removed NanPersistentToLocal + * - Removed NanFromV8String + * - Removed NanMakeWeak + * - Removed NanNewLocal + * - Removed NAN_WEAK_CALLBACK_OBJECT + * - Removed NAN_WEAK_CALLBACK_DATA + * - Introduce NanNew, replaces NanNewLocal, NanPersistentToLocal, adds many overloaded typed versions + * - Introduce NanUndefined, NanNull, NanTrue and NanFalse + * - Introduce NanEscapableScope and NanEscapeScope + * - Introduce NanMakeWeakPersistent (requires a special callback to work on both old and new node) + * - Introduce NanMakeCallback for node::MakeCallback + * - Introduce NanSetTemplate + * - Introduce NanGetCurrentContext + * - Introduce NanCompileScript and NanRunScript + * - Introduce NanAdjustExternalMemory + * - Introduce NanAddGCEpilogueCallback, NanAddGCPrologueCallback, NanRemoveGCEpilogueCallback, NanRemoveGCPrologueCallback + * - Introduce NanGetHeapStatistics + * - Rename NanAsyncWorker#SavePersistent() to SaveToPersistent() + * + * * 0.8.0 Jan 9 2014 + * - NanDispose -> NanDisposePersistent, deprecate NanDispose + * - Extract _NAN_*_RETURN_TYPE, pull up NAN_*() + * + * * 0.7.1 Jan 9 2014 + * - Fixes to work against debug builds of Node + * - Safer NanPersistentToLocal (avoid reinterpret_cast) + * - Speed up common NanRawString case by only extracting flattened string when necessary + * + * * 0.7.0 Dec 17 2013 + * - New no-arg form of NanCallback() constructor. + * - NanCallback#Call takes Handle rather than Local + * - Removed deprecated NanCallback#Run method, use NanCallback#Call instead + * - Split off _NAN_*_ARGS_TYPE from _NAN_*_ARGS + * - Restore (unofficial) Node 0.6 compatibility at NanCallback#Call() + * - Introduce NanRawString() for char* (or appropriate void*) from v8::String + * (replacement for NanFromV8String) + * - Introduce NanCString() for null-terminated char* from v8::String + * + * * 0.6.0 Nov 21 2013 + * - Introduce NanNewLocal(v8::Handle value) for use in place of + * v8::Local::New(...) since v8 started requiring isolate in Node 0.11.9 + * + * * 0.5.2 Nov 16 2013 + * - Convert SavePersistent and GetFromPersistent in NanAsyncWorker from protected and public + * + * * 0.5.1 Nov 12 2013 + * - Use node::MakeCallback() instead of direct v8::Function::Call() + * + * * 0.5.0 Nov 11 2013 + * - Added @TooTallNate as collaborator + * - New, much simpler, "include_dirs" for binding.gyp + * - Added full range of NAN_INDEX_* macros to match NAN_PROPERTY_* macros + * + * * 0.4.4 Nov 2 2013 + * - Isolate argument from v8::Persistent::MakeWeak removed for 0.11.8+ + * + * * 0.4.3 Nov 2 2013 + * - Include node_object_wrap.h, removed from node.h for Node 0.11.8. + * + * * 0.4.2 Nov 2 2013 + * - Handle deprecation of v8::Persistent::Dispose(v8::Isolate* isolate)) for + * Node 0.11.8 release. + * + * * 0.4.1 Sep 16 2013 + * - Added explicit `#include ` as it was removed from node.h for v0.11.8 + * + * * 0.4.0 Sep 2 2013 + * - Added NAN_INLINE and NAN_DEPRECATED and made use of them + * - Added NanError, NanTypeError and NanRangeError + * - Cleaned up code + * + * * 0.3.2 Aug 30 2013 + * - Fix missing scope declaration in GetFromPersistent() and SaveToPersistent + * in NanAsyncWorker + * + * * 0.3.1 Aug 20 2013 + * - fix "not all control paths return a value" compile warning on some platforms + * + * * 0.3.0 Aug 19 2013 + * - Made NAN work with NPM + * - Lots of fixes to NanFromV8String, pulling in features from new Node core + * - Changed node::encoding to Nan::Encoding in NanFromV8String to unify the API + * - Added optional error number argument for NanThrowError() + * - Added NanInitPersistent() + * - Added NanReturnNull() and NanReturnEmptyString() + * - Added NanLocker and NanUnlocker + * - Added missing scopes + * - Made sure to clear disposed Persistent handles + * - Changed NanAsyncWorker to allocate error messages on the heap + * - Changed NanThrowError(Local) to NanThrowError(Handle) + * - Fixed leak in NanAsyncWorker when errmsg is used + * + * * 0.2.2 Aug 5 2013 + * - Fixed usage of undefined variable with node::BASE64 in NanFromV8String() + * + * * 0.2.1 Aug 5 2013 + * - Fixed 0.8 breakage, node::BUFFER encoding type not available in 0.8 for + * NanFromV8String() + * + * * 0.2.0 Aug 5 2013 + * - Added NAN_PROPERTY_GETTER, NAN_PROPERTY_SETTER, NAN_PROPERTY_ENUMERATOR, + * NAN_PROPERTY_DELETER, NAN_PROPERTY_QUERY + * - Extracted _NAN_METHOD_ARGS, _NAN_GETTER_ARGS, _NAN_SETTER_ARGS, + * _NAN_PROPERTY_GETTER_ARGS, _NAN_PROPERTY_SETTER_ARGS, + * _NAN_PROPERTY_ENUMERATOR_ARGS, _NAN_PROPERTY_DELETER_ARGS, + * _NAN_PROPERTY_QUERY_ARGS + * - Added NanGetInternalFieldPointer, NanSetInternalFieldPointer + * - Added NAN_WEAK_CALLBACK, NAN_WEAK_CALLBACK_OBJECT, + * NAN_WEAK_CALLBACK_DATA, NanMakeWeak + * - Renamed THROW_ERROR to _NAN_THROW_ERROR + * - Added NanNewBufferHandle(char*, size_t, node::smalloc::FreeCallback, void*) + * - Added NanBufferUse(char*, uint32_t) + * - Added NanNewContextHandle(v8::ExtensionConfiguration*, + * v8::Handle, v8::Handle) + * - Fixed broken NanCallback#GetFunction() + * - Added optional encoding and size arguments to NanFromV8String() + * - Added NanGetPointerSafe() and NanSetPointerSafe() + * - Added initial test suite (to be expanded) + * - Allow NanUInt32OptionValue to convert any Number object + * + * * 0.1.0 Jul 21 2013 + * - Added `NAN_GETTER`, `NAN_SETTER` + * - Added `NanThrowError` with single Local argument + * - Added `NanNewBufferHandle` with single uint32_t argument + * - Added `NanHasInstance(Persistent&, Handle)` + * - Added `Local NanCallback#GetFunction()` + * - Added `NanCallback#Call(int, Local[])` + * - Deprecated `NanCallback#Run(int, Local[])` in favour of Call + * + * See https://github.com/rvagg/nan for the latest update to this file + **********************************************************************************/ + +#ifndef NAN_H_ +#define NAN_H_ + +#include +#include +#include +#include +#include +#include + +#if defined(__GNUC__) && !defined(DEBUG) +# define NAN_INLINE inline __attribute__((always_inline)) +#elif defined(_MSC_VER) && !defined(DEBUG) +# define NAN_INLINE __forceinline +#else +# define NAN_INLINE inline +#endif + +#if defined(__GNUC__) && !V8_DISABLE_DEPRECATIONS +# define NAN_DEPRECATED __attribute__((deprecated)) +#elif defined(_MSC_VER) && !V8_DISABLE_DEPRECATIONS +# define NAN_DEPRECATED __declspec(deprecated) +#else +# define NAN_DEPRECATED +#endif + +// some generic helpers + +template NAN_INLINE bool NanSetPointerSafe( + T *var + , T val +) { + if (var) { + *var = val; + return true; + } else { + return false; + } +} + +template NAN_INLINE T NanGetPointerSafe( + T *var + , T fallback = reinterpret_cast(0) +) { + if (var) { + return *var; + } else { + return fallback; + } +} + +NAN_INLINE bool NanBooleanOptionValue( + v8::Local optionsObj + , v8::Handle opt, bool def +) { + if (def) { + return optionsObj.IsEmpty() + || !optionsObj->Has(opt) + || optionsObj->Get(opt)->BooleanValue(); + } else { + return !optionsObj.IsEmpty() + && optionsObj->Has(opt) + && optionsObj->Get(opt)->BooleanValue(); + } +} + +NAN_INLINE bool NanBooleanOptionValue( + v8::Local optionsObj + , v8::Handle opt +) { + return NanBooleanOptionValue(optionsObj, opt, false); +} + +NAN_INLINE uint32_t NanUInt32OptionValue( + v8::Local optionsObj + , v8::Handle opt + , uint32_t def +) { + return !optionsObj.IsEmpty() + && optionsObj->Has(opt) + && optionsObj->Get(opt)->IsNumber() + ? optionsObj->Get(opt)->Uint32Value() + : def; +} + +#if (NODE_MODULE_VERSION > 0x000B) +// Node 0.11+ (0.11.3 and below won't compile with these) + +# define _NAN_METHOD_ARGS_TYPE const v8::FunctionCallbackInfo& +# define _NAN_METHOD_ARGS _NAN_METHOD_ARGS_TYPE args +# define _NAN_METHOD_RETURN_TYPE void + +# define _NAN_GETTER_ARGS_TYPE const v8::PropertyCallbackInfo& +# define _NAN_GETTER_ARGS _NAN_GETTER_ARGS_TYPE args +# define _NAN_GETTER_RETURN_TYPE void + +# define _NAN_SETTER_ARGS_TYPE const v8::PropertyCallbackInfo& +# define _NAN_SETTER_ARGS _NAN_SETTER_ARGS_TYPE args +# define _NAN_SETTER_RETURN_TYPE void + +# define _NAN_PROPERTY_GETTER_ARGS_TYPE \ + const v8::PropertyCallbackInfo& +# define _NAN_PROPERTY_GETTER_ARGS _NAN_PROPERTY_GETTER_ARGS_TYPE args +# define _NAN_PROPERTY_GETTER_RETURN_TYPE void + +# define _NAN_PROPERTY_SETTER_ARGS_TYPE \ + const v8::PropertyCallbackInfo& +# define _NAN_PROPERTY_SETTER_ARGS _NAN_PROPERTY_SETTER_ARGS_TYPE args +# define _NAN_PROPERTY_SETTER_RETURN_TYPE void + +# define _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE \ + const v8::PropertyCallbackInfo& +# define _NAN_PROPERTY_ENUMERATOR_ARGS _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE args +# define _NAN_PROPERTY_ENUMERATOR_RETURN_TYPE void + +# define _NAN_PROPERTY_DELETER_ARGS_TYPE \ + const v8::PropertyCallbackInfo& +# define _NAN_PROPERTY_DELETER_ARGS \ + _NAN_PROPERTY_DELETER_ARGS_TYPE args +# define _NAN_PROPERTY_DELETER_RETURN_TYPE void + +# define _NAN_PROPERTY_QUERY_ARGS_TYPE \ + const v8::PropertyCallbackInfo& +# define _NAN_PROPERTY_QUERY_ARGS _NAN_PROPERTY_QUERY_ARGS_TYPE args +# define _NAN_PROPERTY_QUERY_RETURN_TYPE void + +# define _NAN_INDEX_GETTER_ARGS_TYPE \ + const v8::PropertyCallbackInfo& +# define _NAN_INDEX_GETTER_ARGS _NAN_INDEX_GETTER_ARGS_TYPE args +# define _NAN_INDEX_GETTER_RETURN_TYPE void + +# define _NAN_INDEX_SETTER_ARGS_TYPE \ + const v8::PropertyCallbackInfo& +# define _NAN_INDEX_SETTER_ARGS _NAN_INDEX_SETTER_ARGS_TYPE args +# define _NAN_INDEX_SETTER_RETURN_TYPE void + +# define _NAN_INDEX_ENUMERATOR_ARGS_TYPE \ + const v8::PropertyCallbackInfo& +# define _NAN_INDEX_ENUMERATOR_ARGS _NAN_INDEX_ENUMERATOR_ARGS_TYPE args +# define _NAN_INDEX_ENUMERATOR_RETURN_TYPE void + +# define _NAN_INDEX_DELETER_ARGS_TYPE \ + const v8::PropertyCallbackInfo& +# define _NAN_INDEX_DELETER_ARGS _NAN_INDEX_DELETER_ARGS_TYPE args +# define _NAN_INDEX_DELETER_RETURN_TYPE void + +# define _NAN_INDEX_QUERY_ARGS_TYPE \ + const v8::PropertyCallbackInfo& +# define _NAN_INDEX_QUERY_ARGS _NAN_INDEX_QUERY_ARGS_TYPE args +# define _NAN_INDEX_QUERY_RETURN_TYPE void + +typedef v8::FunctionCallback NanFunctionCallback; +static v8::Isolate* nan_isolate = v8::Isolate::GetCurrent(); + +# define NanUndefined() v8::Undefined(nan_isolate) +# define NanNull() v8::Null(nan_isolate) +# define NanTrue() v8::True(nan_isolate) +# define NanFalse() v8::False(nan_isolate) +# define NanAdjustExternalMemory(amount) \ + nan_isolate->AdjustAmountOfExternalAllocatedMemory(amount) +# define NanSetTemplate(templ, name, value) templ->Set(nan_isolate, name, value) +# define NanGetCurrentContext() nan_isolate->GetCurrentContext() +# define NanMakeCallback(target, func, argc, argv) \ + node::MakeCallback(nan_isolate, target, func, argc, argv) +# define NanGetInternalFieldPointer(object, index) \ + object->GetAlignedPointerFromInternalField(index) +# define NanSetInternalFieldPointer(object, index, value) \ + object->SetAlignedPointerInInternalField(index, value) + + template + NAN_INLINE v8::Local NanNew() { + return T::New(nan_isolate); + } + + template + NAN_INLINE v8::Local NanNew(P arg1) { + return T::New(nan_isolate, arg1); + } + + template + NAN_INLINE v8::Local NanNew( + v8::Handle receiver + , int argc + , v8::Handle argv[] = 0) { + return v8::Signature::New(nan_isolate, receiver, argc, argv); + } + + template + NAN_INLINE v8::Local NanNew( + NanFunctionCallback callback + , v8::Handle data = v8::Handle() + , v8::Handle signature = v8::Handle()) { + return T::New(nan_isolate, callback, data, signature); + } + + template + NAN_INLINE v8::Local NanNew(v8::Handle arg1) { + return v8::Local::New(nan_isolate, arg1); + } + + template + NAN_INLINE v8::Local NanNew(const v8::Persistent &arg1) { + return v8::Local::New(nan_isolate, arg1); + } + + template + NAN_INLINE v8::Local NanNew(P arg1, int arg2) { + return T::New(nan_isolate, arg1, arg2); + } + + template<> + NAN_INLINE v8::Local NanNew() { + return v8::Array::New(nan_isolate); + } + + template<> + NAN_INLINE v8::Local NanNew(int length) { + return v8::Array::New(nan_isolate, length); + } + + template<> + NAN_INLINE v8::Local NanNew(double time) { + return v8::Date::New(nan_isolate, time).As(); + } + + template<> + NAN_INLINE v8::Local NanNew(int time) { + return v8::Date::New(nan_isolate, time).As(); + } + + typedef v8::UnboundScript NanUnboundScript; + typedef v8::Script NanBoundScript; + + template + NAN_INLINE v8::Local NanNew( + P s + , const v8::ScriptOrigin& origin + ) { + v8::ScriptCompiler::Source source(s, origin); + return v8::ScriptCompiler::CompileUnbound(nan_isolate, &source); + } + + template<> + NAN_INLINE v8::Local NanNew( + v8::Local s + ) { + v8::ScriptCompiler::Source source(s); + return v8::ScriptCompiler::CompileUnbound(nan_isolate, &source); + } + + NAN_INLINE v8::Local NanNew( + v8::String::ExternalStringResource *resource) { + return v8::String::NewExternal(nan_isolate, resource); + } + + NAN_INLINE v8::Local NanNew( + v8::String::ExternalAsciiStringResource *resource) { + return v8::String::NewExternal(nan_isolate, resource); + } + + template<> + NAN_INLINE v8::Local NanNew(bool value) { + return v8::BooleanObject::New(value).As(); + } + + template<> + NAN_INLINE v8::Local + NanNew >( + v8::Local value) { + return v8::StringObject::New(value).As(); + } + + template<> + NAN_INLINE v8::Local + NanNew >( + v8::Handle value) { + return v8::StringObject::New(value).As(); + } + + template<> + NAN_INLINE v8::Local NanNew(double val) { + return v8::NumberObject::New(nan_isolate, val).As(); + } + + template + NAN_INLINE v8::Local NanNew( + v8::Handle pattern, v8::RegExp::Flags flags) { + return v8::RegExp::New(pattern, flags); + } + + template + NAN_INLINE v8::Local NanNew( + v8::Local pattern, v8::RegExp::Flags flags) { + return v8::RegExp::New(pattern, flags); + } + + template + NAN_INLINE v8::Local NanNew( + v8::Handle pattern, v8::RegExp::Flags flags) { + return v8::RegExp::New(pattern, flags); + } + + template + NAN_INLINE v8::Local NanNew( + v8::Local pattern, v8::RegExp::Flags flags) { + return v8::RegExp::New(pattern, flags); + } + + template<> + NAN_INLINE v8::Local NanNew(int32_t val) { + return v8::Uint32::NewFromUnsigned(nan_isolate, val)->ToUint32(); + } + + template<> + NAN_INLINE v8::Local NanNew(uint32_t val) { + return v8::Uint32::NewFromUnsigned(nan_isolate, val)->ToUint32(); + } + + template<> + NAN_INLINE v8::Local NanNew(int32_t val) { + return v8::Int32::New(nan_isolate, val)->ToInt32(); + } + + template<> + NAN_INLINE v8::Local NanNew(uint32_t val) { + return v8::Int32::New(nan_isolate, val)->ToInt32(); + } + + template<> + NAN_INLINE v8::Local NanNew( + char *arg + , int length) { + return v8::String::NewFromUtf8( + nan_isolate + , arg + , v8::String::kNormalString + , length); + } + + template<> + NAN_INLINE v8::Local NanNew( + const char *arg + , int length) { + return v8::String::NewFromUtf8( + nan_isolate + , arg + , v8::String::kNormalString + , length); + } + + template<> + NAN_INLINE v8::Local NanNew(char *arg) { + return v8::String::NewFromUtf8(nan_isolate, arg); + } + + template<> + NAN_INLINE v8::Local NanNew( + const char *arg) { + return v8::String::NewFromUtf8(nan_isolate, arg); + } + + template<> + NAN_INLINE v8::Local NanNew( + uint8_t *arg + , int length) { + return v8::String::NewFromOneByte( + nan_isolate + , arg + , v8::String::kNormalString + , length); + } + + template<> + NAN_INLINE v8::Local NanNew( + const uint8_t *arg + , int length) { + return v8::String::NewFromOneByte( + nan_isolate + , arg + , v8::String::kNormalString + , length); + } + + template<> + NAN_INLINE v8::Local NanNew(uint8_t *arg) { + return v8::String::NewFromOneByte(nan_isolate, arg); + } + + template<> + NAN_INLINE v8::Local NanNew( + const uint8_t *arg) { + return v8::String::NewFromOneByte(nan_isolate, arg); + } + + template<> + NAN_INLINE v8::Local NanNew( + uint16_t *arg + , int length) { + return v8::String::NewFromTwoByte( + nan_isolate + , arg + , v8::String::kNormalString + , length); + } + + template<> + NAN_INLINE v8::Local NanNew( + const uint16_t *arg + , int length) { + return v8::String::NewFromTwoByte( + nan_isolate + , arg + , v8::String::kNormalString + , length); + } + template<> + NAN_INLINE v8::Local NanNew( + uint16_t *arg) { + return v8::String::NewFromTwoByte(nan_isolate, arg); + } + + template<> + NAN_INLINE v8::Local NanNew( + const uint16_t *arg) { + return v8::String::NewFromTwoByte(nan_isolate, arg); + } + + template<> + NAN_INLINE v8::Local NanNew() { + return v8::String::Empty(nan_isolate); + } + + NAN_INLINE void NanAddGCEpilogueCallback( + v8::Isolate::GCEpilogueCallback callback + , v8::GCType gc_type_filter = v8::kGCTypeAll) { + nan_isolate->AddGCEpilogueCallback(callback, gc_type_filter); + } + + NAN_INLINE void NanRemoveGCEpilogueCallback( + v8::Isolate::GCEpilogueCallback callback) { + nan_isolate->RemoveGCEpilogueCallback(callback); + } + + NAN_INLINE void NanAddGCPrologueCallback( + v8::Isolate::GCPrologueCallback callback + , v8::GCType gc_type_filter = v8::kGCTypeAll) { + nan_isolate->AddGCPrologueCallback(callback, gc_type_filter); + } + + NAN_INLINE void NanRemoveGCPrologueCallback( + v8::Isolate::GCPrologueCallback callback) { + nan_isolate->RemoveGCPrologueCallback(callback); + } + + NAN_INLINE void NanGetHeapStatistics( + v8::HeapStatistics *heap_statistics) { + nan_isolate->GetHeapStatistics(heap_statistics); + } + +# define NanSymbol(value) NanNew(value) + + template + NAN_INLINE void NanAssignPersistent( + v8::Persistent& handle + , v8::Handle obj) { + handle.Reset(nan_isolate, obj); + } + + template + NAN_INLINE void NanAssignPersistent( + v8::Persistent& handle + , const v8::Persistent& obj) { + handle.Reset(nan_isolate, obj); + } + + template + struct _NanWeakCallbackInfo { + typedef void (*Callback)( + const v8::WeakCallbackData >& data); + _NanWeakCallbackInfo(v8::Handle handle, P* param, Callback cb) + : parameter(param), callback(cb) { + NanAssignPersistent(persistent, handle); + } + + ~_NanWeakCallbackInfo() { + persistent.Reset(); + } + + P* const parameter; + Callback const callback; + v8::Persistent persistent; + }; + + template + class _NanWeakCallbackData { + public: + _NanWeakCallbackData(_NanWeakCallbackInfo *info) + : info_(info) { } + + NAN_INLINE v8::Local GetValue() const { + return NanNew(info_->persistent); + } + NAN_INLINE P* GetParameter() const { return info_->parameter; } + NAN_INLINE void Revive() const { + info_->persistent.SetWeak(info_, info_->callback); + } + + NAN_INLINE void Dispose() const { + delete info_; + } + + private: + _NanWeakCallbackInfo* info_; + }; + +// do not use for declaration +# define NAN_WEAK_CALLBACK(name) \ + template \ + static void name( \ + const v8::WeakCallbackData > &data) { \ + _NanWeakCallbackData wcbd( \ + data.GetParameter()); \ + _Nan_Weak_Callback_ ## name(wcbd); \ + } \ + \ + template \ + NAN_INLINE void _Nan_Weak_Callback_ ## name( \ + const _NanWeakCallbackData &data) + +# define NanScope() v8::HandleScope scope(nan_isolate) +# define NanEscapableScope() v8::EscapableHandleScope scope(nan_isolate) +# define NanEscapeScope(val) scope.Escape(val) +# define NanLocker() v8::Locker locker(nan_isolate) +# define NanUnlocker() v8::Unlocker unlocker(nan_isolate) +# define NanReturnValue(value) return args.GetReturnValue().Set(value) +# define NanReturnUndefined() return +# define NanReturnNull() return args.GetReturnValue().SetNull() +# define NanReturnEmptyString() return args.GetReturnValue().SetEmptyString() + +# define NanObjectWrapHandle(obj) obj->handle() + +template +void NAN_INLINE NanMakeWeakPersistent( + v8::Handle handle + , P* parameter + , typename _NanWeakCallbackInfo::Callback callback) { + _NanWeakCallbackInfo *cbinfo = + new _NanWeakCallbackInfo(handle, parameter, callback); + cbinfo->persistent.SetWeak(cbinfo, callback); +} + +# define _NAN_ERROR(fun, errmsg) fun(NanNew(errmsg)) + +# define _NAN_THROW_ERROR(fun, errmsg) \ + do { \ + NanScope(); \ + nan_isolate->ThrowException(_NAN_ERROR(fun, errmsg)); \ + } while (0); + + NAN_INLINE v8::Local NanError(const char* errmsg) { + return _NAN_ERROR(v8::Exception::Error, errmsg); + } + + NAN_INLINE void NanThrowError(const char* errmsg) { + _NAN_THROW_ERROR(v8::Exception::Error, errmsg); + } + + NAN_INLINE void NanThrowError(v8::Handle error) { + NanScope(); + nan_isolate->ThrowException(error); + } + + NAN_INLINE v8::Local NanError( + const char *msg + , const int errorNumber + ) { + v8::Local err = v8::Exception::Error(NanNew(msg)); + v8::Local obj = err.As(); + obj->Set(NanSymbol("code"), NanNew(errorNumber)); + return err; + } + + NAN_INLINE void NanThrowError( + const char *msg + , const int errorNumber + ) { + NanThrowError(NanError(msg, errorNumber)); + } + + NAN_INLINE v8::Local NanTypeError(const char* errmsg) { + return _NAN_ERROR(v8::Exception::TypeError, errmsg); + } + + NAN_INLINE void NanThrowTypeError(const char* errmsg) { + _NAN_THROW_ERROR(v8::Exception::TypeError, errmsg); + } + + NAN_INLINE v8::Local NanRangeError(const char* errmsg) { + return _NAN_ERROR(v8::Exception::RangeError, errmsg); + } + + NAN_INLINE void NanThrowRangeError(const char* errmsg) { + _NAN_THROW_ERROR(v8::Exception::RangeError, errmsg); + } + + template NAN_INLINE void NanDisposePersistent( + v8::Persistent &handle + ) { + handle.Reset(); + } + + NAN_INLINE v8::Local NanNewBufferHandle ( + char *data + , size_t length + , node::smalloc::FreeCallback callback + , void *hint + ) { + return node::Buffer::New(nan_isolate, data, length, callback, hint); + } + + NAN_INLINE v8::Local NanNewBufferHandle ( + const char *data + , uint32_t size + ) { + return node::Buffer::New(nan_isolate, data, size); + } + + NAN_INLINE v8::Local NanNewBufferHandle (uint32_t size) { + return node::Buffer::New(nan_isolate, size); + } + + NAN_INLINE v8::Local NanBufferUse( + char* data + , uint32_t size + ) { + return node::Buffer::Use(nan_isolate, data, size); + } + + NAN_INLINE bool NanHasInstance( + v8::Persistent& function_template + , v8::Handle value + ) { + return NanNew(function_template)->HasInstance(value); + } + + NAN_INLINE v8::Local NanNewContextHandle( + v8::ExtensionConfiguration* extensions = NULL + , v8::Handle tmpl = v8::Handle() + , v8::Handle obj = v8::Handle() + ) { + return v8::Local::New( + nan_isolate + , v8::Context::New(nan_isolate, extensions, tmpl, obj) + ); + } + + NAN_INLINE v8::Local NanCompileScript( + v8::Local s + , const v8::ScriptOrigin& origin + ) { + v8::ScriptCompiler::Source source(s, origin); + return v8::ScriptCompiler::Compile(nan_isolate, &source); + } + + NAN_INLINE v8::Local NanCompileScript( + v8::Local s + ) { + v8::ScriptCompiler::Source source(s); + return v8::ScriptCompiler::Compile(nan_isolate, &source); + } + + NAN_INLINE v8::Local NanRunScript( + v8::Local script + ) { + return script->BindToCurrentContext()->Run(); + } + + NAN_INLINE v8::Local NanRunScript( + v8::Local script + ) { + return script->Run(); + } + +#else +// Node 0.8 and 0.10 + +# define _NAN_METHOD_ARGS_TYPE const v8::Arguments& +# define _NAN_METHOD_ARGS _NAN_METHOD_ARGS_TYPE args +# define _NAN_METHOD_RETURN_TYPE v8::Handle + +# define _NAN_GETTER_ARGS_TYPE const v8::AccessorInfo & +# define _NAN_GETTER_ARGS _NAN_GETTER_ARGS_TYPE args +# define _NAN_GETTER_RETURN_TYPE v8::Handle + +# define _NAN_SETTER_ARGS_TYPE const v8::AccessorInfo & +# define _NAN_SETTER_ARGS _NAN_SETTER_ARGS_TYPE args +# define _NAN_SETTER_RETURN_TYPE void + +# define _NAN_PROPERTY_GETTER_ARGS_TYPE const v8::AccessorInfo& +# define _NAN_PROPERTY_GETTER_ARGS _NAN_PROPERTY_GETTER_ARGS_TYPE args +# define _NAN_PROPERTY_GETTER_RETURN_TYPE v8::Handle + +# define _NAN_PROPERTY_SETTER_ARGS_TYPE const v8::AccessorInfo& +# define _NAN_PROPERTY_SETTER_ARGS _NAN_PROPERTY_SETTER_ARGS_TYPE args +# define _NAN_PROPERTY_SETTER_RETURN_TYPE v8::Handle + +# define _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE const v8::AccessorInfo& +# define _NAN_PROPERTY_ENUMERATOR_ARGS _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE args +# define _NAN_PROPERTY_ENUMERATOR_RETURN_TYPE v8::Handle + +# define _NAN_PROPERTY_DELETER_ARGS_TYPE const v8::AccessorInfo& +# define _NAN_PROPERTY_DELETER_ARGS _NAN_PROPERTY_DELETER_ARGS_TYPE args +# define _NAN_PROPERTY_DELETER_RETURN_TYPE v8::Handle + +# define _NAN_PROPERTY_QUERY_ARGS_TYPE const v8::AccessorInfo& +# define _NAN_PROPERTY_QUERY_ARGS _NAN_PROPERTY_QUERY_ARGS_TYPE args +# define _NAN_PROPERTY_QUERY_RETURN_TYPE v8::Handle + +# define _NAN_INDEX_GETTER_ARGS_TYPE const v8::AccessorInfo& +# define _NAN_INDEX_GETTER_ARGS _NAN_INDEX_GETTER_ARGS_TYPE args +# define _NAN_INDEX_GETTER_RETURN_TYPE v8::Handle + +# define _NAN_INDEX_SETTER_ARGS_TYPE const v8::AccessorInfo& +# define _NAN_INDEX_SETTER_ARGS _NAN_INDEX_SETTER_ARGS_TYPE args +# define _NAN_INDEX_SETTER_RETURN_TYPE v8::Handle + +# define _NAN_INDEX_ENUMERATOR_ARGS_TYPE const v8::AccessorInfo& +# define _NAN_INDEX_ENUMERATOR_ARGS _NAN_INDEX_ENUMERATOR_ARGS_TYPE args +# define _NAN_INDEX_ENUMERATOR_RETURN_TYPE v8::Handle + +# define _NAN_INDEX_DELETER_ARGS_TYPE const v8::AccessorInfo& +# define _NAN_INDEX_DELETER_ARGS _NAN_INDEX_DELETER_ARGS_TYPE args +# define _NAN_INDEX_DELETER_RETURN_TYPE v8::Handle + +# define _NAN_INDEX_QUERY_ARGS_TYPE const v8::AccessorInfo& +# define _NAN_INDEX_QUERY_ARGS _NAN_INDEX_QUERY_ARGS_TYPE args +# define _NAN_INDEX_QUERY_RETURN_TYPE v8::Handle + +typedef v8::InvocationCallback NanFunctionCallback; + +# define NanUndefined() v8::Undefined() +# define NanNull() v8::Null() +# define NanTrue() v8::True() +# define NanFalse() v8::False() +# define NanAdjustExternalMemory(amount) \ + v8::V8::AdjustAmountOfExternalAllocatedMemory(amount) +# define NanSetTemplate(templ, name, value) templ->Set(name, value) +# define NanGetCurrentContext() v8::Context::GetCurrent() +# if NODE_VERSION_AT_LEAST(0, 8, 0) +# define NanMakeCallback(target, func, argc, argv) \ + node::MakeCallback(target, func, argc, argv) +# else +# define NanMakeCallback(target, func, argc, argv) \ + do { \ + v8::TryCatch try_catch; \ + func->Call(target, argc, argv); \ + if (try_catch.HasCaught()) { \ + v8::FatalException(try_catch); \ + } \ + } while (0) +# endif + +# define NanSymbol(value) v8::String::NewSymbol(value) + + template + NAN_INLINE v8::Local NanNew() { + return v8::Local::New(T::New()); + } + + template + NAN_INLINE v8::Local NanNew(v8::Handle arg) { + return v8::Local::New(arg); + } + + template + NAN_INLINE v8::Local NanNew( + v8::Handle receiver + , int argc + , v8::Handle argv[] = 0) { + return v8::Signature::New(receiver, argc, argv); + } + + template + NAN_INLINE v8::Local NanNew( + NanFunctionCallback callback + , v8::Handle data = v8::Handle() + , v8::Handle signature = v8::Handle()) { + return T::New(callback, data, signature); + } + + template + NAN_INLINE v8::Local NanNew(const v8::Persistent &arg) { + return v8::Local::New(arg); + } + + template + NAN_INLINE v8::Local NanNew(P arg) { + return v8::Local::New(T::New(arg)); + } + + template + NAN_INLINE v8::Local NanNew(P arg, int length) { + return v8::Local::New(T::New(arg, length)); + } + + template + NAN_INLINE v8::Local NanNew( + v8::Handle pattern, v8::RegExp::Flags flags) { + return v8::RegExp::New(pattern, flags); + } + + template + NAN_INLINE v8::Local NanNew( + v8::Local pattern, v8::RegExp::Flags flags) { + return v8::RegExp::New(pattern, flags); + } + + template + NAN_INLINE v8::Local NanNew( + v8::Handle pattern, v8::RegExp::Flags flags) { + return v8::RegExp::New(pattern, flags); + } + + template + NAN_INLINE v8::Local NanNew( + v8::Local pattern, v8::RegExp::Flags flags) { + return v8::RegExp::New(pattern, flags); + } + + template<> + NAN_INLINE v8::Local NanNew() { + return v8::Array::New(); + } + + template<> + NAN_INLINE v8::Local NanNew(int length) { + return v8::Array::New(length); + } + + + template<> + NAN_INLINE v8::Local NanNew(double time) { + return v8::Date::New(time).As(); + } + + template<> + NAN_INLINE v8::Local NanNew(int time) { + return v8::Date::New(time).As(); + } + + typedef v8::Script NanUnboundScript; + typedef v8::Script NanBoundScript; + + template + NAN_INLINE v8::Local NanNew( + P s + , const v8::ScriptOrigin& origin + ) { + return v8::Script::New(s, const_cast(&origin)); + } + + template<> + NAN_INLINE v8::Local NanNew( + v8::Local s + ) { + return v8::Script::New(s); + } + + NAN_INLINE v8::Local NanNew( + v8::String::ExternalStringResource *resource) { + return v8::String::NewExternal(resource); + } + + NAN_INLINE v8::Local NanNew( + v8::String::ExternalAsciiStringResource *resource) { + return v8::String::NewExternal(resource); + } + + template<> + NAN_INLINE v8::Local NanNew(bool value) { + return v8::BooleanObject::New(value).As(); + } + + template<> + NAN_INLINE v8::Local + NanNew >( + v8::Local value) { + return v8::StringObject::New(value).As(); + } + + template<> + NAN_INLINE v8::Local + NanNew >( + v8::Handle value) { + return v8::StringObject::New(value).As(); + } + + template<> + NAN_INLINE v8::Local NanNew(double val) { + return v8::NumberObject::New(val).As(); + } + + template<> + NAN_INLINE v8::Local NanNew(int32_t val) { + return v8::Uint32::NewFromUnsigned(val)->ToUint32(); + } + + template<> + NAN_INLINE v8::Local NanNew(uint32_t val) { + return v8::Uint32::NewFromUnsigned(val)->ToUint32(); + } + + template<> + NAN_INLINE v8::Local NanNew(int32_t val) { + return v8::Int32::New(val)->ToInt32(); + } + + template<> + NAN_INLINE v8::Local NanNew(uint32_t val) { + return v8::Int32::New(val)->ToInt32(); + } + + template<> + NAN_INLINE v8::Local NanNew( + uint8_t *arg + , int length) { + uint16_t *warg = new uint16_t[length]; + for (int i = 0; i < length; i++) { + warg[i] = arg[i]; + } + v8::Local retval = v8::String::New(warg, length); + delete[] warg; + return retval; + } + + template<> + NAN_INLINE v8::Local NanNew( + const uint8_t *arg + , int length) { + uint16_t *warg = new uint16_t[length]; + for (int i = 0; i < length; i++) { + warg[i] = arg[i]; + } + v8::Local retval = v8::String::New(warg, length); + delete[] warg; + return retval; + } + + template<> + NAN_INLINE v8::Local NanNew(uint8_t *arg) { + int length = strlen(reinterpret_cast(arg)); + uint16_t *warg = new uint16_t[length]; + for (int i = 0; i < length; i++) { + warg[i] = arg[i]; + } + + v8::Local retval = v8::String::New(warg, length); + delete[] warg; + return retval; + } + + template<> + NAN_INLINE v8::Local NanNew( + const uint8_t *arg) { + int length = strlen(reinterpret_cast(arg)); + uint16_t *warg = new uint16_t[length]; + for (int i = 0; i < length; i++) { + warg[i] = arg[i]; + } + v8::Local retval = v8::String::New(warg, length); + delete[] warg; + return retval; + } + + template<> + NAN_INLINE v8::Local NanNew() { + return v8::String::Empty(); + } + + NAN_INLINE void NanAddGCEpilogueCallback( + v8::GCEpilogueCallback callback + , v8::GCType gc_type_filter = v8::kGCTypeAll) { + v8::V8::AddGCEpilogueCallback(callback, gc_type_filter); + } + NAN_INLINE void NanRemoveGCEpilogueCallback( + v8::GCEpilogueCallback callback) { + v8::V8::RemoveGCEpilogueCallback(callback); + } + NAN_INLINE void NanAddGCPrologueCallback( + v8::GCPrologueCallback callback + , v8::GCType gc_type_filter = v8::kGCTypeAll) { + v8::V8::AddGCPrologueCallback(callback, gc_type_filter); + } + NAN_INLINE void NanRemoveGCPrologueCallback( + v8::GCPrologueCallback callback) { + v8::V8::RemoveGCPrologueCallback(callback); + } + NAN_INLINE void NanGetHeapStatistics( + v8::HeapStatistics *heap_statistics) { + v8::V8::GetHeapStatistics(heap_statistics); + } + + template + NAN_INLINE void NanAssignPersistent( + v8::Persistent& handle + , v8::Handle obj) { + handle.Dispose(); + handle = v8::Persistent::New(obj); + } + + template + struct _NanWeakCallbackInfo { + typedef void (*Callback)(v8::Persistent object, void* parameter); + _NanWeakCallbackInfo(v8::Handle handle, P* param, Callback cb) : + parameter(param) + , callback(cb) + , persistent(v8::Persistent::New(handle)) { } + + ~_NanWeakCallbackInfo() { + persistent.Dispose(); + persistent.Clear(); + } + + P* const parameter; + Callback const callback; + v8::Persistent persistent; + }; + + template + class _NanWeakCallbackData { + public: + _NanWeakCallbackData(_NanWeakCallbackInfo *info) + : info_(info) { } + + NAN_INLINE v8::Local GetValue() const { + return NanNew(info_->persistent); + } + NAN_INLINE P* GetParameter() const { return info_->parameter; } + NAN_INLINE void Revive() const { + info_->persistent.MakeWeak(info_, info_->callback); + } + NAN_INLINE void Dispose() const { + delete info_; + } + + private: + _NanWeakCallbackInfo* info_; + }; + +# define NanGetInternalFieldPointer(object, index) \ + object->GetPointerFromInternalField(index) +# define NanSetInternalFieldPointer(object, index, value) \ + object->SetPointerInInternalField(index, value) + +// do not use for declaration +# define NAN_WEAK_CALLBACK(name) \ + template \ + static void name( \ + v8::Persistent object, void *data) { \ + _NanWeakCallbackData wcbd( \ + static_cast<_NanWeakCallbackInfo*>(data)); \ + _Nan_Weak_Callback_ ## name(wcbd); \ + } \ + \ + template \ + NAN_INLINE void _Nan_Weak_Callback_ ## name( \ + const _NanWeakCallbackData &data) + + template + NAN_INLINE void NanMakeWeakPersistent( + v8::Handle handle + , P* parameter + , typename _NanWeakCallbackInfo::Callback callback) { + _NanWeakCallbackInfo *cbinfo = + new _NanWeakCallbackInfo(handle, parameter, callback); + cbinfo->persistent.MakeWeak(cbinfo, callback); + } + +# define NanScope() v8::HandleScope scope +# define NanEscapableScope() v8::HandleScope scope +# define NanEscapeScope(val) scope.Close(val) +# define NanLocker() v8::Locker locker +# define NanUnlocker() v8::Unlocker unlocker +# define NanReturnValue(value) return scope.Close(value) +# define NanReturnUndefined() return v8::Undefined() +# define NanReturnNull() return v8::Null() +# define NanReturnEmptyString() return v8::String::Empty() +# define NanObjectWrapHandle(obj) v8::Local::New(obj->handle_) + +# define _NAN_ERROR(fun, errmsg) \ + fun(v8::String::New(errmsg)) + +# define _NAN_THROW_ERROR(fun, errmsg) \ + do { \ + NanScope(); \ + return v8::Local::New( \ + v8::ThrowException(_NAN_ERROR(fun, errmsg))); \ + } while (0); + + NAN_INLINE v8::Local NanError(const char* errmsg) { + return _NAN_ERROR(v8::Exception::Error, errmsg); + } + + NAN_INLINE v8::Local NanThrowError(const char* errmsg) { + _NAN_THROW_ERROR(v8::Exception::Error, errmsg); + } + + NAN_INLINE v8::Local NanThrowError( + v8::Handle error + ) { + NanScope(); + return v8::Local::New(v8::ThrowException(error)); + } + + NAN_INLINE v8::Local NanError( + const char *msg + , const int errorNumber + ) { + v8::Local err = v8::Exception::Error(v8::String::New(msg)); + v8::Local obj = err.As(); + obj->Set(v8::String::New("code"), v8::Int32::New(errorNumber)); + return err; + } + + NAN_INLINE v8::Local NanThrowError( + const char *msg + , const int errorNumber + ) { + return NanThrowError(NanError(msg, errorNumber)); + } + + NAN_INLINE v8::Local NanTypeError(const char* errmsg) { + return _NAN_ERROR(v8::Exception::TypeError, errmsg); + } + + NAN_INLINE v8::Local NanThrowTypeError( + const char* errmsg + ) { + _NAN_THROW_ERROR(v8::Exception::TypeError, errmsg); + } + + NAN_INLINE v8::Local NanRangeError( + const char* errmsg + ) { + return _NAN_ERROR(v8::Exception::RangeError, errmsg); + } + + NAN_INLINE v8::Local NanThrowRangeError( + const char* errmsg + ) { + _NAN_THROW_ERROR(v8::Exception::RangeError, errmsg); + } + + template + NAN_INLINE void NanDisposePersistent( + v8::Persistent &handle) { // NOLINT(runtime/references) + handle.Dispose(); + handle.Clear(); + } + + NAN_INLINE v8::Local NanNewBufferHandle ( + char *data + , size_t length + , node::Buffer::free_callback callback + , void *hint + ) { + return NanNew( + node::Buffer::New(data, length, callback, hint)->handle_); + } + + NAN_INLINE v8::Local NanNewBufferHandle ( + const char *data + , uint32_t size + ) { +#if NODE_MODULE_VERSION >= 0x000B + return NanNew(node::Buffer::New(data, size)->handle_); +#else + return NanNew( + node::Buffer::New(const_cast(data), size)->handle_); +#endif + } + + NAN_INLINE v8::Local NanNewBufferHandle (uint32_t size) { + return NanNew(node::Buffer::New(size)->handle_); + } + + NAN_INLINE void FreeData(char *data, void *hint) { + delete[] data; + } + + NAN_INLINE v8::Local NanBufferUse( + char* data + , uint32_t size + ) { + return NanNew( + node::Buffer::New(data, size, FreeData, NULL)->handle_); + } + + NAN_INLINE bool NanHasInstance( + v8::Persistent& function_template + , v8::Handle value + ) { + return function_template->HasInstance(value); + } + + NAN_INLINE v8::Local NanNewContextHandle( + v8::ExtensionConfiguration* extensions = NULL + , v8::Handle tmpl = v8::Handle() + , v8::Handle obj = v8::Handle() + ) { + v8::Persistent ctx = v8::Context::New(extensions, tmpl, obj); + v8::Local lctx = NanNew(ctx); + ctx.Dispose(); + return lctx; + } + + NAN_INLINE v8::Local NanCompileScript( + v8::Local s + , const v8::ScriptOrigin& origin + ) { + return v8::Script::Compile(s, const_cast(&origin)); + } + + NAN_INLINE v8::Local NanCompileScript( + v8::Local s + ) { + return v8::Script::Compile(s); + } + + NAN_INLINE v8::Local NanRunScript(v8::Local script) { + return script->Run(); + } + +#endif // NODE_MODULE_VERSION + +typedef void (*NanFreeCallback)(char *data, void *hint); + +#define NAN_METHOD(name) _NAN_METHOD_RETURN_TYPE name(_NAN_METHOD_ARGS) +#define NAN_GETTER(name) \ + _NAN_GETTER_RETURN_TYPE name( \ + v8::Local property \ + , _NAN_GETTER_ARGS) +#define NAN_SETTER(name) \ + _NAN_SETTER_RETURN_TYPE name( \ + v8::Local property \ + , v8::Local value \ + , _NAN_SETTER_ARGS) +#define NAN_PROPERTY_GETTER(name) \ + _NAN_PROPERTY_GETTER_RETURN_TYPE name( \ + v8::Local property \ + , _NAN_PROPERTY_GETTER_ARGS) +#define NAN_PROPERTY_SETTER(name) \ + _NAN_PROPERTY_SETTER_RETURN_TYPE name( \ + v8::Local property \ + , v8::Local value \ + , _NAN_PROPERTY_SETTER_ARGS) +#define NAN_PROPERTY_ENUMERATOR(name) \ + _NAN_PROPERTY_ENUMERATOR_RETURN_TYPE name(_NAN_PROPERTY_ENUMERATOR_ARGS) +#define NAN_PROPERTY_DELETER(name) \ + _NAN_PROPERTY_DELETER_RETURN_TYPE name( \ + v8::Local property \ + , _NAN_PROPERTY_DELETER_ARGS) +#define NAN_PROPERTY_QUERY(name) \ + _NAN_PROPERTY_QUERY_RETURN_TYPE name( \ + v8::Local property \ + , _NAN_PROPERTY_QUERY_ARGS) +# define NAN_INDEX_GETTER(name) \ + _NAN_INDEX_GETTER_RETURN_TYPE name(uint32_t index, _NAN_INDEX_GETTER_ARGS) +#define NAN_INDEX_SETTER(name) \ + _NAN_INDEX_SETTER_RETURN_TYPE name( \ + uint32_t index \ + , v8::Local value \ + , _NAN_INDEX_SETTER_ARGS) +#define NAN_INDEX_ENUMERATOR(name) \ + _NAN_INDEX_ENUMERATOR_RETURN_TYPE name(_NAN_INDEX_ENUMERATOR_ARGS) +#define NAN_INDEX_DELETER(name) \ + _NAN_INDEX_DELETER_RETURN_TYPE name( \ + uint32_t index \ + , _NAN_INDEX_DELETER_ARGS) +#define NAN_INDEX_QUERY(name) \ + _NAN_INDEX_QUERY_RETURN_TYPE name(uint32_t index, _NAN_INDEX_QUERY_ARGS) + +class NanCallback { + public: + NanCallback() { + NanScope(); + v8::Local obj = NanNew(); + NanAssignPersistent(handle, obj); + } + + explicit NanCallback(const v8::Handle &fn) { + NanScope(); + v8::Local obj = NanNew(); + NanAssignPersistent(handle, obj); + SetFunction(fn); + } + + ~NanCallback() { + if (handle.IsEmpty()) return; + NanDisposePersistent(handle); + } + + NAN_INLINE void SetFunction(const v8::Handle &fn) { + NanScope(); + NanNew(handle)->Set(NanSymbol("callback"), fn); + } + + NAN_INLINE v8::Local GetFunction () { + return NanNew(handle)->Get(NanSymbol("callback")) + .As(); + } + + void Call(int argc, v8::Handle argv[]) { + NanScope(); +#if (NODE_MODULE_VERSION > 0x000B) // 0.11.12+ + v8::Local callback = NanNew(handle)-> + Get(NanSymbol("callback")).As(); + node::MakeCallback( + nan_isolate + , nan_isolate->GetCurrentContext()->Global() + , callback + , argc + , argv + ); +#else +#if NODE_VERSION_AT_LEAST(0, 8, 0) + v8::Local callback = NanNew(handle)-> + Get(NanSymbol("callback")).As(); + node::MakeCallback( + v8::Context::GetCurrent()->Global() + , callback + , argc + , argv + ); +#else + node::MakeCallback(handle, "callback", argc, argv); +#endif +#endif + } + + private: + v8::Persistent handle; +}; + +/* abstract */ class NanAsyncWorker { + public: + explicit NanAsyncWorker(NanCallback *callback) : callback(callback) { + request.data = this; + errmsg = NULL; + + NanScope(); + v8::Local obj = NanNew(); + NanAssignPersistent(persistentHandle, obj); + } + + virtual ~NanAsyncWorker() { + NanScope(); + + if (!persistentHandle.IsEmpty()) + NanDisposePersistent(persistentHandle); + if (callback) + delete callback; + if (errmsg) + delete errmsg; + } + + virtual void WorkComplete() { + NanScope(); + + if (errmsg == NULL) + HandleOKCallback(); + else + HandleErrorCallback(); + delete callback; + callback = NULL; + } + + NAN_INLINE void SaveToPersistent(const char *key, v8::Local &obj) { + v8::Local handle = NanNew(persistentHandle); + handle->Set(NanSymbol(key), obj); + } + + v8::Local GetFromPersistent(const char *key) { + NanEscapableScope(); + v8::Local handle = NanNew(persistentHandle); + return NanEscapeScope(handle->Get(NanSymbol(key)).As()); + } + + virtual void Execute() = 0; + + uv_work_t request; + + protected: + v8::Persistent persistentHandle; + NanCallback *callback; + const char *errmsg; + + virtual void HandleOKCallback() { + NanScope(); + + callback->Call(0, NULL); + } + + virtual void HandleErrorCallback() { + NanScope(); + + v8::Local argv[] = { + v8::Exception::Error(NanNew(errmsg)) + }; + callback->Call(1, argv); + } +}; + +NAN_INLINE void NanAsyncExecute (uv_work_t* req) { + NanAsyncWorker *worker = static_cast(req->data); + worker->Execute(); +} + +NAN_INLINE void NanAsyncExecuteComplete (uv_work_t* req) { + NanAsyncWorker* worker = static_cast(req->data); + worker->WorkComplete(); + delete worker; +} + +NAN_INLINE void NanAsyncQueueWorker (NanAsyncWorker* worker) { + uv_queue_work( + uv_default_loop() + , &worker->request + , NanAsyncExecute + , (uv_after_work_cb)NanAsyncExecuteComplete + ); +} + +//// Base 64 //// + +#define _nan_base64_encoded_size(size) ((size + 2 - ((size + 2) % 3)) / 3 * 4) + +// Doesn't check for padding at the end. Can be 1-2 bytes over. +NAN_INLINE size_t _nan_base64_decoded_size_fast(size_t size) { + size_t remainder = size % 4; + + size = (size / 4) * 3; + if (remainder) { + if (size == 0 && remainder == 1) { + // special case: 1-byte input cannot be decoded + size = 0; + } else { + // non-padded input, add 1 or 2 extra bytes + size += 1 + (remainder == 3); + } + } + + return size; +} + +template +NAN_INLINE size_t _nan_base64_decoded_size( + const T* src + , size_t size +) { + if (size == 0) + return 0; + + if (src[size - 1] == '=') + size--; + if (size > 0 && src[size - 1] == '=') + size--; + + return _nan_base64_decoded_size_fast(size); +} + +// supports regular and URL-safe base64 +static const int _nan_unbase64_table[] = { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -2, -1, -1 + , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 + , -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, 62, -1, 63 + , 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1 + , -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 + , 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, 63 + , -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 + , 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1 + , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 + , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 + , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 + , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 + , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 + , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 + , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 + , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 +}; + +#define _nan_unbase64(x) _nan_unbase64_table[(uint8_t)(x)] + +template static size_t _nan_base64_decode( + char* buf + , size_t len + , const T* src + , const size_t srcLen +) { + char* dst = buf; + char* dstEnd = buf + len; + const T* srcEnd = src + srcLen; + + while (src < srcEnd && dst < dstEnd) { + ptrdiff_t remaining = srcEnd - src; + char a, b, c, d; + + while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; + if (remaining == 0 || *src == '=') break; + a = _nan_unbase64(*src++); + + while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; + if (remaining <= 1 || *src == '=') break; + b = _nan_unbase64(*src++); + + *dst++ = (a << 2) | ((b & 0x30) >> 4); + if (dst == dstEnd) break; + + while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; + if (remaining <= 2 || *src == '=') break; + c = _nan_unbase64(*src++); + + *dst++ = ((b & 0x0F) << 4) | ((c & 0x3C) >> 2); + if (dst == dstEnd) break; + + while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; + if (remaining <= 3 || *src == '=') break; + d = _nan_unbase64(*src++); + + *dst++ = ((c & 0x03) << 6) | (d & 0x3F); + } + + return dst - buf; +} + +//// HEX //// + +template unsigned _nan_hex2bin(T c) { + if (c >= '0' && c <= '9') return c - '0'; + if (c >= 'A' && c <= 'F') return 10 + (c - 'A'); + if (c >= 'a' && c <= 'f') return 10 + (c - 'a'); + return static_cast(-1); +} + +template static size_t _nan_hex_decode( + char* buf + , size_t len + , const T* src + , const size_t srcLen +) { + size_t i; + for (i = 0; i < len && i * 2 + 1 < srcLen; ++i) { + unsigned a = _nan_hex2bin(src[i * 2 + 0]); + unsigned b = _nan_hex2bin(src[i * 2 + 1]); + if (!~a || !~b) return i; + buf[i] = a * 16 + b; + } + + return i; +} + +static bool _NanGetExternalParts( + v8::Handle val + , const char** data + , size_t* len +) { + if (node::Buffer::HasInstance(val)) { + *data = node::Buffer::Data(val.As()); + *len = node::Buffer::Length(val.As()); + return true; + } + + assert(val->IsString()); + v8::Local str = NanNew(val.As()); + + if (str->IsExternalAscii()) { + const v8::String::ExternalAsciiStringResource* ext; + ext = str->GetExternalAsciiStringResource(); + *data = ext->data(); + *len = ext->length(); + return true; + + } else if (str->IsExternal()) { + const v8::String::ExternalStringResource* ext; + ext = str->GetExternalStringResource(); + *data = reinterpret_cast(ext->data()); + *len = ext->length(); + return true; + } + + return false; +} + +namespace Nan { + enum Encoding {ASCII, UTF8, BASE64, UCS2, BINARY, HEX, BUFFER}; +} + +NAN_INLINE void* NanRawString( + v8::Handle from + , enum Nan::Encoding encoding + , size_t *datalen + , void *buf + , size_t buflen + , int flags +) { + NanScope(); + + size_t sz_; + size_t term_len = !(flags & v8::String::NO_NULL_TERMINATION); + char *data = NULL; + size_t len; + bool is_extern = _NanGetExternalParts( + from + , const_cast(&data) + , &len); + + if (is_extern && !term_len) { + NanSetPointerSafe(datalen, len); + return data; + } + + v8::Local toStr = from->ToString(); + + char *to = static_cast(buf); + + switch (encoding) { + case Nan::ASCII: +#if NODE_MODULE_VERSION < 0x000C + sz_ = toStr->Length(); + if (to == NULL) { + to = new char[sz_ + term_len]; + } else { + assert(buflen >= sz_ + term_len && "too small buffer"); + } + NanSetPointerSafe( + datalen + , toStr->WriteAscii(to, 0, static_cast(sz_ + term_len), flags)); + return to; +#endif + case Nan::BINARY: + case Nan::BUFFER: + sz_ = toStr->Length(); + if (to == NULL) { + to = new char[sz_ + term_len]; + } else { + assert(buflen >= sz_ + term_len && "too small buffer"); + } +#if NODE_MODULE_VERSION < 0x000C + { + uint16_t* twobytebuf = new uint16_t[sz_ + term_len]; + + size_t len = toStr->Write(twobytebuf, 0, + static_cast(sz_ + term_len), flags); + + for (size_t i = 0; i < sz_ + term_len && i < len + term_len; i++) { + unsigned char *b = reinterpret_cast(&twobytebuf[i]); + to[i] = *b; + } + + NanSetPointerSafe(datalen, len); + + delete[] twobytebuf; + return to; + } +#else + NanSetPointerSafe( + datalen, + toStr->WriteOneByte( + reinterpret_cast(to) + , 0 + , static_cast(sz_ + term_len) + , flags)); + return to; +#endif + case Nan::UTF8: + sz_ = toStr->Utf8Length(); + if (to == NULL) { + to = new char[sz_ + term_len]; + } else { + assert(buflen >= sz_ + term_len && "too small buffer"); + } + NanSetPointerSafe( + datalen + , toStr->WriteUtf8(to, static_cast(sz_ + term_len) + , NULL, flags) + - term_len); + return to; + case Nan::BASE64: + { + v8::String::Value value(toStr); + sz_ = _nan_base64_decoded_size(*value, value.length()); + if (to == NULL) { + to = new char[sz_ + term_len]; + } else { + assert(buflen >= sz_ + term_len); + } + NanSetPointerSafe( + datalen + , _nan_base64_decode(to, sz_, *value, value.length())); + if (term_len) { + to[sz_] = '\0'; + } + return to; + } + case Nan::UCS2: + { + sz_ = toStr->Length(); + if (to == NULL) { + to = new char[(sz_ + term_len) * 2]; + } else { + assert(buflen >= (sz_ + term_len) * 2 && "too small buffer"); + } + + int bc = 2 * toStr->Write( + reinterpret_cast(to) + , 0 + , static_cast(sz_ + term_len) + , flags); + NanSetPointerSafe(datalen, bc); + return to; + } + case Nan::HEX: + { + v8::String::Value value(toStr); + sz_ = value.length(); + assert(!(sz_ & 1) && "bad hex data"); + if (to == NULL) { + to = new char[sz_ / 2 + term_len]; + } else { + assert(buflen >= sz_ / 2 + term_len && "too small buffer"); + } + NanSetPointerSafe( + datalen + , _nan_hex_decode(to, sz_ / 2, *value, value.length())); + } + if (term_len) { + to[sz_ / 2] = '\0'; + } + return to; + default: + assert(0 && "unknown encoding"); + } + return to; +} + +NAN_INLINE char* NanCString( + v8::Handle from + , size_t *datalen + , char *buf = NULL + , size_t buflen = 0 + , int flags = v8::String::NO_OPTIONS +) { + return static_cast( + NanRawString(from, Nan::UTF8, datalen, buf, buflen, flags) + ); +} + +#endif // NAN_H_ diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/package.json new file mode 100644 index 00000000..81f6addd --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/nan/package.json @@ -0,0 +1,95 @@ +{ + "_args": [ + [ + "nan@~1.0.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws" + ] + ], + "_from": "nan@>=1.0.0 <1.1.0", + "_id": "nan@1.0.0", + "_inCache": true, + "_installable": true, + "_location": "/nan", + "_npmUser": { + "email": "rod@vagg.org", + "name": "rvagg" + }, + "_npmVersion": "1.4.3", + "_phantomChildren": {}, + "_requested": { + "name": "nan", + "raw": "nan@~1.0.0", + "rawSpec": "~1.0.0", + "scope": null, + "spec": ">=1.0.0 <1.1.0", + "type": "range" + }, + "_requiredBy": [ + "/ws" + ], + "_resolved": "https://registry.npmjs.org/nan/-/nan-1.0.0.tgz", + "_shasum": "ae24f8850818d662fcab5acf7f3b95bfaa2ccf38", + "_shrinkwrap": null, + "_spec": "nan@~1.0.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws", + "bugs": { + "url": "https://github.com/rvagg/nan/issues" + }, + "contributors": [ + { + "email": "r@va.gg", + "name": "Rod Vagg", + "url": "https://github.com/rvagg" + }, + { + "email": "bbyholm@abo.fi", + "name": "Benjamin Byholm", + "url": "https://github.com/kkoopa/" + }, + { + "email": "trev.norris@gmail.com", + "name": "Trevor Norris", + "url": "https://github.com/trevnorris" + }, + { + "email": "nathan@tootallnate.net", + "name": "Nathan Rajlich", + "url": "https://github.com/TooTallNate" + }, + { + "email": "brett19@gmail.com", + "name": "Brett Lawson", + "url": "https://github.com/brett19" + }, + { + "email": "info@bnoordhuis.nl", + "name": "Ben Noordhuis", + "url": "https://github.com/bnoordhuis" + } + ], + "dependencies": {}, + "description": "Native Abstractions for Node.js: C++ header for Node 0.8->0.12 compatibility", + "devDependencies": {}, + "directories": {}, + "dist": { + "shasum": "ae24f8850818d662fcab5acf7f3b95bfaa2ccf38", + "tarball": "https://registry.npmjs.org/nan/-/nan-1.0.0.tgz" + }, + "homepage": "https://github.com/rvagg/nan", + "license": "MIT", + "main": "include_dirs.js", + "maintainers": [ + { + "email": "rod@vagg.org", + "name": "rvagg" + } + ], + "name": "nan", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/rvagg/nan.git" + }, + "version": "1.0.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/.npmignore new file mode 100644 index 00000000..9ecd205c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/.npmignore @@ -0,0 +1,4 @@ +node_modules +.*.sw[op] +.DS_Store +test/fixtures/out diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/.travis.yml new file mode 100644 index 00000000..f686c49b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/.travis.yml @@ -0,0 +1,7 @@ +language: node_js + +node_js: + - 0.4 + - 0.6 + - 0.7 + - 0.8 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/LICENSE.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/LICENSE.md new file mode 100644 index 00000000..e2b9b413 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/LICENSE.md @@ -0,0 +1,21 @@ +# MIT License + +###Copyright (C) 2011 by Charlie McConnell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/README.md new file mode 100644 index 00000000..79ad086c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/README.md @@ -0,0 +1,52 @@ +# ncp - Asynchronous recursive file & directory copying + +[![Build Status](https://secure.travis-ci.org/AvianFlu/ncp.png)](http://travis-ci.org/AvianFlu/ncp) + +Think `cp -r`, but pure node, and asynchronous. `ncp` can be used both as a CLI tool and programmatically. + +## Command Line usage + +Usage is simple: `ncp [source] [dest] [--limit=concurrency limit] +[--filter=filter] --stopOnErr` + +The 'filter' is a Regular Expression - matched files will be copied. + +The 'concurrency limit' is an integer that represents how many pending file system requests `ncp` has at a time. + +'stopOnErr' is a boolean flag that will tell `ncp` to stop immediately if any +errors arise, rather than attempting to continue while logging errors. + +If there are no errors, `ncp` will output `done.` when complete. If there are errors, the error messages will be logged to `stdout` and to `./ncp-debug.log`, and the copy operation will attempt to continue. + +## Programmatic usage + +Programmatic usage of `ncp` is just as simple. The only argument to the completion callback is a possible error. + +```javascript +var ncp = require('ncp').ncp; + +ncp.limit = 16; + +ncp(source, destination, function (err) { + if (err) { + return console.error(err); + } + console.log('done!'); +}); +``` + +You can also call ncp like `ncp(source, destination, options, callback)`. +`options` should be a dictionary. Currently, such options are available: + + * `options.filter` - a `RegExp` instance, against which each file name is + tested to determine whether to copy it or not, or a function taking single + parameter: copied file name, returning `true` or `false`, determining + whether to copy file or not. + + * `options.transform` - a function: `function (read, write) { read.pipe(write) }` + used to apply streaming transforms while copying. + + * `options.clobber` - boolean=true. if set to false, `ncp` will not overwrite + destination files that already exist. + +Please open an issue if any bugs arise. As always, I accept (working) pull requests, and refunds are available at `/dev/null`. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/bin/ncp b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/bin/ncp new file mode 100644 index 00000000..388eaba6 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/bin/ncp @@ -0,0 +1,48 @@ +#!/usr/bin/env node + + + + +var ncp = require('../lib/ncp'), + args = process.argv.slice(2), + source, dest; + +if (args.length < 2) { + console.error('Usage: ncp [source] [destination] [--filter=filter] [--limit=concurrency limit]'); + process.exit(1); +} + +// parse arguments the hard way +function startsWith(str, prefix) { + return str.substr(0, prefix.length) == prefix; +} + +var options = {}; +args.forEach(function (arg) { + if (startsWith(arg, "--limit=")) { + options.limit = parseInt(arg.split('=', 2)[1], 10); + } + if (startsWith(arg, "--filter=")) { + options.filter = new RegExp(arg.split('=', 2)[1]); + } + if (startsWith(arg, "--stoponerr")) { + options.stopOnErr = true; + } +}); + +ncp.ncp(args[0], args[1], options, function (err) { + if (Array.isArray(err)) { + console.error('There were errors during the copy.'); + err.forEach(function (err) { + console.error(err.stack || err.message); + }); + process.exit(1); + } + else if (err) { + console.error('An error has occurred.'); + console.error(err.stack || err.message); + process.exit(1); + } +}); + + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/lib/ncp.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/lib/ncp.js new file mode 100644 index 00000000..d871e009 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/lib/ncp.js @@ -0,0 +1,222 @@ +var fs = require('fs'), + path = require('path'); + +module.exports = ncp +ncp.ncp = ncp + +function ncp (source, dest, options, callback) { + if (!callback) { + callback = options; + options = {}; + } + + var basePath = process.cwd(), + currentPath = path.resolve(basePath, source), + targetPath = path.resolve(basePath, dest), + filter = options.filter, + transform = options.transform, + clobber = options.clobber !== false, + errs = null, + started = 0, + finished = 0, + running = 0, + limit = options.limit || ncp.limit || 16; + + limit = (limit < 1) ? 1 : (limit > 512) ? 512 : limit; + + startCopy(currentPath); + + function startCopy(source) { + started++; + if (filter) { + if (filter instanceof RegExp) { + if (!filter.test(source)) { + return cb(true); + } + } + else if (typeof filter === 'function') { + if (!filter(source)) { + return cb(true); + } + } + } + return getStats(source); + } + + function defer(fn) { + if (typeof(setImmediate) === 'function') + return setImmediate(fn); + return process.nextTick(fn); + } + + function getStats(source) { + if (running >= limit) { + return defer(function () { + getStats(source); + }); + } + running++; + fs.lstat(source, function (err, stats) { + var item = {}; + if (err) { + return onError(err); + } + + // We need to get the mode from the stats object and preserve it. + item.name = source; + item.mode = stats.mode; + + if (stats.isDirectory()) { + return onDir(item); + } + else if (stats.isFile()) { + return onFile(item); + } + else if (stats.isSymbolicLink()) { + // Symlinks don't really need to know about the mode. + return onLink(source); + } + }); + } + + function onFile(file) { + var target = file.name.replace(currentPath, targetPath); + isWritable(target, function (writable) { + if (writable) { + return copyFile(file, target); + } + if(clobber) + rmFile(target, function () { + copyFile(file, target); + }); + }); + } + + function copyFile(file, target) { + var readStream = fs.createReadStream(file.name), + writeStream = fs.createWriteStream(target, { mode: file.mode }); + if(transform) { + transform(readStream, writeStream,file); + } else { + readStream.pipe(writeStream); + } + readStream.once('end', cb); + } + + function rmFile(file, done) { + fs.unlink(file, function (err) { + if (err) { + return onError(err); + } + return done(); + }); + } + + function onDir(dir) { + var target = dir.name.replace(currentPath, targetPath); + isWritable(target, function (writable) { + if (writable) { + return mkDir(dir, target); + } + copyDir(dir.name); + }); + } + + function mkDir(dir, target) { + fs.mkdir(target, dir.mode, function (err) { + if (err) { + return onError(err); + } + copyDir(dir.name); + }); + } + + function copyDir(dir) { + fs.readdir(dir, function (err, items) { + if (err) { + return onError(err); + } + items.forEach(function (item) { + startCopy(dir + '/' + item); + }); + return cb(); + }); + } + + function onLink(link) { + var target = link.replace(currentPath, targetPath); + fs.readlink(link, function (err, resolvedPath) { + if (err) { + return onError(err); + } + checkLink(resolvedPath, target); + }); + } + + function checkLink(resolvedPath, target) { + isWritable(target, function (writable) { + if (writable) { + return makeLink(resolvedPath, target); + } + fs.readlink(target, function (err, targetDest) { + if (err) { + return onError(err); + } + if (targetDest === resolvedPath) { + return cb(); + } + return rmFile(target, function () { + makeLink(resolvedPath, target); + }); + }); + }); + } + + function makeLink(linkPath, target) { + fs.symlink(linkPath, target, function (err) { + if (err) { + return onError(err); + } + return cb(); + }); + } + + function isWritable(path, done) { + fs.lstat(path, function (err, stats) { + if (err) { + if (err.code === 'ENOENT') return done(true); + return done(false); + } + return done(false); + }); + } + + function onError(err) { + if (options.stopOnError) { + return callback(err); + } + else if (!errs && options.errs) { + errs = fs.createWriteStream(options.errs); + } + else if (!errs) { + errs = []; + } + if (typeof errs.write === 'undefined') { + errs.push(err); + } + else { + errs.write(err.stack + '\n\n'); + } + return cb(); + } + + function cb(skipped) { + if (!skipped) running--; + finished++; + if ((started === finished) && (running === 0)) { + return errs ? callback(errs) : callback(null); + } + } +}; + + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/package.json new file mode 100644 index 00000000..6186d4ee --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/package.json @@ -0,0 +1,84 @@ +{ + "_args": [ + [ + "ncp@~0.4.2", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra" + ] + ], + "_from": "ncp@>=0.4.2 <0.5.0", + "_id": "ncp@0.4.2", + "_inCache": true, + "_installable": true, + "_location": "/ncp", + "_npmUser": { + "email": "charlie@charlieistheman.com", + "name": "avianflu" + }, + "_npmVersion": "1.2.2", + "_phantomChildren": {}, + "_requested": { + "name": "ncp", + "raw": "ncp@~0.4.2", + "rawSpec": "~0.4.2", + "scope": null, + "spec": ">=0.4.2 <0.5.0", + "type": "range" + }, + "_requiredBy": [ + "/fs-extra" + ], + "_resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", + "_shasum": "abcc6cbd3ec2ed2a729ff6e7c1fa8f01784a8574", + "_shrinkwrap": null, + "_spec": "ncp@~0.4.2", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra", + "author": { + "email": "charlie@charlieistheman.com", + "name": "AvianFlu" + }, + "bin": { + "ncp": "./bin/ncp" + }, + "bugs": { + "url": "https://github.com/AvianFlu/ncp/issues" + }, + "dependencies": {}, + "description": "Asynchronous recursive file copy utility.", + "devDependencies": { + "read-dir-files": "0.0.x", + "rimraf": "1.0.x", + "vows": "0.6.x" + }, + "directories": {}, + "dist": { + "shasum": "abcc6cbd3ec2ed2a729ff6e7c1fa8f01784a8574", + "tarball": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz" + }, + "engine": { + "node": ">=0.4" + }, + "homepage": "https://github.com/AvianFlu/ncp#readme", + "keywords": [ + "cli", + "copy" + ], + "license": "MIT", + "main": "./lib/ncp.js", + "maintainers": [ + { + "email": "charlie@charlieistheman.com", + "name": "avianflu" + } + ], + "name": "ncp", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/AvianFlu/ncp.git" + }, + "scripts": { + "test": "vows --isolate --spec" + }, + "version": "0.4.2" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/a b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/a new file mode 100644 index 00000000..802992c4 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/a @@ -0,0 +1 @@ +Hello world diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/b b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/b new file mode 100644 index 00000000..9f6bb185 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/b @@ -0,0 +1 @@ +Hello ncp diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/c b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/c new file mode 100644 index 00000000..e69de29b diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/d b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/d new file mode 100644 index 00000000..e69de29b diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/e b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/e new file mode 100644 index 00000000..e69de29b diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/f b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/f new file mode 100644 index 00000000..e69de29b diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/sub/a b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/sub/a new file mode 100644 index 00000000..cf291b5e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/sub/a @@ -0,0 +1 @@ +Hello nodejitsu diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/sub/b b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/fixtures/src/sub/b new file mode 100644 index 00000000..e69de29b diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/ncp-test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/ncp-test.js new file mode 100644 index 00000000..3c613f77 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ncp/test/ncp-test.js @@ -0,0 +1,86 @@ +var assert = require('assert'), + path = require('path'), + rimraf = require('rimraf'), + vows = require('vows'), + readDirFiles = require('read-dir-files'), + ncp = require('../').ncp; + +var fixtures = path.join(__dirname, 'fixtures'), + src = path.join(fixtures, 'src'), + out = path.join(fixtures, 'out'); + +vows.describe('ncp').addBatch({ + 'When copying a directory of files': { + topic: function () { + var cb = this.callback; + rimraf(out, function () { + ncp(src, out, cb); + }); + }, + 'files should be copied': { + topic: function () { + var cb = this.callback; + + readDirFiles(src, 'utf8', function (srcErr, srcFiles) { + readDirFiles(out, 'utf8', function (outErr, outFiles) { + cb(outErr, srcFiles, outFiles); + }); + }); + }, + 'and the destination should match the source': function (err, srcFiles, outFiles) { + assert.isNull(err); + assert.deepEqual(srcFiles, outFiles); + } + } + } +}).addBatch({ + 'When copying files using filter': { + topic: function() { + var cb = this.callback; + var filter = function(name) { + return name.substr(name.length - 1) != 'a' + } + rimraf(out, function () { + ncp(src, out, {filter: filter}, cb); + }); + }, + 'it should copy files': { + topic: function () { + var cb = this.callback; + + readDirFiles(src, 'utf8', function (srcErr, srcFiles) { + function filter(files) { + for (var fileName in files) { + var curFile = files[fileName]; + if (curFile instanceof Object) + return filter(curFile); + if (fileName.substr(fileName.length - 1) == 'a') + delete files[fileName]; + } + } + filter(srcFiles); + readDirFiles(out, 'utf8', function (outErr, outFiles) { + cb(outErr, srcFiles, outFiles); + }); + }); + }, + 'and destination files should match source files that pass filter': function (err, srcFiles, outFiles) { + assert.isNull(err); + assert.deepEqual(srcFiles, outFiles); + } + } + } +}).addBatch({ + 'When copying files using transform': { + 'it should pass file descriptors along to transform functions': function() { + ncp(src, out, { + transform: function(read,write,file) { + assert.notEqual(file.name, undefined); + assert.strictEqual(typeof file.mode,'number'); + read.pipe(write); + } + }, function(){}); + } + } +}).export(module); + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/LICENSE similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/LICENSE rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/LICENSE diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/examples/accept.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/examples/accept.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/examples/accept.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/examples/accept.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/examples/charset.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/examples/charset.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/examples/charset.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/examples/charset.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/examples/encoding.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/examples/encoding.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/examples/encoding.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/examples/encoding.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/examples/language.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/examples/language.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/examples/language.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/examples/language.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/lib/charset.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/lib/charset.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/lib/charset.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/lib/charset.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/lib/encoding.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/lib/encoding.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/lib/encoding.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/lib/encoding.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/lib/language.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/lib/language.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/lib/language.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/lib/language.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/lib/mediaType.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/lib/mediaType.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/lib/mediaType.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/lib/mediaType.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/lib/negotiator.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/lib/negotiator.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/lib/negotiator.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/lib/negotiator.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/package.json new file mode 100644 index 00000000..3205ff8e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/package.json @@ -0,0 +1,86 @@ +{ + "_args": [ + [ + "negotiator@0.3.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression" + ] + ], + "_from": "negotiator@0.3.0", + "_id": "negotiator@0.3.0", + "_inCache": true, + "_installable": true, + "_location": "/negotiator", + "_phantomChildren": {}, + "_requested": { + "name": "negotiator", + "raw": "negotiator@0.3.0", + "rawSpec": "0.3.0", + "scope": null, + "spec": "0.3.0", + "type": "version" + }, + "_requiredBy": [ + "/compression" + ], + "_resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.3.0.tgz", + "_shasum": "706d692efeddf574d57ea9fb1ab89a4fa7ee8f60", + "_shrinkwrap": null, + "_spec": "negotiator@0.3.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\compression", + "author": { + "email": "federico.romero@outboxlabs.com", + "name": "Federico Romero" + }, + "bugs": { + "url": "https://github.com/federomero/negotiator/issues" + }, + "contributors": [ + { + "email": "i@izs.me", + "name": "Isaac Z. Schlueter", + "url": "http://blog.izs.me/" + } + ], + "dependencies": {}, + "description": "HTTP content negotiation", + "devDependencies": { + "nodeunit": "0.6.x" + }, + "directories": {}, + "dist": { + "shasum": "706d692efeddf574d57ea9fb1ab89a4fa7ee8f60", + "tarball": "https://registry.npmjs.org/negotiator/-/negotiator-0.3.0.tgz" + }, + "engine": "node >= 0.6", + "engines": { + "node": "*" + }, + "homepage": "https://github.com/federomero/negotiator#readme", + "keywords": [ + "http", + "content negotiation", + "accept", + "accept-language", + "accept-encoding", + "accept-charset" + ], + "license": "MIT", + "main": "lib/negotiator.js", + "maintainers": [ + { + "email": "federomero@gmail.com", + "name": "federomero" + } + ], + "name": "negotiator", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/federomero/negotiator.git" + }, + "scripts": { + "test": "nodeunit test" + }, + "version": "0.3.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/readme.md new file mode 100644 index 00000000..0a077bbe --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/readme.md @@ -0,0 +1,132 @@ +# Negotiator + +An HTTP content negotiator for node.js written in javascript. + +# Accept Negotiation + + Negotiator = require('negotiator') + + availableMediaTypes = ['text/html', 'text/plain', 'application/json'] + + // The negotiator constructor receives a request object + negotiator = new Negotiator(request) + + // Let's say Accept header is 'text/html, application/*;q=0.2, image/jpeg;q=0.8' + + negotiator.preferredMediaTypes() + // -> ['text/html', 'image/jpeg', 'application/*'] + + negotiator.preferredMediaTypes(availableMediaTypes) + // -> ['text/html', 'application/json'] + + negotiator.preferredMediaType(availableMediaTypes) + // -> 'text/html' + +You can check a working example at `examples/accept.js`. + +## Methods + +`preferredMediaTypes(availableMediaTypes)`: + +Returns an array of preferred media types ordered by priority from a list of available media types. + +`preferredMediaType(availableMediaType)`: + +Returns the top preferred media type from a list of available media types. + +# Accept-Language Negotiation + + Negotiator = require('negotiator') + + negotiator = new Negotiator(request) + + availableLanguages = 'en', 'es', 'fr' + + // Let's say Accept-Language header is 'en;q=0.8, es, pt' + + negotiator.preferredLanguages() + // -> ['es', 'pt', 'en'] + + negotiator.preferredLanguages(availableLanguages) + // -> ['es', 'en'] + + language = negotiator.preferredLanguage(availableLanguages) + // -> 'es' + +You can check a working example at `examples/language.js`. + +## Methods + +`preferredLanguages(availableLanguages)`: + +Returns an array of preferred languages ordered by priority from a list of available languages. + +`preferredLanguage(availableLanguages)`: + +Returns the top preferred language from a list of available languages. + +# Accept-Charset Negotiation + + Negotiator = require('negotiator') + + availableCharsets = ['utf-8', 'iso-8859-1', 'iso-8859-5'] + + negotiator = new Negotiator(request) + + // Let's say Accept-Charset header is 'utf-8, iso-8859-1;q=0.8, utf-7;q=0.2' + + negotiator.preferredCharsets() + // -> ['utf-8', 'iso-8859-1', 'utf-7'] + + negotiator.preferredCharsets(availableCharsets) + // -> ['utf-8', 'iso-8859-1'] + + negotiator.preferredCharset(availableCharsets) + // -> 'utf-8' + +You can check a working example at `examples/charset.js`. + +## Methods + +`preferredCharsets(availableCharsets)`: + +Returns an array of preferred charsets ordered by priority from a list of available charsets. + +`preferredCharset(availableCharsets)`: + +Returns the top preferred charset from a list of available charsets. + +# Accept-Encoding Negotiation + + Negotiator = require('negotiator').Negotiator + + availableEncodings = ['identity', 'gzip'] + + negotiator = new Negotiator(request) + + // Let's say Accept-Encoding header is 'gzip, compress;q=0.2, identity;q=0.5' + + negotiator.preferredEncodings() + // -> ['gzip', 'identity', 'compress'] + + negotiator.preferredEncodings(availableEncodings) + // -> ['gzip', 'identity'] + + negotiator.preferredEncoding(availableEncodings) + // -> 'gzip' + +You can check a working example at `examples/encoding.js`. + +## Methods + +`preferredEncodings(availableEncodings)`: + +Returns an array of preferred encodings ordered by priority from a list of available encodings. + +`preferredEncoding(availableEncodings)`: + +Returns the top preferred encoding from a list of available encodings. + +# License + +MIT diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/test/charset.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/test/charset.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/test/charset.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/test/charset.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/test/encoding.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/test/encoding.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/test/encoding.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/test/encoding.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/test/language.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/test/language.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/test/language.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/test/language.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/test/mediaType.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/test/mediaType.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/compression/node_modules/negotiator/test/mediaType.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/negotiator/test/mediaType.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/opener/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/opener/README.md new file mode 100644 index 00000000..bf3ff2ac --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/opener/README.md @@ -0,0 +1,44 @@ +# It Opens Stuff + +That is, in your desktop environment. This will make *actual windows pop up*, with stuff in them: + +```bash +npm install opener -g + +opener http://google.com +opener ./my-file.txt +opener firefox +opener npm run lint +``` + +Also if you want to use it programmatically you can do that too: + +```js +var opener = require("opener"); + +opener("http://google.com"); +opener("./my-file.txt"); +opener("firefox"); +opener("npm run lint"); +``` + +## Use It for Good + +Like opening the user's browser with a test harness in your package's test script: + +```json +{ + "scripts": { + "test": "opener ./test/runner.html" + }, + "devDependencies": { + "opener": "*" + } +} +``` + +## Why + +Because Windows has `start`, Macs have `open`, and *nix has `xdg-open`. At least +[according to some guy on StackOverflow](http://stackoverflow.com/q/1480971/3191). And I like things that work on all +three. Like Node.js. And Opener. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/opener/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/opener/package.json index 457de8c0..6dbac965 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/opener/package.json +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/opener/package.json @@ -1,35 +1,76 @@ { - "name": "opener", - "description": "Opens stuff, like webpages and files and executables, cross-platform", - "version": "1.3.0", + "_args": [ + [ + "opener@~1.3.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector" + ] + ], + "_from": "opener@>=1.3.0 <1.4.0", + "_id": "opener@1.3.0", + "_inCache": true, + "_installable": true, + "_location": "/opener", + "_npmUser": { + "email": "domenic@domenicdenicola.com", + "name": "domenicdenicola" + }, + "_npmVersion": "1.1.61", + "_phantomChildren": {}, + "_requested": { + "name": "opener", + "raw": "opener@~1.3.0", + "rawSpec": "~1.3.0", + "scope": null, + "spec": ">=1.3.0 <1.4.0", + "type": "range" + }, + "_requiredBy": [ + "/" + ], + "_resolved": "https://registry.npmjs.org/opener/-/opener-1.3.0.tgz", + "_shasum": "130ba662213fa842edb4cd0361d31a15301a43e2", + "_shrinkwrap": null, + "_spec": "opener@~1.3.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector", "author": { - "name": "Domenic Denicola", "email": "domenic@domenicdenicola.com", + "name": "Domenic Denicola", "url": "http://domenicdenicola.com" }, - "license": "WTFPL", - "repository": { - "type": "git", - "url": "git://github.com/domenic/opener.git" + "bin": { + "opener": "opener.js" }, "bugs": { "url": "http://github.com/domenic/opener/issues" }, + "dependencies": {}, + "description": "Opens stuff, like webpages and files and executables, cross-platform", + "devDependencies": { + "jshint": ">= 0.9.0" + }, + "directories": {}, + "dist": { + "shasum": "130ba662213fa842edb4cd0361d31a15301a43e2", + "tarball": "https://registry.npmjs.org/opener/-/opener-1.3.0.tgz" + }, + "homepage": "https://github.com/domenic/opener#readme", + "license": "WTFPL", "main": "opener.js", - "bin": { - "opener": "opener.js" + "maintainers": [ + { + "email": "domenic@domenicdenicola.com", + "name": "domenicdenicola" + } + ], + "name": "opener", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/domenic/opener.git" }, "scripts": { "lint": "jshint opener.js" }, - "devDependencies": { - "jshint": ">= 0.9.0" - }, - "readme": "# It Opens Stuff\r\n\r\nThat is, in your desktop environment. This will make *actual windows pop up*, with stuff in them:\r\n\r\n```bash\r\nnpm install opener -g\r\n\r\nopener http://google.com\r\nopener ./my-file.txt\r\nopener firefox\r\nopener npm run lint\r\n```\r\n\r\nAlso if you want to use it programmatically you can do that too:\r\n\r\n```js\r\nvar opener = require(\"opener\");\r\n\r\nopener(\"http://google.com\");\r\nopener(\"./my-file.txt\");\r\nopener(\"firefox\");\r\nopener(\"npm run lint\");\r\n```\r\n\r\n## Use It for Good\r\n\r\nLike opening the user's browser with a test harness in your package's test script:\r\n\r\n```json\r\n{\r\n \"scripts\": {\r\n \"test\": \"opener ./test/runner.html\"\r\n },\r\n \"devDependencies\": {\r\n \"opener\": \"*\"\r\n }\r\n}\r\n```\r\n\r\n## Why\r\n\r\nBecause Windows has `start`, Macs have `open`, and *nix has `xdg-open`. At least\r\n[according to some guy on StackOverflow](http://stackoverflow.com/q/1480971/3191). And I like things that work on all\r\nthree. Like Node.js. And Opener.\r\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/domenic/opener", - "_id": "opener@1.3.0", - "_shasum": "130ba662213fa842edb4cd0361d31a15301a43e2", - "_from": "opener@~1.3.0", - "_resolved": "https://registry.npmjs.org/opener/-/opener-1.3.0.tgz" + "version": "1.3.0" } diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/options/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/options/.npmignore new file mode 100644 index 00000000..1b18fb39 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/options/.npmignore @@ -0,0 +1,7 @@ +npm-debug.log +node_modules +.*.swp +.lock-* +build/ + +test diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/options/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/options/Makefile new file mode 100644 index 00000000..7496b6fc --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/options/Makefile @@ -0,0 +1,12 @@ +ALL_TESTS = $(shell find test/ -name '*.test.js') + +run-tests: + @./node_modules/.bin/mocha \ + -t 2000 \ + $(TESTFLAGS) \ + $(TESTS) + +test: + @$(MAKE) NODE_PATH=lib TESTS="$(ALL_TESTS)" run-tests + +.PHONY: test diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/options/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/options/README.md new file mode 100644 index 00000000..0dabc755 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/options/README.md @@ -0,0 +1,69 @@ +# options.js # + +A very light-weight in-code option parsers for node.js. + +## Usage ## + +``` js +var Options = require("options"); + +// Create an Options object +function foo(options) { + var default_options = { + foo : "bar" + }; + + // Create an option object with default value + var opts = new Options(default_options); + + // Merge options + opts = opts.merge(options); + + // Reset to default value + opts.reset(); + + // Copy selected attributes out + var seled_att = opts.copy("foo"); + + // Read json options from a file. + opts.read("options.file"); // Sync + opts.read("options.file", function(err){ // Async + if(err){ // If error occurs + console.log("File error."); + }else{ + // No error + } + }); + + // Attributes defined or not + opts.isDefinedAndNonNull("foobar"); + opts.isDefined("foobar"); +} + +``` + + +## License ## + +(The MIT License) + +Copyright (c) 2012 Einar Otto Stangvik <einaros@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/options/lib/options.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/options/lib/options.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/options/lib/options.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/options/lib/options.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/options/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/options/package.json new file mode 100644 index 00000000..e1616b92 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/options/package.json @@ -0,0 +1,76 @@ +{ + "_args": [ + [ + "options@>=0.0.5", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws" + ] + ], + "_from": "options@>=0.0.5", + "_id": "options@0.0.6", + "_inCache": true, + "_installable": true, + "_location": "/options", + "_npmUser": { + "email": "einaros@gmail.com", + "name": "einaros" + }, + "_npmVersion": "1.4.21", + "_phantomChildren": {}, + "_requested": { + "name": "options", + "raw": "options@>=0.0.5", + "rawSpec": ">=0.0.5", + "scope": null, + "spec": ">=0.0.5", + "type": "range" + }, + "_requiredBy": [ + "/ws" + ], + "_resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "_shasum": "ec22d312806bb53e731773e7cdaefcf1c643128f", + "_shrinkwrap": null, + "_spec": "options@>=0.0.5", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws", + "author": { + "email": "einaros@gmail.com", + "name": "Einar Otto Stangvik", + "url": "http://2x.io" + }, + "bugs": { + "url": "https://github.com/einaros/options.js/issues" + }, + "dependencies": {}, + "description": "A very light-weight in-code option parsers for node.js.", + "devDependencies": { + "mocha": "latest" + }, + "directories": {}, + "dist": { + "shasum": "ec22d312806bb53e731773e7cdaefcf1c643128f", + "tarball": "https://registry.npmjs.org/options/-/options-0.0.6.tgz" + }, + "engines": { + "node": ">=0.4.0" + }, + "gitHead": "ff53d0a092c897cb95964232a96fe17da65c11af", + "homepage": "https://github.com/einaros/options.js", + "main": "lib/options", + "maintainers": [ + { + "email": "einaros@gmail.com", + "name": "einaros" + } + ], + "name": "options", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/einaros/options.js.git" + }, + "scripts": { + "test": "make test" + }, + "version": "0.0.6" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/parseurl/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/parseurl/.npmignore new file mode 100644 index 00000000..b906d96a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/parseurl/.npmignore @@ -0,0 +1,59 @@ +# Compiled source # +################### +*.com +*.class +*.dll +*.exe +*.o +*.so + +# Packages # +############ +# it's better to unpack these files and commit the raw source +# git has its own built in compression methods +*.7z +*.dmg +*.gz +*.iso +*.jar +*.rar +*.tar +*.zip + +# Logs and databases # +###################### +*.log +*.sql +*.sqlite + +# OS generated files # +###################### +.DS_Store* +# Icon? +ehthumbs.db +Thumbs.db + +# Node.js # +########### +lib-cov +*.seed +*.log +*.csv +*.dat +*.out +*.pid +*.gz + +pids +logs +results + +node_modules +npm-debug.log + +# Components # +############## + +/build +/components +/public \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/parseurl/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/parseurl/README.md new file mode 100644 index 00000000..6d043c99 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/parseurl/README.md @@ -0,0 +1,34 @@ +# parseurl + +Parse a URL with memoization. + +## API + +### var pathname = parseurl(req) + +`pathname` can then be passed to a router or something. + +## LICENSE + +(The MIT License) + +Copyright (c) 2014 Jonathan Ong + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-static/node_modules/parseurl/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/parseurl/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-static/node_modules/parseurl/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/parseurl/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/parseurl/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/parseurl/package.json new file mode 100644 index 00000000..ee42bf03 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/parseurl/package.json @@ -0,0 +1,68 @@ +{ + "_args": [ + [ + "parseurl@1.0.1", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-static" + ] + ], + "_from": "parseurl@1.0.1", + "_id": "parseurl@1.0.1", + "_inCache": true, + "_installable": true, + "_location": "/parseurl", + "_npmUser": { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + }, + "_npmVersion": "1.4.4", + "_phantomChildren": {}, + "_requested": { + "name": "parseurl", + "raw": "parseurl@1.0.1", + "rawSpec": "1.0.1", + "scope": null, + "spec": "1.0.1", + "type": "version" + }, + "_requiredBy": [ + "/serve-static" + ], + "_resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.0.1.tgz", + "_shasum": "2e57dce6efdd37c3518701030944c22bf388b7b4", + "_shrinkwrap": null, + "_spec": "parseurl@1.0.1", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-static", + "author": { + "email": "me@jongleberry.com", + "name": "Jonathan Ong", + "url": "http://jongleberry.com" + }, + "bugs": { + "email": "me@jongleberry.com", + "url": "https://github.com/expressjs/parseurl/issues" + }, + "dependencies": {}, + "description": "parse a url with memoization", + "devDependencies": {}, + "directories": {}, + "dist": { + "shasum": "2e57dce6efdd37c3518701030944c22bf388b7b4", + "tarball": "https://registry.npmjs.org/parseurl/-/parseurl-1.0.1.tgz" + }, + "homepage": "https://github.com/expressjs/parseurl", + "license": "MIT", + "maintainers": [ + { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + } + ], + "name": "parseurl", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/expressjs/parseurl.git" + }, + "version": "1.0.1" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/pause/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/pause/.npmignore new file mode 100644 index 00000000..f1250e58 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/pause/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/pause/History.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/pause/History.md new file mode 100644 index 00000000..c8aa68fa --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/pause/History.md @@ -0,0 +1,5 @@ + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/pause/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/pause/Makefile new file mode 100644 index 00000000..4e9c8d36 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/pause/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --require should \ + --reporter spec + +.PHONY: test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/pause/Readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/pause/Readme.md new file mode 100644 index 00000000..1cdd68a2 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/pause/Readme.md @@ -0,0 +1,29 @@ + +# pause + + Pause streams... + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/pause/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/pause/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/pause/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/pause/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/pause/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/pause/package.json new file mode 100644 index 00000000..50a97fab --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/pause/package.json @@ -0,0 +1,57 @@ +{ + "_args": [ + [ + "pause@0.0.1", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect" + ] + ], + "_from": "pause@0.0.1", + "_id": "pause@0.0.1", + "_inCache": true, + "_installable": true, + "_location": "/pause", + "_phantomChildren": {}, + "_requested": { + "name": "pause", + "raw": "pause@0.0.1", + "rawSpec": "0.0.1", + "scope": null, + "spec": "0.0.1", + "type": "version" + }, + "_requiredBy": [ + "/connect" + ], + "_resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "_shasum": "1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d", + "_shrinkwrap": null, + "_spec": "pause@0.0.1", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect", + "author": { + "email": "tj@vision-media.ca", + "name": "TJ Holowaychuk" + }, + "dependencies": {}, + "description": "Pause streams...", + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "directories": {}, + "dist": { + "shasum": "1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d", + "tarball": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz" + }, + "keywords": [], + "main": "index", + "maintainers": [ + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + } + ], + "name": "pause", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "version": "0.0.1" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/qs/.gitmodules similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/qs/.gitmodules diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/qs/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/qs/.npmignore new file mode 100644 index 00000000..e85ce2af --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/qs/.npmignore @@ -0,0 +1,7 @@ +test +.travis.yml +benchmark.js +component.json +examples.js +History.md +Makefile diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/qs/Readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/qs/Readme.md new file mode 100644 index 00000000..27e54a4a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/qs/Readme.md @@ -0,0 +1,58 @@ +# node-querystring + + query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others. + +## Installation + + $ npm install qs + +## Examples + +```js +var qs = require('qs'); + +qs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com'); +// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } } + +qs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }}) +// => user[name]=Tobi&user[email]=tobi%40learnboost.com +``` + +## Testing + +Install dev dependencies: + + $ npm install -d + +and execute: + + $ make test + +browser: + + $ open test/browser/index.html + +## License + +(The MIT License) + +Copyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/qs/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/qs/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/qs/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/qs/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/qs/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/qs/package.json new file mode 100644 index 00000000..c791e2ee --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/qs/package.json @@ -0,0 +1,81 @@ +{ + "_args": [ + [ + "qs@0.6.6", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect" + ] + ], + "_from": "qs@0.6.6", + "_id": "qs@0.6.6", + "_inCache": true, + "_installable": true, + "_location": "/qs", + "_npmUser": { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + }, + "_npmVersion": "1.2.30", + "_phantomChildren": {}, + "_requested": { + "name": "qs", + "raw": "qs@0.6.6", + "rawSpec": "0.6.6", + "scope": null, + "spec": "0.6.6", + "type": "version" + }, + "_requiredBy": [ + "/connect" + ], + "_resolved": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz", + "_shasum": "6e015098ff51968b8a3c819001d5f2c89bc4b107", + "_shrinkwrap": null, + "_spec": "qs@0.6.6", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect", + "author": { + "email": "tj@vision-media.ca", + "name": "TJ Holowaychuk", + "url": "http://tjholowaychuk.com" + }, + "bugs": { + "url": "https://github.com/visionmedia/node-querystring/issues" + }, + "dependencies": {}, + "description": "querystring parser", + "devDependencies": { + "expect.js": "*", + "mocha": "*" + }, + "directories": {}, + "dist": { + "shasum": "6e015098ff51968b8a3c819001d5f2c89bc4b107", + "tarball": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz" + }, + "engines": { + "node": "*" + }, + "homepage": "https://github.com/visionmedia/node-querystring#readme", + "keywords": [ + "query string", + "parser", + "component" + ], + "main": "index", + "maintainers": [ + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + } + ], + "name": "qs", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/visionmedia/node-querystring.git" + }, + "scripts": { + "test": "make test" + }, + "version": "0.6.6" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/range-parser/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/range-parser/.npmignore new file mode 100644 index 00000000..9daeafb9 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/range-parser/.npmignore @@ -0,0 +1 @@ +test diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/range-parser/History.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/range-parser/History.md new file mode 100644 index 00000000..b35ba515 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/range-parser/History.md @@ -0,0 +1,21 @@ + +1.0.0 / 2013-12-11 +================== + + * add repository to package.json + * add MIT license + +0.0.4 / 2012-06-17 +================== + + * changed: ret -1 for unsatisfiable and -2 when invalid + +0.0.3 / 2012-06-17 +================== + + * fix last-byte-pos default to len - 1 + +0.0.2 / 2012-06-14 +================== + + * add `.type` diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/range-parser/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/range-parser/Makefile new file mode 100644 index 00000000..8e8640f2 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/range-parser/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --reporter spec \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/range-parser/Readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/range-parser/Readme.md new file mode 100644 index 00000000..cb30a5ac --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/range-parser/Readme.md @@ -0,0 +1,53 @@ + +# node-range-parser + + Range header field parser. + +## Example: + +```js +assert(-1 == parse(200, 'bytes=500-20')); +assert(-2 == parse(200, 'bytes=malformed')); +parse(200, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 199 }])); +parse(1000, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 499 }])); +parse(1000, 'bytes=40-80').should.eql(arr('bytes', [{ start: 40, end: 80 }])); +parse(1000, 'bytes=-500').should.eql(arr('bytes', [{ start: 500, end: 999 }])); +parse(1000, 'bytes=-400').should.eql(arr('bytes', [{ start: 600, end: 999 }])); +parse(1000, 'bytes=500-').should.eql(arr('bytes', [{ start: 500, end: 999 }])); +parse(1000, 'bytes=400-').should.eql(arr('bytes', [{ start: 400, end: 999 }])); +parse(1000, 'bytes=0-0').should.eql(arr('bytes', [{ start: 0, end: 0 }])); +parse(1000, 'bytes=-1').should.eql(arr('bytes', [{ start: 999, end: 999 }])); +parse(1000, 'items=0-5').should.eql(arr('items', [{ start: 0, end: 5 }])); +parse(1000, 'bytes=40-80,-1').should.eql(arr('bytes', [{ start: 40, end: 80 }, { start: 999, end: 999 }])); +``` + +## Installation + +``` +$ npm install range-parser +``` + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/range-parser/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/range-parser/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/range-parser/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/range-parser/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/range-parser/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/range-parser/package.json new file mode 100644 index 00000000..85d796ae --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/range-parser/package.json @@ -0,0 +1,77 @@ +{ + "_args": [ + [ + "range-parser@1.0.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express" + ] + ], + "_from": "range-parser@1.0.0", + "_id": "range-parser@1.0.0", + "_inCache": true, + "_installable": true, + "_location": "/range-parser", + "_npmUser": { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + }, + "_npmVersion": "1.2.30", + "_phantomChildren": {}, + "_requested": { + "name": "range-parser", + "raw": "range-parser@1.0.0", + "rawSpec": "1.0.0", + "scope": null, + "spec": "1.0.0", + "type": "version" + }, + "_requiredBy": [ + "/express", + "/send" + ], + "_resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.0.tgz", + "_shasum": "a4b264cfe0be5ce36abe3765ac9c2a248746dbc0", + "_shrinkwrap": null, + "_spec": "range-parser@1.0.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express", + "author": { + "email": "tj@vision-media.ca", + "name": "TJ Holowaychuk", + "url": "http://tjholowaychuk.com" + }, + "bugs": { + "url": "https://github.com/visionmedia/node-range-parser/issues" + }, + "dependencies": {}, + "description": "Range header field string parser", + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "directories": {}, + "dist": { + "shasum": "a4b264cfe0be5ce36abe3765ac9c2a248746dbc0", + "tarball": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.0.tgz" + }, + "homepage": "https://github.com/visionmedia/node-range-parser#readme", + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/visionmedia/node-range-parser#license" + } + ], + "main": "index.js", + "maintainers": [ + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + } + ], + "name": "range-parser", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/visionmedia/node-range-parser.git" + }, + "version": "1.0.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/raw-body/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/raw-body/.npmignore new file mode 100644 index 00000000..b59f7e3a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/raw-body/.npmignore @@ -0,0 +1 @@ +test/ \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/raw-body/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/raw-body/.travis.yml similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/raw-body/.travis.yml rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/raw-body/.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/raw-body/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/raw-body/Makefile new file mode 100644 index 00000000..7e4e77d0 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/raw-body/Makefile @@ -0,0 +1,14 @@ +NODE ?= node +BIN = ./node_modules/.bin/ + +test: + @${NODE} ${BIN}mocha \ + --harmony-generators \ + --reporter spec \ + --bail \ + ./test/index.js + +clean: + @rm -rf node_modules + +.PHONY: test clean diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/raw-body/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/raw-body/README.md new file mode 100644 index 00000000..57d3b4bb --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/raw-body/README.md @@ -0,0 +1,96 @@ +# Raw Body [![Build Status](https://travis-ci.org/stream-utils/raw-body.svg?branch=master)](https://travis-ci.org/stream-utils/raw-body) + +Gets the entire buffer of a stream either as a `Buffer` or a string. +Validates the stream's length against an expected length and maximum limit. +Ideal for parsing request bodies. + +## API + +```js +var getRawBody = require('raw-body') + +app.use(function (req, res, next) { + getRawBody(req, { + length: req.headers['content-length'], + limit: '1mb', + encoding: 'utf8' + }, function (err, string) { + if (err) + return next(err) + + req.text = string + next() + }) +}) +``` + +or in a Koa generator: + +```js +app.use(function* (next) { + var string = yield getRawBody(this.req, { + length: this.length, + limit: '1mb', + encoding: 'utf8' + }) +}) +``` + +### getRawBody(stream, [options], [callback]) + +Returns a thunk for yielding with generators. + +Options: + +- `length` - The length length of the stream. + If the contents of the stream do not add up to this length, + an `400` error code is returned. +- `limit` - The byte limit of the body. + If the body ends up being larger than this limit, + a `413` error code is returned. +- `encoding` - The requested encoding. + By default, a `Buffer` instance will be returned. + Most likely, you want `utf8`. + You can use any type of encoding supported by [StringDecoder](http://nodejs.org/api/string_decoder.html). + You can also pass `true` which sets it to the default `utf8` + +`callback(err, res)`: + +- `err` - the following attributes will be defined if applicable: + + - `limit` - the limit in bytes + - `length` and `expected` - the expected length of the stream + - `received` - the received bytes + - `status` and `statusCode` - the corresponding status code for the error + - `type` - either `entity.too.large`, `request.size.invalid`, or `stream.encoding.set` + +- `res` - the result, either as a `String` if an encoding was set or a `Buffer` otherwise. + +If an error occurs, the stream will be paused, +and you are responsible for correctly disposing the stream. +For HTTP requests, no handling is required if you send a response. +For streams that use file descriptors, you should `stream.destroy()` or `stream.close()` to prevent leaks. + +## License + +The MIT License (MIT) + +Copyright (c) 2013 Jonathan Ong me@jongleberry.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/raw-body/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/raw-body/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/raw-body/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/raw-body/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/raw-body/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/raw-body/package.json new file mode 100644 index 00000000..14ad4302 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/raw-body/package.json @@ -0,0 +1,83 @@ +{ + "_args": [ + [ + "raw-body@1.1.4", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect" + ] + ], + "_from": "raw-body@1.1.4", + "_id": "raw-body@1.1.4", + "_inCache": true, + "_installable": true, + "_location": "/raw-body", + "_npmUser": { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + }, + "_npmVersion": "1.4.6", + "_phantomChildren": {}, + "_requested": { + "name": "raw-body", + "raw": "raw-body@1.1.4", + "rawSpec": "1.1.4", + "scope": null, + "spec": "1.1.4", + "type": "version" + }, + "_requiredBy": [ + "/connect" + ], + "_resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.4.tgz", + "_shasum": "f0b5624388d031f63da07f870c86cb9ccadcb67d", + "_shrinkwrap": null, + "_spec": "raw-body@1.1.4", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect", + "author": { + "email": "me@jongleberry.com", + "name": "Jonathan Ong", + "url": "http://jongleberry.com" + }, + "bugs": { + "url": "https://github.com/stream-utils/raw-body/issues" + }, + "dependencies": { + "bytes": "~0.3.0" + }, + "description": "Get and validate the raw body of a readable stream.", + "devDependencies": { + "assert-tap": "~0.1.4", + "co": "3", + "gnode": "~0.0.4", + "mocha": "^1.14.0", + "readable-stream": "~1.0.17", + "request": "^2.27.0", + "through2": "~0.4.1" + }, + "directories": {}, + "dist": { + "shasum": "f0b5624388d031f63da07f870c86cb9ccadcb67d", + "tarball": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.4.tgz" + }, + "engines": { + "node": ">= 0.8.0" + }, + "homepage": "https://github.com/stream-utils/raw-body", + "license": "MIT", + "maintainers": [ + { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + } + ], + "name": "raw-body", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/stream-utils/raw-body.git" + }, + "scripts": { + "test": "NODE=gnode make test && node ./test/acceptance.js" + }, + "version": "1.1.4" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/.npmignore new file mode 100644 index 00000000..13abef4f --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/.npmignore @@ -0,0 +1,3 @@ +node_modules +node_modules/* +npm_debug.log diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/README.md new file mode 100644 index 00000000..1a26af65 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/README.md @@ -0,0 +1,125 @@ +# rc + +The non-configurable configuration loader for lazy people. + +## Usage + +The only option is to pass rc the name of your app, and your default configuration. + +```javascript +var conf = require('rc')(appname, { + //defaults go here. + port: 2468, + + //defaults which are objects will be merged, not replaced + views: { + engine: 'jade' + } +}); +``` + +`rc` will return your configuration options merged with the defaults you specify. +If you pass in a predefined defaults object, it will be mutated: + +```javascript +var conf = {}; +require('rc')(appname, conf); +``` + + +## Standards + +Given your application name (`appname`), rc will look in all the obvious places for configuration. + + * command line arguments (parsed by minimist) + * environment variables prefixed with `${appname}_` + * if you passed an option `--config file` then from that file + * a local `.${appname}rc` or the first found looking in `./ ../ ../../ ../../../` etc. + * `$HOME/.${appname}rc` + * `$HOME/.${appname}/config` + * `$HOME/.config/${appname}` + * `$HOME/.config/${appname}/config` + * `/etc/${appname}rc` + * `/etc/${appname}/config` + * the defaults object you passed in. + +All configuration sources that were found will be flattened into one object, +so that sources **earlier** in this list override later ones. + + +## Configuration File Formats + +Configuration files (e.g. `.appnamerc`) may be in either [json](http://json.org/example) or [ini](http://en.wikipedia.org/wiki/INI_file) format. rc ignores file extensions of configuration files. The example configurations below are equivalent: + + +#### Formatted as `ini` + +``` +; You can include comments in `ini` format if you want. + +dependsOn=0.10.0 + + +; `rc` has built-in support for ini sections, see? + +[commands] + www = ./commands/www + console = ./commands/repl + + +; You can even do nested sections + +[generators.options] + engine = ejs + +[generators.modules] + new = generate-new + engine = generate-backend + +``` + +#### Formatted as `json` + +```json +{ + "dependsOn": "0.10.0", + "commands": { + "www": "./commands/www", + "console": "./commands/repl" + }, + "generators": { + "options": { + "engine": "ejs" + }, + "modules": { + "new": "generate-new", + "backend": "generate-backend" + } + } +} +``` + + +> Since ini, and env variables do not have a standard for types, your application needs be prepared for strings. + + + +## Advanced Usage + +#### Pass in your own `argv` + +You may pass in your own `argv` as the third argument to `rc`. This is in case you want to [use your own command-line opts parser](https://github.com/dominictarr/rc/pull/12). + +```javascript +require('rc')(appname, defaults, customArgvParser); +``` + + +## Note on Performance + +`rc` is running `fs.statSync`-- so make sure you don't use it in a hot code path (e.g. a request handler) + + +## License + +BSD / MIT / Apache2 diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/deep-extend/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/deep-extend/index.js deleted file mode 100644 index 28dc8efa..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/deep-extend/index.js +++ /dev/null @@ -1,82 +0,0 @@ -/*! - * Node.JS module "Deep Extend" - * @description Recursive object extending. - * @author Viacheslav Lotsmanov (unclechu) - * @license MIT - * - * The MIT License (MIT) - * - * Copyright (c) 2013 Viacheslav Lotsmanov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * Extening object that entered in first argument. - * Returns extended object or false if have no target object or incorrect type. - * If you wish to clone object, simply use that: - * deepExtend({}, yourObj_1, [yourObj_N]) - first arg is new empty object - */ -var deepExtend = module.exports = function (/*obj_1, [obj_2], [obj_N]*/) { - if (arguments.length < 1 || typeof arguments[0] !== 'object') { - return false; - } - - if (arguments.length < 2) return arguments[0]; - - var target = arguments[0]; - - // convert arguments to array and cut off target object - var args = Array.prototype.slice.call(arguments, 1); - - var key, val, src, clone; - - args.forEach(function (obj) { - if (typeof obj !== 'object') return; - - for (key in obj) { - if ( ! (key in obj)) continue; - - src = target[key]; - val = obj[key]; - - if (val === target) continue; - - if (typeof val !== 'object' || val === null) { - target[key] = val; - continue; - } - - if (typeof src !== 'object' || src === null) { - clone = (Array.isArray(val)) ? [] : {}; - target[key] = deepExtend(clone, val); - continue; - } - - if (Array.isArray(val)) { - clone = (Array.isArray(src)) ? src : []; - } else { - clone = (!Array.isArray(src)) ? src : {}; - } - - target[key] = deepExtend(clone, val); - } - }); - - return target; -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/deep-extend/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/deep-extend/package.json deleted file mode 100644 index 320dfb04..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/deep-extend/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "deep-extend", - "description": "Recursive object extending.", - "license": "MIT", - "version": "0.2.8", - "homepage": "https://github.com/unclechu/node-deep-extend", - "repository": { - "type": "git", - "url": "git://github.com/unclechu/node-deep-extend.git" - }, - "author": { - "name": "Viacheslav Lotsmanov", - "email": "lotsmanov89@gmail.com", - "url": "unclechu" - }, - "main": "index", - "engines": { - "node": ">=0.4" - }, - "readme": "Node.JS module “Deep Extend”\r\n============================\r\n\r\nRecursive object extending.\r\n\r\nInstall\r\n-----\r\n\r\n npm install deep-extend\r\n\r\nUsage\r\n-----\r\n\r\n var deepExtend = require('deep-extend');\r\n var obj1 = {\r\n a: 1,\r\n b: 2,\r\n d: {\r\n a: 1,\r\n b: [],\r\n c: { test1: 123, test2: 321 }\r\n },\r\n f: 5,\r\n g: 123\r\n };\r\n var obj2 = {\r\n b: 3,\r\n c: 5,\r\n d: {\r\n b: { first: 'one', second: 'two' },\r\n c: { test2: 222 }\r\n },\r\n e: { one: 1, two: 2 },\r\n f: [],\r\n g: (void 0)\r\n };\r\n\r\n deepExtend(obj1, obj2);\r\n\r\n console.log(obj1);\r\n /*\r\n { a: 1,\r\n b: 3,\r\n d:\r\n { a: 1,\r\n b: { first: 'one', second: 'two' },\r\n c: { test1: 123, test2: 222 } },\r\n f: [],\r\n c: 5,\r\n e: { one: 1, two: 2 },\r\n g: undefined }\r\n */\r\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/unclechu/node-deep-extend/issues" - }, - "_id": "deep-extend@0.2.8", - "_shasum": "6d2893a805286e46d8243137c32fb991b50f4299", - "_from": "deep-extend@~0.2.5", - "_resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.2.8.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/ini/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/ini/package.json deleted file mode 100644 index 0e2cdd20..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/ini/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "ini", - "description": "An ini encoder/decoder for node", - "version": "1.1.0", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/ini.git" - }, - "main": "ini.js", - "scripts": { - "test": "tap test/*.js" - }, - "engines": { - "node": "*" - }, - "dependencies": {}, - "devDependencies": { - "tap": "~0.0.9" - }, - "readme": "An ini format parser and serializer for node.\n\nSections are treated as nested objects. Items before the first heading\nare saved on the object directly.\n\n## Usage\n\nConsider an ini-file `config.ini` that looks like this:\n\n ; this comment is being ignored\n scope = global\n\n [database]\n user = dbuser\n password = dbpassword\n database = use_this_database\n\n [paths.default]\n datadir = /var/lib/data\n array[] = first value\n array[] = second value\n array[] = third value\n\nYou can read, manipulate and write the ini-file like so:\n\n var fs = require('fs')\n , ini = require('ini')\n\n var config = ini.parse(fs.readFileSync('./config.ini', 'utf-8'))\n\n config.scope = 'local'\n config.database.database = 'use_another_database'\n config.paths.default.tmpdir = '/tmp'\n delete config.paths.default.datadir\n config.paths.default.array.push('fourth value')\n\n fs.writeFileSync('./config_modified.ini', ini.stringify(config, 'section'))\n\nThis will result in a file called `config_modified.ini` being written to the filesystem with the following content:\n\n [section]\n scope = local\n [section.database]\n user = dbuser\n password = dbpassword\n database = use_another_database\n [section.paths.default]\n tmpdir = /tmp\n array[] = first value\n array[] = second value\n array[] = third value\n array[] = fourth value\n\n\n## API\n\n### decode(inistring)\nDecode the ini-style formatted `inistring` into a nested object.\n\n### parse(inistring)\nAlias for `decode(inistring)`\n\n### encode(object, [section])\nEncode the object `object` into an ini-style formatted string. If the optional parameter `section` is given, then all top-level properties of the object are put into this section and the `section`-string is prepended to all sub-sections, see the usage example above.\n\n### stringify(object, [section])\nAlias for `encode(object, [section])`\n\n### safe(val)\nEscapes the string `val` such that it is safe to be used as a key or value in an ini-file. Basically escapes quotes. For example\n\n ini.safe('\"unsafe string\"')\n\nwould result in\n\n \"\\\"unsafe string\\\"\"\n\n### unsafe(val)\nUnescapes the string `val`\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/ini/issues" - }, - "homepage": "https://github.com/isaacs/ini", - "_id": "ini@1.1.0", - "_shasum": "4e808c2ce144c6c1788918e034d6797bc6cf6281", - "_from": "ini@~1.1.0", - "_resolved": "https://registry.npmjs.org/ini/-/ini-1.1.0.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/minimist/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/minimist/package.json deleted file mode 100644 index 42a7f1bf..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/node_modules/minimist/package.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "minimist", - "version": "0.0.10", - "description": "parse argument options", - "main": "index.js", - "devDependencies": { - "tape": "~1.0.4", - "tap": "~0.4.0" - }, - "scripts": { - "test": "tap test/*.js" - }, - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/6..latest", - "ff/5", - "firefox/latest", - "chrome/10", - "chrome/latest", - "safari/5.1", - "safari/latest", - "opera/12" - ] - }, - "repository": { - "type": "git", - "url": "git://github.com/substack/minimist.git" - }, - "homepage": "https://github.com/substack/minimist", - "keywords": [ - "argv", - "getopt", - "parser", - "optimist" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT", - "readme": "# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n x: 3,\n y: 4,\n n: 5,\n a: true,\n b: true,\n c: true,\n beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n", - "readmeFilename": "readme.markdown", - "bugs": { - "url": "https://github.com/substack/minimist/issues" - }, - "_id": "minimist@0.0.10", - "_shasum": "de3f98543dbf96082be48ad1a0c7cda836301dcf", - "_from": "minimist@~0.0.7", - "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/package.json index 283bc7a0..b0b89f96 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/package.json +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rc/package.json @@ -1,48 +1,89 @@ { - "name": "rc", - "version": "0.3.5", - "description": "hardwired configuration loader", - "main": "index.js", + "_args": [ + [ + "rc@~0.3.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector" + ] + ], + "_from": "rc@>=0.3.0 <0.4.0", + "_id": "rc@0.3.5", + "_inCache": true, + "_installable": true, + "_location": "/rc", + "_npmUser": { + "email": "dominic.tarr@gmail.com", + "name": "dominictarr" + }, + "_npmVersion": "1.4.6", + "_phantomChildren": {}, + "_requested": { + "name": "rc", + "raw": "rc@~0.3.0", + "rawSpec": "~0.3.0", + "scope": null, + "spec": ">=0.3.0 <0.4.0", + "type": "range" + }, + "_requiredBy": [ + "/" + ], + "_resolved": "https://registry.npmjs.org/rc/-/rc-0.3.5.tgz", + "_shasum": "fce2220593be57aa1296685a7e37ed003dfcc728", + "_shrinkwrap": null, + "_spec": "rc@~0.3.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector", + "author": { + "email": "dominic.tarr@gmail.com", + "name": "Dominic Tarr", + "url": "dominictarr.com" + }, + "bin": { + "rc": "./index.js" + }, "browserify": "browser.js", - "scripts": { - "test": "set -e; node test/test.js; node test/ini.js" + "bugs": { + "url": "https://github.com/dominictarr/rc/issues" }, - "repository": { - "type": "git", - "url": "https://github.com/dominictarr/rc.git" + "dependencies": { + "deep-extend": "~0.2.5", + "ini": "~1.1.0", + "minimist": "~0.0.7" }, + "description": "hardwired configuration loader", + "devDependencies": {}, + "directories": {}, + "dist": { + "shasum": "fce2220593be57aa1296685a7e37ed003dfcc728", + "tarball": "https://registry.npmjs.org/rc/-/rc-0.3.5.tgz" + }, + "homepage": "https://github.com/dominictarr/rc", "keywords": [ "config", "rc", "unix", "defaults" ], - "bin": { - "rc": "./index.js" - }, - "author": { - "name": "Dominic Tarr", - "email": "dominic.tarr@gmail.com", - "url": "dominictarr.com" - }, "licenses": [ "BSD", "MIT", "Apache2" ], - "dependencies": { - "minimist": "~0.0.7", - "deep-extend": "~0.2.5", - "ini": "~1.1.0" + "main": "index.js", + "maintainers": [ + { + "email": "dominic.tarr@gmail.com", + "name": "dominictarr" + } + ], + "name": "rc", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/dominictarr/rc.git" }, - "readme": "# rc\n\nThe non-configurable configuration loader for lazy people.\n\n## Usage\n\nThe only option is to pass rc the name of your app, and your default configuration.\n\n```javascript\nvar conf = require('rc')(appname, {\n //defaults go here.\n port: 2468,\n\n //defaults which are objects will be merged, not replaced\n views: {\n engine: 'jade'\n }\n});\n```\n\n`rc` will return your configuration options merged with the defaults you specify.\nIf you pass in a predefined defaults object, it will be mutated:\n\n```javascript\nvar conf = {};\nrequire('rc')(appname, conf);\n```\n\n\n## Standards\n\nGiven your application name (`appname`), rc will look in all the obvious places for configuration.\n\n * command line arguments (parsed by minimist)\n * environment variables prefixed with `${appname}_`\n * if you passed an option `--config file` then from that file\n * a local `.${appname}rc` or the first found looking in `./ ../ ../../ ../../../` etc.\n * `$HOME/.${appname}rc`\n * `$HOME/.${appname}/config`\n * `$HOME/.config/${appname}`\n * `$HOME/.config/${appname}/config`\n * `/etc/${appname}rc`\n * `/etc/${appname}/config`\n * the defaults object you passed in.\n\nAll configuration sources that were found will be flattened into one object,\nso that sources **earlier** in this list override later ones.\n\n\n## Configuration File Formats\n\nConfiguration files (e.g. `.appnamerc`) may be in either [json](http://json.org/example) or [ini](http://en.wikipedia.org/wiki/INI_file) format. rc ignores file extensions of configuration files. The example configurations below are equivalent:\n\n\n#### Formatted as `ini`\n\n```\n; You can include comments in `ini` format if you want.\n\ndependsOn=0.10.0\n\n\n; `rc` has built-in support for ini sections, see?\n\n[commands]\n www = ./commands/www\n console = ./commands/repl\n\n\n; You can even do nested sections\n\n[generators.options]\n engine = ejs\n\n[generators.modules]\n new = generate-new\n engine = generate-backend\n\n```\n\n#### Formatted as `json`\n\n```json\n{\n \"dependsOn\": \"0.10.0\",\n \"commands\": {\n \"www\": \"./commands/www\",\n \"console\": \"./commands/repl\"\n },\n \"generators\": {\n \"options\": {\n \"engine\": \"ejs\"\n },\n \"modules\": {\n \"new\": \"generate-new\",\n \"backend\": \"generate-backend\"\n }\n }\n}\n```\n\n\n> Since ini, and env variables do not have a standard for types, your application needs be prepared for strings.\n\n\n\n## Advanced Usage\n\n#### Pass in your own `argv`\n\nYou may pass in your own `argv` as the third argument to `rc`. This is in case you want to [use your own command-line opts parser](https://github.com/dominictarr/rc/pull/12).\n\n```javascript\nrequire('rc')(appname, defaults, customArgvParser);\n```\n\n\n## Note on Performance\n\n`rc` is running `fs.statSync`-- so make sure you don't use it in a hot code path (e.g. a request handler) \n\n\n## License\n\nBSD / MIT / Apache2\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/dominictarr/rc/issues" + "scripts": { + "test": "set -e; node test/test.js; node test/ini.js" }, - "homepage": "https://github.com/dominictarr/rc", - "_id": "rc@0.3.5", - "_shasum": "fce2220593be57aa1296685a7e37ed003dfcc728", - "_from": "rc@~0.3.0", - "_resolved": "https://registry.npmjs.org/rc/-/rc-0.3.5.tgz" + "version": "0.3.5" } diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/.npmignore new file mode 100644 index 00000000..38344f87 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/.npmignore @@ -0,0 +1,5 @@ +build/ +test/ +examples/ +fs.js +zlib.js \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/LICENSE similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/LICENSE rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/LICENSE diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/README.md new file mode 100644 index 00000000..e46b8239 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/README.md @@ -0,0 +1,15 @@ +# readable-stream + +***Node-core streams for userland*** + +[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) +[![NPM](https://nodei.co/npm-dl/readable-stream.png&months=6&height=3)](https://nodei.co/npm/readable-stream/) + +This package is a mirror of the Streams2 and Streams3 implementations in Node-core. + +If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core. + +**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12. + +**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"` + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/duplex.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/duplex.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/duplex.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/duplex.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/float.patch b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/float.patch similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/float.patch rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/float.patch diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_duplex.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/lib/_stream_duplex.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_duplex.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/lib/_stream_duplex.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_passthrough.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/lib/_stream_passthrough.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_passthrough.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/lib/_stream_passthrough.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/lib/_stream_readable.js similarity index 99% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/lib/_stream_readable.js index 7f4e3b82..19ab3588 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable.js +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/lib/_stream_readable.js @@ -63,6 +63,8 @@ if (debug && debug.debuglog) { util.inherits(Readable, Stream); function ReadableState(options, stream) { + var Duplex = require('./_stream_duplex'); + options = options || {}; // the point at which it stops calling _read() to fill the buffer @@ -100,6 +102,9 @@ function ReadableState(options, stream) { // make all the buffer merging and length checks go away this.objectMode = !!options.objectMode; + if (stream instanceof Duplex) + this.objectMode = this.objectMode || !!options.readableObjectMode; + // Crypto is kind of old and crusty. Historically, its default string // encoding is 'binary' so we have to make this configurable. // Everything else in the universe uses 'utf8', though. @@ -126,6 +131,8 @@ function ReadableState(options, stream) { } function Readable(options) { + var Duplex = require('./_stream_duplex'); + if (!(this instanceof Readable)) return new Readable(options); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_transform.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/lib/_stream_transform.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_transform.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/lib/_stream_transform.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_writable.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/lib/_stream_writable.js similarity index 98% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_writable.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/lib/_stream_writable.js index 9ea28293..db8539cd 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_writable.js +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/lib/_stream_writable.js @@ -48,6 +48,8 @@ function WriteReq(chunk, encoding, cb) { } function WritableState(options, stream) { + var Duplex = require('./_stream_duplex'); + options = options || {}; // the point at which write() starts returning false @@ -61,6 +63,9 @@ function WritableState(options, stream) { // contains buffers or objects. this.objectMode = !!options.objectMode; + if (stream instanceof Duplex) + this.objectMode = this.objectMode || !!options.writableObjectMode; + // cast to ints. this.highWaterMark = ~~this.highWaterMark; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/package.json new file mode 100644 index 00000000..dac40048 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/package.json @@ -0,0 +1,97 @@ +{ + "_args": [ + [ + "readable-stream@~1.1.9", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty" + ] + ], + "_from": "readable-stream@>=1.1.9 <1.2.0", + "_id": "readable-stream@1.1.13", + "_inCache": true, + "_installable": true, + "_location": "/readable-stream", + "_npmUser": { + "email": "rod@vagg.org", + "name": "rvagg" + }, + "_npmVersion": "1.4.23", + "_phantomChildren": {}, + "_requested": { + "name": "readable-stream", + "raw": "readable-stream@~1.1.9", + "rawSpec": "~1.1.9", + "scope": null, + "spec": ">=1.1.9 <1.2.0", + "type": "range" + }, + "_requiredBy": [ + "/htmlparser2", + "/multiparty", + "/stream-counter" + ], + "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", + "_shasum": "f6eef764f514c89e2b9e23146a75ba106756d23e", + "_shrinkwrap": null, + "_spec": "readable-stream@~1.1.9", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\multiparty", + "author": { + "email": "i@izs.me", + "name": "Isaac Z. Schlueter", + "url": "http://blog.izs.me/" + }, + "browser": { + "util": false + }, + "bugs": { + "url": "https://github.com/isaacs/readable-stream/issues" + }, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + }, + "description": "Streams3, a user-land copy of the stream library from Node.js v0.11.x", + "devDependencies": { + "tap": "~0.2.6" + }, + "directories": {}, + "dist": { + "shasum": "f6eef764f514c89e2b9e23146a75ba106756d23e", + "tarball": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz" + }, + "gitHead": "3b672fd7ae92acf5b4ffdbabf74b372a0a56b051", + "homepage": "https://github.com/isaacs/readable-stream", + "keywords": [ + "readable", + "stream", + "pipe" + ], + "license": "MIT", + "main": "readable.js", + "maintainers": [ + { + "email": "i@izs.me", + "name": "isaacs" + }, + { + "email": "nathan@tootallnate.net", + "name": "tootallnate" + }, + { + "email": "rod@vagg.org", + "name": "rvagg" + } + ], + "name": "readable-stream", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/readable-stream.git" + }, + "scripts": { + "test": "tap test/simple/*.js" + }, + "version": "1.1.13" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/passthrough.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/passthrough.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/passthrough.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/passthrough.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/readable.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/readable.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/readable.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/readable.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/transform.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/transform.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/transform.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/transform.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/writable.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/writable.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/writable.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/readable-stream/writable.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/response-time/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/response-time/.npmignore new file mode 100644 index 00000000..30d74d25 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/response-time/.npmignore @@ -0,0 +1 @@ +test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/response-time/Makefile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/response-time/Makefile new file mode 100644 index 00000000..bd17c559 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/response-time/Makefile @@ -0,0 +1,9 @@ +BIN = ./node_modules/.bin/ + +test: + @$(BIN)mocha \ + --require should \ + --reporter spec \ + --bail + +.PHONY: test \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/response-time/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/response-time/README.md new file mode 100644 index 00000000..77606ef0 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/response-time/README.md @@ -0,0 +1,23 @@ +# Response Time + +Response time middleware extracted from connect. + +Usage: + +```js +var responseTime = require('response-time'); + +app.use(responseTime()); +``` + +## License + +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong me@jongleberry.com + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/response-time/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/response-time/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/response-time/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/response-time/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/response-time/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/response-time/package.json new file mode 100644 index 00000000..fdb0e56a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/response-time/package.json @@ -0,0 +1,74 @@ +{ + "_args": [ + [ + "response-time@1.0.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect" + ] + ], + "_from": "response-time@1.0.0", + "_id": "response-time@1.0.0", + "_inCache": true, + "_installable": true, + "_location": "/response-time", + "_npmUser": { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + }, + "_npmVersion": "1.3.24", + "_phantomChildren": {}, + "_requested": { + "name": "response-time", + "raw": "response-time@1.0.0", + "rawSpec": "1.0.0", + "scope": null, + "spec": "1.0.0", + "type": "version" + }, + "_requiredBy": [ + "/connect" + ], + "_resolved": "https://registry.npmjs.org/response-time/-/response-time-1.0.0.tgz", + "_shasum": "c2bc8d08f3c359f97eae1d6da86eead175fabdc9", + "_shrinkwrap": null, + "_spec": "response-time@1.0.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect", + "author": { + "email": "me@jongleberry.com", + "name": "Jonathan Ong", + "url": "http://jongleberry.com" + }, + "bugs": { + "url": "https://github.com/expressjs/response-time/issues" + }, + "dependencies": {}, + "description": "X-Response-Time header for node.js", + "devDependencies": { + "mocha": "*", + "should": "*", + "supertest": "*" + }, + "directories": {}, + "dist": { + "shasum": "c2bc8d08f3c359f97eae1d6da86eead175fabdc9", + "tarball": "https://registry.npmjs.org/response-time/-/response-time-1.0.0.tgz" + }, + "homepage": "https://github.com/expressjs/response-time", + "license": "MIT", + "maintainers": [ + { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + } + ], + "name": "response-time", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/expressjs/response-time.git" + }, + "scripts": { + "test": "make test" + }, + "version": "1.0.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/AUTHORS b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/AUTHORS new file mode 100644 index 00000000..247b7543 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/AUTHORS @@ -0,0 +1,6 @@ +# Authors sorted by whether or not they're me. +Isaac Z. Schlueter (http://blog.izs.me) +Wayne Larsen (http://github.com/wvl) +ritch +Marcel Laverdet +Yosef Dinerstein diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/LICENSE new file mode 100644 index 00000000..05a40109 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/LICENSE @@ -0,0 +1,23 @@ +Copyright 2009, 2010, 2011 Isaac Z. Schlueter. +All rights reserved. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/README.md new file mode 100644 index 00000000..cd123b65 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/README.md @@ -0,0 +1,30 @@ +`rm -rf` for node. + +Install with `npm install rimraf`, or just drop rimraf.js somewhere. + +## API + +`rimraf(f, callback)` + +The callback will be called with an error if there is one. Certain +errors are handled for you: + +* Windows: `EBUSY` and `ENOTEMPTY` - rimraf will back off a maximum of + `opts.maxBusyTries` times before giving up. +* `ENOENT` - If the file doesn't exist, rimraf will return + successfully, since your desired outcome is already the case. + +## rimraf.sync + +It can remove stuff synchronously, too. But that's not so good. Use +the async API. It's better. + +## CLI + +If installed with `npm install rimraf -g` it can be used as a global +command `rimraf ` which is useful for cross platform support. + +## mkdirp + +If you need to create a directory recursively, check out +[mkdirp](https://github.com/substack/node-mkdirp). diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/bin.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/bin.js new file mode 100644 index 00000000..29bfa8a6 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/bin.js @@ -0,0 +1,33 @@ +#!/usr/bin/env node + +var rimraf = require('./') + +var help = false +var dashdash = false +var args = process.argv.slice(2).filter(function(arg) { + if (dashdash) + return !!arg + else if (arg === '--') + dashdash = true + else if (arg.match(/^(-+|\/)(h(elp)?|\?)$/)) + help = true + else + return !!arg +}); + +if (help || args.length === 0) { + // If they didn't ask for help, then this is not a "success" + var log = help ? console.log : console.error + log('Usage: rimraf ') + log('') + log(' Deletes all files and folders at "path" recursively.') + log('') + log('Options:') + log('') + log(' -h, --help Display this usage info') + process.exit(help ? 0 : 1) +} else { + args.forEach(function(arg) { + rimraf.sync(arg) + }) +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/package.json new file mode 100644 index 00000000..d47b91d0 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/package.json @@ -0,0 +1,100 @@ +{ + "_args": [ + [ + "rimraf@~2.2.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra" + ] + ], + "_from": "rimraf@>=2.2.0 <2.3.0", + "_id": "rimraf@2.2.8", + "_inCache": true, + "_installable": true, + "_location": "/rimraf", + "_npmUser": { + "email": "i@izs.me", + "name": "isaacs" + }, + "_npmVersion": "1.4.10", + "_phantomChildren": {}, + "_requested": { + "name": "rimraf", + "raw": "rimraf@~2.2.0", + "rawSpec": "~2.2.0", + "scope": null, + "spec": ">=2.2.0 <2.3.0", + "type": "range" + }, + "_requiredBy": [ + "/fs-extra" + ], + "_resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "_shasum": "e439be2aaee327321952730f99a8929e4fc50582", + "_shrinkwrap": null, + "_spec": "rimraf@~2.2.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\fs-extra", + "author": { + "email": "i@izs.me", + "name": "Isaac Z. Schlueter", + "url": "http://blog.izs.me/" + }, + "bin": { + "rimraf": "./bin.js" + }, + "bugs": { + "url": "https://github.com/isaacs/rimraf/issues" + }, + "contributors": [ + { + "email": "i@izs.me", + "name": "Isaac Z. Schlueter", + "url": "http://blog.izs.me" + }, + { + "email": "wayne@larsen.st", + "name": "Wayne Larsen", + "url": "http://github.com/wvl" + }, + { + "email": "skawful@gmail.com", + "name": "ritch" + }, + { + "name": "Marcel Laverdet" + }, + { + "email": "yosefd@microsoft.com", + "name": "Yosef Dinerstein" + } + ], + "dependencies": {}, + "description": "A deep deletion module for node (like `rm -rf`)", + "devDependencies": {}, + "directories": {}, + "dist": { + "shasum": "e439be2aaee327321952730f99a8929e4fc50582", + "tarball": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" + }, + "homepage": "https://github.com/isaacs/rimraf", + "license": { + "type": "MIT", + "url": "https://github.com/isaacs/rimraf/raw/master/LICENSE" + }, + "main": "rimraf.js", + "maintainers": [ + { + "email": "i@izs.me", + "name": "isaacs" + } + ], + "name": "rimraf", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/rimraf.git" + }, + "scripts": { + "test": "cd test && bash run.sh" + }, + "version": "2.2.8" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/rimraf.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/rimraf.js new file mode 100644 index 00000000..eb96c46a --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/rimraf.js @@ -0,0 +1,248 @@ +module.exports = rimraf +rimraf.sync = rimrafSync + +var assert = require("assert") +var path = require("path") +var fs = require("fs") + +// for EMFILE handling +var timeout = 0 +exports.EMFILE_MAX = 1000 +exports.BUSYTRIES_MAX = 3 + +var isWindows = (process.platform === "win32") + +function defaults (options) { + var methods = [ + 'unlink', + 'chmod', + 'stat', + 'rmdir', + 'readdir' + ] + methods.forEach(function(m) { + options[m] = options[m] || fs[m] + m = m + 'Sync' + options[m] = options[m] || fs[m] + }) +} + +function rimraf (p, options, cb) { + if (typeof options === 'function') { + cb = options + options = {} + } + assert(p) + assert(options) + assert(typeof cb === 'function') + + defaults(options) + + if (!cb) throw new Error("No callback passed to rimraf()") + + var busyTries = 0 + rimraf_(p, options, function CB (er) { + if (er) { + if (isWindows && (er.code === "EBUSY" || er.code === "ENOTEMPTY") && + busyTries < exports.BUSYTRIES_MAX) { + busyTries ++ + var time = busyTries * 100 + // try again, with the same exact callback as this one. + return setTimeout(function () { + rimraf_(p, options, CB) + }, time) + } + + // this one won't happen if graceful-fs is used. + if (er.code === "EMFILE" && timeout < exports.EMFILE_MAX) { + return setTimeout(function () { + rimraf_(p, options, CB) + }, timeout ++) + } + + // already gone + if (er.code === "ENOENT") er = null + } + + timeout = 0 + cb(er) + }) +} + +// Two possible strategies. +// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR +// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR +// +// Both result in an extra syscall when you guess wrong. However, there +// are likely far more normal files in the world than directories. This +// is based on the assumption that a the average number of files per +// directory is >= 1. +// +// If anyone ever complains about this, then I guess the strategy could +// be made configurable somehow. But until then, YAGNI. +function rimraf_ (p, options, cb) { + assert(p) + assert(options) + assert(typeof cb === 'function') + + options.unlink(p, function (er) { + if (er) { + if (er.code === "ENOENT") + return cb(null) + if (er.code === "EPERM") + return (isWindows) + ? fixWinEPERM(p, options, er, cb) + : rmdir(p, options, er, cb) + if (er.code === "EISDIR") + return rmdir(p, options, er, cb) + } + return cb(er) + }) +} + +function fixWinEPERM (p, options, er, cb) { + assert(p) + assert(options) + assert(typeof cb === 'function') + if (er) + assert(er instanceof Error) + + options.chmod(p, 666, function (er2) { + if (er2) + cb(er2.code === "ENOENT" ? null : er) + else + options.stat(p, function(er3, stats) { + if (er3) + cb(er3.code === "ENOENT" ? null : er) + else if (stats.isDirectory()) + rmdir(p, options, er, cb) + else + options.unlink(p, cb) + }) + }) +} + +function fixWinEPERMSync (p, options, er) { + assert(p) + assert(options) + if (er) + assert(er instanceof Error) + + try { + options.chmodSync(p, 666) + } catch (er2) { + if (er2.code === "ENOENT") + return + else + throw er + } + + try { + var stats = options.statSync(p) + } catch (er3) { + if (er3.code === "ENOENT") + return + else + throw er + } + + if (stats.isDirectory()) + rmdirSync(p, options, er) + else + options.unlinkSync(p) +} + +function rmdir (p, options, originalEr, cb) { + assert(p) + assert(options) + if (originalEr) + assert(originalEr instanceof Error) + assert(typeof cb === 'function') + + // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS) + // if we guessed wrong, and it's not a directory, then + // raise the original error. + options.rmdir(p, function (er) { + if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")) + rmkids(p, options, cb) + else if (er && er.code === "ENOTDIR") + cb(originalEr) + else + cb(er) + }) +} + +function rmkids(p, options, cb) { + assert(p) + assert(options) + assert(typeof cb === 'function') + + options.readdir(p, function (er, files) { + if (er) + return cb(er) + var n = files.length + if (n === 0) + return options.rmdir(p, cb) + var errState + files.forEach(function (f) { + rimraf(path.join(p, f), options, function (er) { + if (errState) + return + if (er) + return cb(errState = er) + if (--n === 0) + options.rmdir(p, cb) + }) + }) + }) +} + +// this looks simpler, and is strictly *faster*, but will +// tie up the JavaScript thread and fail on excessively +// deep directory trees. +function rimrafSync (p, options) { + options = options || {} + defaults(options) + + assert(p) + assert(options) + + try { + options.unlinkSync(p) + } catch (er) { + if (er.code === "ENOENT") + return + if (er.code === "EPERM") + return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er) + if (er.code !== "EISDIR") + throw er + rmdirSync(p, options, er) + } +} + +function rmdirSync (p, options, originalEr) { + assert(p) + assert(options) + if (originalEr) + assert(originalEr instanceof Error) + + try { + options.rmdirSync(p) + } catch (er) { + if (er.code === "ENOENT") + return + if (er.code === "ENOTDIR") + throw originalEr + if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM") + rmkidsSync(p, options) + } +} + +function rmkidsSync (p, options) { + assert(p) + assert(options) + options.readdirSync(p).forEach(function (f) { + rimrafSync(path.join(p, f), options) + }) + options.rmdirSync(p, options) +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/test/run.sh b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/test/run.sh new file mode 100644 index 00000000..653ff9b7 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/test/run.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set -e +code=0 +for i in test-*.js; do + echo -n $i ... + bash setup.sh + node $i + if [ -d target ]; then + echo "fail" + code=1 + else + echo "pass" + fi +done +rm -rf target +exit $code diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/test/setup.sh b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/test/setup.sh new file mode 100644 index 00000000..2602e631 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/test/setup.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +set -e + +files=10 +folders=2 +depth=4 +target="$PWD/target" + +rm -rf target + +fill () { + local depth=$1 + local files=$2 + local folders=$3 + local target=$4 + + if ! [ -d $target ]; then + mkdir -p $target + fi + + local f + + f=$files + while [ $f -gt 0 ]; do + touch "$target/f-$depth-$f" + let f-- + done + + let depth-- + + if [ $depth -le 0 ]; then + return 0 + fi + + f=$folders + while [ $f -gt 0 ]; do + mkdir "$target/folder-$depth-$f" + fill $depth $files $folders "$target/d-$depth-$f" + let f-- + done +} + +fill $depth $files $folders $target + +# sanity assert +[ -d $target ] diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/test/test-async.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/test/test-async.js new file mode 100644 index 00000000..9c2e0b7b --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/test/test-async.js @@ -0,0 +1,5 @@ +var rimraf = require("../rimraf") + , path = require("path") +rimraf(path.join(__dirname, "target"), function (er) { + if (er) throw er +}) diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/test/test-sync.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/test/test-sync.js new file mode 100644 index 00000000..eb71f104 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/rimraf/test/test-sync.js @@ -0,0 +1,3 @@ +var rimraf = require("../rimraf") + , path = require("path") +rimraf.sync(path.join(__dirname, "target")) diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/scmp/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/scmp/.npmignore new file mode 100644 index 00000000..62ea75cc --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/scmp/.npmignore @@ -0,0 +1,3 @@ +node_modules/ +.project + diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/node_modules/scmp/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/scmp/.travis.yml similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/node_modules/scmp/.travis.yml rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/scmp/.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/scmp/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/scmp/README.md new file mode 100644 index 00000000..8b38b154 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/scmp/README.md @@ -0,0 +1,31 @@ +# scmp + +[![Build Status](https://travis-ci.org/freewil/scmp.png)](https://travis-ci.org/freewil/scmp) + +Safe, constant-time comparison of strings. + +## Install + +``` +npm install scmp +``` + +## Why? + +To minimize vulnerability against [timing attacks](http://codahale.com/a-lesson-in-timing-attacks/). + +## Examples + +```js +var scmp = require('scmp'); + +var hash = 'e727d1464ae12436e899a726da5b2f11d8381b26'; +var givenHash = 'e727e1b80e448a213b392049888111e1779a52db'; + +if (scmp(hash, givenHash)) { + console.log('good hash'); +} else { + console.log('bad hash'); +} + +``` diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/node_modules/scmp/benchmark/benchmark.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/scmp/benchmark/benchmark.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/node_modules/scmp/benchmark/benchmark.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/scmp/benchmark/benchmark.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/node_modules/scmp/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/scmp/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/node_modules/scmp/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/scmp/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/scmp/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/scmp/package.json new file mode 100644 index 00000000..e474dbdb --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/scmp/package.json @@ -0,0 +1,81 @@ +{ + "_args": [ + [ + "scmp@~0.0.3", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\csurf" + ] + ], + "_from": "scmp@>=0.0.3 <0.1.0", + "_id": "scmp@0.0.3", + "_inCache": true, + "_installable": true, + "_location": "/scmp", + "_npmUser": { + "email": "sean@eternalrise.com", + "name": "freewil" + }, + "_npmVersion": "1.3.24", + "_phantomChildren": {}, + "_requested": { + "name": "scmp", + "raw": "scmp@~0.0.3", + "rawSpec": "~0.0.3", + "scope": null, + "spec": ">=0.0.3 <0.1.0", + "type": "range" + }, + "_requiredBy": [ + "/csurf" + ], + "_resolved": "https://registry.npmjs.org/scmp/-/scmp-0.0.3.tgz", + "_shasum": "3648df2d7294641e7f78673ffc29681d9bad9073", + "_shrinkwrap": null, + "_spec": "scmp@~0.0.3", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\csurf", + "author": { + "name": "Sean Lavine" + }, + "bugs": { + "url": "https://github.com/freewil/scmp/issues" + }, + "dependencies": {}, + "description": "safe, constant-time string-comparison", + "devDependencies": { + "matcha": "~0.4.0", + "mocha": "~1.13.0" + }, + "directories": {}, + "dist": { + "shasum": "3648df2d7294641e7f78673ffc29681d9bad9073", + "tarball": "https://registry.npmjs.org/scmp/-/scmp-0.0.3.tgz" + }, + "homepage": "https://github.com/freewil/scmp", + "keywords": [ + "safe-compare", + "compare", + "time-equivalent-comparison", + "time equivalent", + "constant-time", + "constant time" + ], + "license": "BSD", + "main": "index.js", + "maintainers": [ + { + "email": "sean@eternalrise.com", + "name": "freewil" + } + ], + "name": "scmp", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/freewil/scmp.git" + }, + "scripts": { + "posttest": "matcha", + "test": "mocha" + }, + "version": "0.0.3" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/node_modules/scmp/test/test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/scmp/test/test.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/csurf/node_modules/scmp/test/test.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/scmp/test/test.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/send/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/send/.npmignore new file mode 100644 index 00000000..670588af --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/send/.npmignore @@ -0,0 +1,3 @@ +test +examples +*.sock diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/send/History.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/send/History.md new file mode 100644 index 00000000..5de73da9 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/send/History.md @@ -0,0 +1,61 @@ + +0.3.0 / 2014-04-24 +================== + + * Fix sending files with dots without root set + * Coerce option types + * Accept API options in options object + * Set etags to "weak" + * Include file path in etag + * Make "Can't set headers after they are sent." catchable + * Send full entity-body for multi range requests + * Default directory access to 403 when index disabled + * Support multiple index paths + * Support "If-Range" header + * Control whether to generate etags + * deps: mime@1.2.11 + +0.2.0 / 2014-01-29 +================== + + * update range-parser and fresh + +0.1.4 / 2013-08-11 +================== + + * update fresh + +0.1.3 / 2013-07-08 +================== + + * Revert "Fix fd leak" + +0.1.2 / 2013-07-03 +================== + + * Fix fd leak + +0.1.0 / 2012-08-25 +================== + + * add options parameter to send() that is passed to fs.createReadStream() [kanongil] + +0.0.4 / 2012-08-16 +================== + + * allow custom "Accept-Ranges" definition + +0.0.3 / 2012-07-16 +================== + + * fix normalization of the root directory. Closes #3 + +0.0.2 / 2012-07-09 +================== + + * add passing of req explicitly for now (YUCK) + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/send/Readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/send/Readme.md new file mode 100644 index 00000000..7fbd7796 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/send/Readme.md @@ -0,0 +1,156 @@ +# send + + Send is Connect's `static()` extracted for generalized use, a streaming static file + server supporting partial responses (Ranges), conditional-GET negotiation, high test coverage, and granular events which may be leveraged to take appropriate actions in your application or framework. + +## Installation + + $ npm install send + +## Examples + + Small: + +```js +var http = require('http'); +var send = require('send'); + +var app = http.createServer(function(req, res){ + send(req, req.url).pipe(res); +}).listen(3000); +``` + + Serving from a root directory with custom error-handling: + +```js +var http = require('http'); +var send = require('send'); +var url = require('url'); + +var app = http.createServer(function(req, res){ + // your custom error-handling logic: + function error(err) { + res.statusCode = err.status || 500; + res.end(err.message); + } + + // your custom directory handling logic: + function redirect() { + res.statusCode = 301; + res.setHeader('Location', req.url + '/'); + res.end('Redirecting to ' + req.url + '/'); + } + + // transfer arbitrary files from within + // /www/example.com/public/* + send(req, url.parse(req.url).pathname, {root: '/www/example.com/public'}) + .on('error', error) + .on('directory', redirect) + .pipe(res); +}).listen(3000); +``` + +## API + +### Options + +#### etag + + Enable or disable etag generation, defaults to true. + +#### hidden + + Enable or disable transfer of hidden files, defaults to false. + +#### index + + By default send supports "index.html" files, to disable this + set `false` or to supply a new index pass a string or an array + in preferred order. + +#### maxage + + Provide a max-age in milliseconds for http caching, defaults to 0. + +#### root + + Serve files relative to `path`. + +### Events + + - `error` an error occurred `(err)` + - `directory` a directory was requested + - `file` a file was requested `(path, stat)` + - `stream` file streaming has started `(stream)` + - `end` streaming has completed + +### .etag(bool) + + Enable or disable etag generation, defaults to true. + +### .root(dir) + + Serve files relative to `path`. Aliased as `.from(dir)`. + +### .index(paths) + + By default send supports "index.html" files, to disable this + invoke `.index(false)` or to supply a new index pass a string + or an array in preferred order. + +### .maxage(ms) + + Provide a max-age in milliseconds for http caching, defaults to 0. + +### .hidden(bool) + + Enable or disable transfer of hidden files, defaults to false. + +## Error-handling + + By default when no `error` listeners are present an automatic response will be made, otherwise you have full control over the response, aka you may show a 5xx page etc. + +## Caching + + It does _not_ perform internal caching, you should use a reverse proxy cache such + as Varnish for this, or those fancy things called CDNs. If your application is small enough that it would benefit from single-node memory caching, it's small enough that it does not need caching at all ;). + +## Debugging + + To enable `debug()` instrumentation output export __DEBUG__: + +``` +$ DEBUG=send node app +``` + +## Running tests + +``` +$ npm install +$ make test +``` + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/send/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/send/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/send/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/send/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/send/lib/send.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/send/lib/send.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/send/lib/send.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/send/lib/send.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/send/lib/utils.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/send/lib/utils.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/send/lib/utils.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/send/lib/utils.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/send/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/send/package.json new file mode 100644 index 00000000..d5e15f78 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/send/package.json @@ -0,0 +1,90 @@ +{ + "_args": [ + [ + "send@0.3.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express" + ] + ], + "_from": "send@0.3.0", + "_id": "send@0.3.0", + "_inCache": true, + "_installable": true, + "_location": "/send", + "_npmUser": { + "email": "doug@somethingdoug.com", + "name": "dougwilson" + }, + "_npmVersion": "1.4.3", + "_phantomChildren": {}, + "_requested": { + "name": "send", + "raw": "send@0.3.0", + "rawSpec": "0.3.0", + "scope": null, + "spec": "0.3.0", + "type": "version" + }, + "_requiredBy": [ + "/express", + "/serve-static" + ], + "_resolved": "https://registry.npmjs.org/send/-/send-0.3.0.tgz", + "_shasum": "9718324634806fc75bc4f8f5e51f57d9d66606e7", + "_shrinkwrap": null, + "_spec": "send@0.3.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\express", + "author": { + "email": "tj@vision-media.ca", + "name": "TJ Holowaychuk" + }, + "bugs": { + "url": "https://github.com/visionmedia/send/issues" + }, + "dependencies": { + "buffer-crc32": "0.2.1", + "debug": "0.8.0", + "fresh": "~0.2.1", + "mime": "1.2.11", + "range-parser": "~1.0.0" + }, + "description": "Better streaming static file server with Range and conditional-GET support", + "devDependencies": { + "connect": "2.x", + "mocha": "*", + "should": "*", + "supertest": "0.10.0" + }, + "directories": {}, + "dist": { + "shasum": "9718324634806fc75bc4f8f5e51f57d9d66606e7", + "tarball": "https://registry.npmjs.org/send/-/send-0.3.0.tgz" + }, + "homepage": "https://github.com/visionmedia/send", + "keywords": [ + "static", + "file", + "server" + ], + "main": "index", + "maintainers": [ + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + }, + { + "email": "doug@somethingdoug.com", + "name": "dougwilson" + } + ], + "name": "send", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/visionmedia/send.git" + }, + "scripts": { + "test": "mocha --require should --reporter spec --bail" + }, + "version": "0.3.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/.npmignore new file mode 100644 index 00000000..9daeafb9 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/.npmignore @@ -0,0 +1 @@ +test diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/.travis.yml similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/.travis.yml rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/LICENSE similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/LICENSE rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/LICENSE diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/Readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/Readme.md new file mode 100644 index 00000000..f45f283e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/Readme.md @@ -0,0 +1,42 @@ +# Serve Index + +Previously `connect.directory()`. + +Usage: + +```js +var connect = require('connect'); +var serveIndex = require('serve-index'); + +var app = connect(); + +app.use(serveIndex('public/ftp', {'icons': true})); +app.listen(); +``` + +## License + +The MIT License (MIT) + +Copyright (c) 2014 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +The [Silk](http://www.famfamfam.com/lab/icons/silk/) icons are created +by/copyright of [FAMFAMFAM](http://www.famfamfam.com/). diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/.travis.yml similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/.travis.yml rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/LICENSE similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/LICENSE rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/LICENSE diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/examples/accept.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/examples/accept.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/examples/accept.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/examples/accept.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/examples/charset.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/examples/charset.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/examples/charset.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/examples/charset.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/examples/encoding.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/examples/encoding.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/examples/encoding.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/examples/encoding.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/examples/language.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/examples/language.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/examples/language.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/examples/language.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/lib/charset.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/lib/charset.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/lib/charset.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/lib/charset.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/lib/encoding.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/lib/encoding.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/lib/encoding.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/lib/encoding.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/lib/language.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/lib/language.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/lib/language.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/lib/language.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/lib/mediaType.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/lib/mediaType.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/lib/mediaType.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/lib/mediaType.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/lib/negotiator.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/lib/negotiator.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/lib/negotiator.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/lib/negotiator.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/package.json new file mode 100644 index 00000000..1774325f --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/package.json @@ -0,0 +1,91 @@ +{ + "_args": [ + [ + "negotiator@0.4.2", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index" + ] + ], + "_from": "negotiator@0.4.2", + "_id": "negotiator@0.4.2", + "_inCache": true, + "_installable": true, + "_location": "/serve-index/negotiator", + "_npmUser": { + "email": "federomero@gmail.com", + "name": "federomero" + }, + "_npmVersion": "1.3.14", + "_phantomChildren": {}, + "_requested": { + "name": "negotiator", + "raw": "negotiator@0.4.2", + "rawSpec": "0.4.2", + "scope": null, + "spec": "0.4.2", + "type": "version" + }, + "_requiredBy": [ + "/serve-index" + ], + "_resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.2.tgz", + "_shasum": "8c43ea7e4c40ddfe40c3c0234c4ef77500b8fd37", + "_shrinkwrap": null, + "_spec": "negotiator@0.4.2", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\serve-index", + "author": { + "email": "federico.romero@outboxlabs.com", + "name": "Federico Romero" + }, + "bugs": { + "url": "https://github.com/federomero/negotiator/issues" + }, + "contributors": [ + { + "email": "i@izs.me", + "name": "Isaac Z. Schlueter", + "url": "http://blog.izs.me/" + } + ], + "dependencies": {}, + "description": "HTTP content negotiation", + "devDependencies": { + "nodeunit": "0.8.x" + }, + "directories": {}, + "dist": { + "shasum": "8c43ea7e4c40ddfe40c3c0234c4ef77500b8fd37", + "tarball": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.2.tgz" + }, + "engine": "node >= 0.6", + "engines": { + "node": "*" + }, + "homepage": "https://github.com/federomero/negotiator", + "keywords": [ + "http", + "content negotiation", + "accept", + "accept-language", + "accept-encoding", + "accept-charset" + ], + "license": "MIT", + "main": "lib/negotiator.js", + "maintainers": [ + { + "email": "federomero@gmail.com", + "name": "federomero" + } + ], + "name": "negotiator", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/federomero/negotiator.git" + }, + "scripts": { + "test": "nodeunit test" + }, + "version": "0.4.2" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/readme.md new file mode 100644 index 00000000..d982a9c1 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/readme.md @@ -0,0 +1,132 @@ +# Negotiator [![Build Status](https://travis-ci.org/federomero/negotiator.png)](https://travis-ci.org/federomero/negotiator) + +An HTTP content negotiator for node.js written in javascript. + +# Accept Negotiation + + Negotiator = require('negotiator') + + availableMediaTypes = ['text/html', 'text/plain', 'application/json'] + + // The negotiator constructor receives a request object + negotiator = new Negotiator(request) + + // Let's say Accept header is 'text/html, application/*;q=0.2, image/jpeg;q=0.8' + + negotiator.mediaTypes() + // -> ['text/html', 'image/jpeg', 'application/*'] + + negotiator.mediaTypes(availableMediaTypes) + // -> ['text/html', 'application/json'] + + negotiator.mediaType(availableMediaTypes) + // -> 'text/html' + +You can check a working example at `examples/accept.js`. + +## Methods + +`mediaTypes(availableMediaTypes)`: + +Returns an array of preferred media types ordered by priority from a list of available media types. + +`mediaType(availableMediaType)`: + +Returns the top preferred media type from a list of available media types. + +# Accept-Language Negotiation + + Negotiator = require('negotiator') + + negotiator = new Negotiator(request) + + availableLanguages = 'en', 'es', 'fr' + + // Let's say Accept-Language header is 'en;q=0.8, es, pt' + + negotiator.languages() + // -> ['es', 'pt', 'en'] + + negotiator.languages(availableLanguages) + // -> ['es', 'en'] + + language = negotiator.language(availableLanguages) + // -> 'es' + +You can check a working example at `examples/language.js`. + +## Methods + +`languages(availableLanguages)`: + +Returns an array of preferred languages ordered by priority from a list of available languages. + +`language(availableLanguages)`: + +Returns the top preferred language from a list of available languages. + +# Accept-Charset Negotiation + + Negotiator = require('negotiator') + + availableCharsets = ['utf-8', 'iso-8859-1', 'iso-8859-5'] + + negotiator = new Negotiator(request) + + // Let's say Accept-Charset header is 'utf-8, iso-8859-1;q=0.8, utf-7;q=0.2' + + negotiator.charsets() + // -> ['utf-8', 'iso-8859-1', 'utf-7'] + + negotiator.charsets(availableCharsets) + // -> ['utf-8', 'iso-8859-1'] + + negotiator.charset(availableCharsets) + // -> 'utf-8' + +You can check a working example at `examples/charset.js`. + +## Methods + +`charsets(availableCharsets)`: + +Returns an array of preferred charsets ordered by priority from a list of available charsets. + +`charset(availableCharsets)`: + +Returns the top preferred charset from a list of available charsets. + +# Accept-Encoding Negotiation + + Negotiator = require('negotiator').Negotiator + + availableEncodings = ['identity', 'gzip'] + + negotiator = new Negotiator(request) + + // Let's say Accept-Encoding header is 'gzip, compress;q=0.2, identity;q=0.5' + + negotiator.encodings() + // -> ['gzip', 'identity', 'compress'] + + negotiator.encodings(availableEncodings) + // -> ['gzip', 'identity'] + + negotiator.encoding(availableEncodings) + // -> 'gzip' + +You can check a working example at `examples/encoding.js`. + +## Methods + +`encodings(availableEncodings)`: + +Returns an array of preferred encodings ordered by priority from a list of available encodings. + +`encoding(availableEncodings)`: + +Returns the top preferred encoding from a list of available encodings. + +# License + +MIT diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/test/charset.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/test/charset.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/test/charset.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/test/charset.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/test/encoding.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/test/encoding.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/test/encoding.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/test/encoding.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/test/language.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/test/language.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/test/language.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/test/language.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/test/mediaType.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/test/mediaType.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/node_modules/negotiator/test/mediaType.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/node_modules/negotiator/test/mediaType.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/package.json new file mode 100644 index 00000000..d30a51f0 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/package.json @@ -0,0 +1,92 @@ +{ + "_args": [ + [ + "serve-index@1.0.1", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect" + ] + ], + "_from": "serve-index@1.0.1", + "_id": "serve-index@1.0.1", + "_inCache": true, + "_installable": true, + "_location": "/serve-index", + "_npmUser": { + "email": "doug@somethingdoug.com", + "name": "dougwilson" + }, + "_npmVersion": "1.3.11", + "_phantomChildren": {}, + "_requested": { + "name": "serve-index", + "raw": "serve-index@1.0.1", + "rawSpec": "1.0.1", + "scope": null, + "spec": "1.0.1", + "type": "version" + }, + "_requiredBy": [ + "/connect" + ], + "_resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.0.1.tgz", + "_shasum": "2782ee8ede6cccaae54957962c4715e8ce1921a6", + "_shrinkwrap": null, + "_spec": "serve-index@1.0.1", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect", + "author": { + "email": "doug@somethingdoug.com", + "name": "Douglas Christopher Wilson" + }, + "bugs": { + "url": "https://github.com/expressjs/serve-index/issues" + }, + "dependencies": { + "batch": "0.5.0", + "negotiator": "0.4.2" + }, + "description": "Serve directory listings", + "devDependencies": { + "connect": "^2.13.0", + "mocha": "^1.17.0", + "should": "^3.0.0", + "supertest": "~0.9.0" + }, + "directories": {}, + "dist": { + "shasum": "2782ee8ede6cccaae54957962c4715e8ce1921a6", + "tarball": "https://registry.npmjs.org/serve-index/-/serve-index-1.0.1.tgz" + }, + "engines": { + "node": ">= 0.8.0" + }, + "homepage": "https://github.com/expressjs/serve-index#readme", + "license": "MIT", + "maintainers": [ + { + "email": "doug@somethingdoug.com", + "name": "dougwilson" + }, + { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + }, + { + "email": "shtylman@gmail.com", + "name": "shtylman" + }, + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + } + ], + "name": "serve-index", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/expressjs/serve-index.git" + }, + "scripts": { + "test": "mocha --reporter spec --require should" + }, + "version": "1.0.1" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/directory.html b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/directory.html similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/directory.html rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/directory.html diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/application_xp.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/application_xp.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/application_xp.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/application_xp.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/application_xp_terminal.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/application_xp_terminal.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/application_xp_terminal.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/application_xp_terminal.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/box.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/box.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/box.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/box.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/cd.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/cd.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/cd.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/cd.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/controller.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/controller.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/controller.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/controller.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/drive.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/drive.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/drive.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/drive.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/film.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/film.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/film.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/film.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/folder.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/folder.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/folder.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/folder.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/font.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/font.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/font.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/font.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/image.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/image.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/image.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/image.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/map.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/map.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/map.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/map.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_add.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_add.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_add.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_add.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_attach.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_attach.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_attach.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_attach.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_code.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_code.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_code.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_code.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_copy.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_copy.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_copy.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_copy.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_delete.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_delete.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_delete.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_delete.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_edit.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_edit.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_edit.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_edit.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_error.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_error.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_error.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_error.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_excel.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_excel.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_excel.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_excel.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_find.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_find.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_find.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_find.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_gear.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_gear.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_gear.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_gear.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_go.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_go.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_go.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_go.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_green.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_green.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_green.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_green.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_key.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_key.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_key.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_key.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_lightning.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_lightning.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_lightning.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_lightning.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_link.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_link.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_link.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_link.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_paintbrush.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_paintbrush.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_paintbrush.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_paintbrush.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_paste.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_paste.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_paste.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_paste.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_red.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_red.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_red.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_red.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_refresh.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_refresh.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_refresh.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_refresh.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_save.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_save.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_save.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_save.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_acrobat.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_acrobat.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_acrobat.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_acrobat.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_actionscript.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_actionscript.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_actionscript.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_actionscript.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_add.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_add.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_add.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_add.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_c.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_c.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_c.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_c.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_camera.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_camera.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_camera.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_camera.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_cd.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_cd.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_cd.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_cd.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_code.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_code.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_code.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_code.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_code_red.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_code_red.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_code_red.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_code_red.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_coldfusion.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_coldfusion.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_coldfusion.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_coldfusion.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_compressed.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_compressed.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_compressed.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_compressed.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_copy.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_copy.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_copy.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_copy.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_cplusplus.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_cplusplus.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_cplusplus.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_cplusplus.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_csharp.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_csharp.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_csharp.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_csharp.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_cup.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_cup.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_cup.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_cup.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_database.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_database.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_database.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_database.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_delete.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_delete.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_delete.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_delete.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_dvd.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_dvd.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_dvd.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_dvd.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_edit.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_edit.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_edit.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_edit.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_error.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_error.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_error.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_error.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_excel.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_excel.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_excel.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_excel.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_find.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_find.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_find.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_find.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_flash.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_flash.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_flash.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_flash.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_freehand.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_freehand.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_freehand.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_freehand.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_gear.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_gear.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_gear.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_gear.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_get.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_get.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_get.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_get.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_go.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_go.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_go.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_go.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_h.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_h.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_h.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_h.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_horizontal.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_horizontal.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_horizontal.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_horizontal.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_key.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_key.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_key.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_key.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_lightning.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_lightning.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_lightning.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_lightning.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_link.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_link.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_link.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_link.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_magnify.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_magnify.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_magnify.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_magnify.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_medal.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_medal.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_medal.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_medal.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_office.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_office.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_office.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_office.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_paint.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_paint.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_paint.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_paint.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_paintbrush.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_paintbrush.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_paintbrush.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_paintbrush.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_paste.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_paste.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_paste.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_paste.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_php.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_php.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_php.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_php.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_picture.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_picture.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_picture.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_picture.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_powerpoint.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_powerpoint.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_powerpoint.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_powerpoint.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_put.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_put.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_put.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_put.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_ruby.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_ruby.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_ruby.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_ruby.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_stack.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_stack.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_stack.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_stack.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_star.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_star.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_star.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_star.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_swoosh.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_swoosh.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_swoosh.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_swoosh.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_text.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_text.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_text.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_text.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_text_width.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_text_width.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_text_width.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_text_width.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_tux.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_tux.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_tux.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_tux.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_vector.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_vector.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_vector.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_vector.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_visualstudio.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_visualstudio.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_visualstudio.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_visualstudio.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_width.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_width.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_width.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_width.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_word.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_word.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_word.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_word.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_world.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_world.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_world.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_world.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_wrench.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_wrench.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_wrench.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_wrench.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_zip.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_zip.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_white_zip.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_white_zip.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_word.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_word.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_word.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_word.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_world.png b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_world.png similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/icons/page_world.png rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/icons/page_world.png diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/style.css b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/style.css similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-index/public/style.css rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-index/public/style.css diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-static/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-static/.npmignore new file mode 100644 index 00000000..9daeafb9 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-static/.npmignore @@ -0,0 +1 @@ +test diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-static/.travis.yml b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-static/.travis.yml similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-static/.travis.yml rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-static/.travis.yml diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-static/History.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-static/History.md new file mode 100644 index 00000000..442e1d3e --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-static/History.md @@ -0,0 +1,31 @@ +1.1.0 / 2014-04-24 +================== + + * Accept options directly to `send` module + * deps: send@0.3.0 + +1.0.4 / 2014-04-07 +================== + + * Resolve relative paths at middleware setup + * Use parseurl to parse the URL from request + +1.0.3 / 2014-03-20 +================== + + * Do not rely on connect-like environments + +1.0.2 / 2014-03-06 +================== + + * deps: send@0.2.0 + +1.0.1 / 2014-03-05 +================== + + * Add mime export for back-compat + +1.0.0 / 2014-03-05 +================== + + * Genesis from `connect` diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-static/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-static/LICENSE similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-static/LICENSE rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-static/LICENSE diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-static/Readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-static/Readme.md new file mode 100644 index 00000000..af1caaac --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-static/Readme.md @@ -0,0 +1,41 @@ +# Serve Static + +Previously `connect.static()`. + +[![Build Status](https://travis-ci.org/expressjs/serve-static.svg?branch=master)](https://travis-ci.org/expressjs/serve-static) + +Usage: + +```js +var connect = require('connect'); +var serveStatic = require('serve-static'); + +var app = connect(); + +app.use(serveStatic('public/ftp', {'index': ['default.html', 'default.htm']})); +app.listen(); +``` + +## License + +The MIT License (MIT) + +Copyright (c) 2014 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-static/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-static/index.js similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/serve-static/index.js rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-static/index.js diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-static/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-static/package.json new file mode 100644 index 00000000..fec81539 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/serve-static/package.json @@ -0,0 +1,96 @@ +{ + "_args": [ + [ + "serve-static@1.1.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect" + ] + ], + "_from": "serve-static@1.1.0", + "_id": "serve-static@1.1.0", + "_inCache": true, + "_installable": true, + "_location": "/serve-static", + "_npmUser": { + "email": "doug@somethingdoug.com", + "name": "dougwilson" + }, + "_npmVersion": "1.4.3", + "_phantomChildren": {}, + "_requested": { + "name": "serve-static", + "raw": "serve-static@1.1.0", + "rawSpec": "1.1.0", + "scope": null, + "spec": "1.1.0", + "type": "version" + }, + "_requiredBy": [ + "/connect" + ], + "_resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.1.0.tgz", + "_shasum": "454dfa05bb3ddd4e701a8915b83a278aa91c5643", + "_shrinkwrap": null, + "_spec": "serve-static@1.1.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\connect", + "author": { + "email": "doug@somethingdoug.com", + "name": "Douglas Christopher Wilson" + }, + "bugs": { + "url": "https://github.com/expressjs/serve-static/issues" + }, + "dependencies": { + "parseurl": "1.0.1", + "send": "0.3.0" + }, + "description": "Serve static files", + "devDependencies": { + "connect": "~2.14.1", + "mocha": "~1.18.2", + "should": "~3.3.0", + "supertest": "~0.11.0" + }, + "directories": {}, + "dist": { + "shasum": "454dfa05bb3ddd4e701a8915b83a278aa91c5643", + "tarball": "https://registry.npmjs.org/serve-static/-/serve-static-1.1.0.tgz" + }, + "engines": { + "node": ">= 0.8.0" + }, + "homepage": "https://github.com/expressjs/serve-static", + "license": "MIT", + "maintainers": [ + { + "email": "doug@somethingdoug.com", + "name": "dougwilson" + }, + { + "email": "jonathanrichardong@gmail.com", + "name": "jongleberry" + }, + { + "email": "shtylman@gmail.com", + "name": "shtylman" + }, + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + }, + { + "email": "mscdex@mscdex.net", + "name": "mscdex" + } + ], + "name": "serve-static", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/expressjs/serve-static.git" + }, + "scripts": { + "test": "mocha --reporter spec --require should" + }, + "version": "1.1.0" +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/setimmediate/LICENSE.txt b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/setimmediate/LICENSE.txt similarity index 100% rename from src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/express/node_modules/connect/node_modules/setimmediate/LICENSE.txt rename to src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/setimmediate/LICENSE.txt diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/setimmediate/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/setimmediate/README.md new file mode 100644 index 00000000..2091264c --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/setimmediate/README.md @@ -0,0 +1,96 @@ + + Testling-CI badge showing browser compliance + + +# setImmediate.js +**A NobleJS production** + +## Introduction + +**setImmediate.js** is a highly cross-browser implementation of the `setImmediate` and `clearImmediate` APIs, currently +a [W3C draft spec][spec] from the Web Performance Working Group. `setImmediate` allows scripts to yield to the browser, +executing a given operation asynchronously, in a manner that is typically more efficient and consumes less power than +the usual `setTimeout(..., 0)` pattern. + +setImmediate.js runs at “full speed” in the following browsers and environments, using various clever tricks: + + * Internet Explorer 6+ + * Firefox 3+ + * WebKit + * Opera 9.5+ + * Node.js + * Web workers in browsers that support `MessageChannel`, which I can't find solid info on. + +In all other browsers we fall back to using `setTimeout`, so it's always safe to use. + +## The Tricks + +### `process.nextTick` + +In Node.js versions below 0.9, `setImmediate` is not available, but [`process.nextTick`][nextTIck] is, so we use it to +shim support for a global `setImmediate`. In Node.js 0.9 and above, `setImmediate` is available. + +Note that we check for *actual* Node.js environments, not emulated ones like those produced by browserify or similar. +Such emulated environments often already include a `process.nextTick` shim that's not as browser-compatible as +setImmediate.js. + +### `postMessage` + +In Firefox 3+, Internet Explorer 9+, all modern WebKit browsers, and Opera 9.5+, [`postMessage`][postMessage] is +available and provides a good way to queue tasks on the event loop. It's quite the abuse, using a cross-document +messaging protocol within the same document simply to get access to the event loop task queue, but until there are +native implementations, this is the best option. + +Note that Internet Explorer 8 includes a synchronous version of `postMessage`. We detect this, or any other such +synchronous implementation, and fall back to another trick. + +### `MessageChannel` + +Unfortunately, `postMessage` has completely different semantics inside web workers, and so cannot be used there. So we +turn to [`MessageChannel`][MessageChannel], which has worse browser support, but does work inside a web worker. + +### ` - - - -

    This example will upload an entire directory tree to the node.js server via a fast and persistent WebSocket connection.

    -

    Note that the example is Chrome only for now.

    -

    - Upload status: -
    Please select a directory to upload.
    - - diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/fileapi/public/uploader.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/fileapi/public/uploader.js deleted file mode 100644 index 0c34a7fa..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/fileapi/public/uploader.js +++ /dev/null @@ -1,55 +0,0 @@ -function Uploader(url, cb) { - this.ws = new WebSocket(url); - if (cb) this.ws.onopen = cb; - this.sendQueue = []; - this.sending = null; - this.sendCallback = null; - this.ondone = null; - var self = this; - this.ws.onmessage = function(event) { - var data = JSON.parse(event.data); - if (data.event == 'complete') { - if (data.path != self.sending.path) { - self.sendQueue = []; - self.sending = null; - self.sendCallback = null; - throw new Error('Got message for wrong file!'); - } - self.sending = null; - var callback = self.sendCallback; - self.sendCallback = null; - if (callback) callback(); - if (self.sendQueue.length === 0 && self.ondone) self.ondone(null); - if (self.sendQueue.length > 0) { - var args = self.sendQueue.pop(); - setTimeout(function() { self.sendFile.apply(self, args); }, 0); - } - } - else if (data.event == 'error') { - self.sendQueue = []; - self.sending = null; - var callback = self.sendCallback; - self.sendCallback = null; - var error = new Error('Server reported send error for file ' + data.path); - if (callback) callback(error); - if (self.ondone) self.ondone(error); - } - } -} - -Uploader.prototype.sendFile = function(file, cb) { - if (this.ws.readyState != WebSocket.OPEN) throw new Error('Not connected'); - if (this.sending) { - this.sendQueue.push(arguments); - return; - } - var fileData = { name: file.name, path: file.webkitRelativePath }; - this.sending = fileData; - this.sendCallback = cb; - this.ws.send(JSON.stringify(fileData)); - this.ws.send(file); -} - -Uploader.prototype.close = function() { - this.ws.close(); -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/fileapi/server.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/fileapi/server.js deleted file mode 100644 index badfeba7..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/fileapi/server.js +++ /dev/null @@ -1,103 +0,0 @@ -var WebSocketServer = require('../../').Server - , express = require('express') - , fs = require('fs') - , http = require('http') - , util = require('util') - , path = require('path') - , app = express.createServer() - , events = require('events') - , ansi = require('ansi') - , cursor = ansi(process.stdout); - -function BandwidthSampler(ws, interval) { - interval = interval || 2000; - var previousByteCount = 0; - var self = this; - var intervalId = setInterval(function() { - var byteCount = ws.bytesReceived; - var bytesPerSec = (byteCount - previousByteCount) / (interval / 1000); - previousByteCount = byteCount; - self.emit('sample', bytesPerSec); - }, interval); - ws.on('close', function() { - clearInterval(intervalId); - }); -} -util.inherits(BandwidthSampler, events.EventEmitter); - -function makePathForFile(filePath, prefix, cb) { - if (typeof cb !== 'function') throw new Error('callback is required'); - filePath = path.dirname(path.normalize(filePath)).replace(/^(\/|\\)+/, ''); - var pieces = filePath.split(/(\\|\/)/); - var incrementalPath = prefix; - function step(error) { - if (error) return cb(error); - if (pieces.length == 0) return cb(null, incrementalPath); - incrementalPath += '/' + pieces.shift(); - fs.exists(incrementalPath, function(exists) { - if (!exists) fs.mkdir(incrementalPath, step); - else process.nextTick(step); - }); - } - step(); -} - -cursor.eraseData(2).goto(1, 1); -app.use(express.static(__dirname + '/public')); - -var clientId = 0; -var wss = new WebSocketServer({server: app}); -wss.on('connection', function(ws) { - var thisId = ++clientId; - cursor.goto(1, 4 + thisId).eraseLine(); - console.log('Client #%d connected', thisId); - - var sampler = new BandwidthSampler(ws); - sampler.on('sample', function(bps) { - cursor.goto(1, 4 + thisId).eraseLine(); - console.log('WebSocket #%d incoming bandwidth: %d MB/s', thisId, Math.round(bps / (1024*1024))); - }); - - var filesReceived = 0; - var currentFile = null; - ws.on('message', function(data, flags) { - if (!flags.binary) { - currentFile = JSON.parse(data); - // note: a real-world app would want to sanity check the data - } - else { - if (currentFile == null) return; - makePathForFile(currentFile.path, __dirname + '/uploaded', function(error, path) { - if (error) { - console.log(error); - ws.send(JSON.stringify({event: 'error', path: currentFile.path, message: error.message})); - return; - } - fs.writeFile(path + '/' + currentFile.name, data, function(error) { - ++filesReceived; - // console.log('received %d bytes long file, %s', data.length, currentFile.path); - ws.send(JSON.stringify({event: 'complete', path: currentFile.path})); - currentFile = null; - }); - }); - } - }); - - ws.on('close', function() { - cursor.goto(1, 4 + thisId).eraseLine(); - console.log('Client #%d disconnected. %d files received.', thisId, filesReceived); - }); - - ws.on('error', function(e) { - cursor.goto(1, 4 + thisId).eraseLine(); - console.log('Client #%d error: %s', thisId, e.message); - }); -}); - -fs.mkdir(__dirname + '/uploaded', function(error) { - // ignore errors, most likely means directory exists - console.log('Uploaded files will be saved to %s/uploaded.', __dirname); - console.log('Remember to wipe this directory if you upload lots and lots.'); - app.listen(8080); - console.log('Listening on http://localhost:8080'); -}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/serverstats-express_3/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/serverstats-express_3/package.json deleted file mode 100644 index 99722c42..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/serverstats-express_3/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "author": "", - "name": "serverstats", - "version": "0.0.0", - "repository": { - "type": "git", - "url": "git://github.com/einaros/ws.git" - }, - "engines": { - "node": ">0.4.0" - }, - "dependencies": { - "express": "~3.0.0" - }, - "devDependencies": {}, - "optionalDependencies": {} -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/serverstats-express_3/public/index.html b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/serverstats-express_3/public/index.html deleted file mode 100644 index 24d84e12..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/serverstats-express_3/public/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - Server Stats
    - RSS:

    - Heap total:

    - Heap used:

    - - diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/serverstats-express_3/server.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/serverstats-express_3/server.js deleted file mode 100644 index 88bbc9eb..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/serverstats-express_3/server.js +++ /dev/null @@ -1,21 +0,0 @@ -var WebSocketServer = require('../../').Server - , http = require('http') - , express = require('express') - , app = express(); - -app.use(express.static(__dirname + '/public')); - -var server = http.createServer(app); -server.listen(8080); - -var wss = new WebSocketServer({server: server}); -wss.on('connection', function(ws) { - var id = setInterval(function() { - ws.send(JSON.stringify(process.memoryUsage()), function() { /* ignore errors */ }); - }, 100); - console.log('started client interval'); - ws.on('close', function() { - console.log('stopping client interval'); - clearInterval(id); - }); -}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/serverstats/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/serverstats/package.json deleted file mode 100644 index 65c900ab..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/serverstats/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "author": "", - "name": "serverstats", - "version": "0.0.0", - "repository": { - "type": "git", - "url": "git://github.com/einaros/ws.git" - }, - "engines": { - "node": ">0.4.0" - }, - "dependencies": { - "express": "2.x" - }, - "devDependencies": {}, - "optionalDependencies": {} -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/serverstats/public/index.html b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/serverstats/public/index.html deleted file mode 100644 index 24d84e12..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/serverstats/public/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - Server Stats
    - RSS:

    - Heap total:

    - Heap used:

    - - diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/serverstats/server.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/serverstats/server.js deleted file mode 100644 index 0bbce368..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/serverstats/server.js +++ /dev/null @@ -1,19 +0,0 @@ -var WebSocketServer = require('../../').Server - , http = require('http') - , express = require('express') - , app = express.createServer(); - -app.use(express.static(__dirname + '/public')); -app.listen(8080); - -var wss = new WebSocketServer({server: app}); -wss.on('connection', function(ws) { - var id = setInterval(function() { - ws.send(JSON.stringify(process.memoryUsage()), function() { /* ignore errors */ }); - }, 100); - console.log('started client interval'); - ws.on('close', function() { - console.log('stopping client interval'); - clearInterval(id); - }) -}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/ssl.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/ssl.js deleted file mode 100644 index bf1bf530..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/examples/ssl.js +++ /dev/null @@ -1,59 +0,0 @@ - -(function(){ - - "use strict"; - - var fs = require('fs'); - - // you'll probably load configuration from config - var cfg = { - ssl: true, - port: 8080, - ssl_key: '/path/to/you/ssl.key', - ssl_cert: '/path/to/you/ssl.crt' - }; - - var httpServ = ( cfg.ssl ) ? require('https') : require('http'); - - var WebSocketServer = require('../').Server; - - var app = null; - - // dummy request processing - var processRequest = function( req, res ) { - - res.writeHead(200); - res.end("All glory to WebSockets!\n"); - }; - - if ( cfg.ssl ) { - - app = httpServ.createServer({ - - // providing server with SSL key/cert - key: fs.readFileSync( cfg.ssl_key ), - cert: fs.readFileSync( cfg.ssl_cert ) - - }, processRequest ).listen( cfg.port ); - - } else { - - app = httpServ.createServer( processRequest ).listen( cfg.port ); - } - - // passing or reference to web server so WS would knew port and SSL capabilities - var wss = new WebSocketServer( { server: app } ); - - - wss.on( 'connection', function ( wsConnect ) { - - wsConnect.on( 'message', function ( message ) { - - console.log( message ); - - }); - - }); - - -}()); \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/Receiver.hixie.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/Receiver.hixie.js index f54ad966..a8e41c47 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/Receiver.hixie.js +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/Receiver.hixie.js @@ -53,7 +53,7 @@ Receiver.prototype.add = function(data) { } if (data[0] === 0x80) { self.messageEnd = 0; - self.state = BINARYLENGTH; + self.state = BINARYLENGTH; data = data.slice(1); } else { @@ -83,7 +83,7 @@ Receiver.prototype.add = function(data) { if (self.state === BINARYBODY) { var dataleft = self.messageEnd - self.spanLength; if (data.length >= dataleft) { - // consume the whole buffer to finish the frame + // consume the whole buffer to finish the frame self.buffers.push(data); self.spanLength += dataleft; self.messageEnd = dataleft; @@ -102,7 +102,7 @@ Receiver.prototype.add = function(data) { else self.spanLength += data.length; } while(data) data = doAdd(); -} +}; /** * Releases all resources used by the receiver. @@ -114,7 +114,7 @@ Receiver.prototype.cleanup = function() { this.dead = true; this.state = EMPTY; this.buffers = []; -} +}; /** * Process buffered data. @@ -140,7 +140,7 @@ Receiver.prototype.parse = function() { this.reset(); this.ontext(output.toString('utf8')); return tail; -} +}; /** * Handles an error @@ -152,7 +152,7 @@ Receiver.prototype.error = function (reason, terminate) { this.reset(); this.onerror(reason, terminate); return this; -} +}; /** * Reset parser state @@ -166,7 +166,7 @@ Receiver.prototype.reset = function (reason) { this.buffers = []; this.messageEnd = -1; this.spanLength = 0; -} +}; /** * Internal api diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/Receiver.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/Receiver.js index 2752726f..004cd32c 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/Receiver.js +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/Receiver.js @@ -10,12 +10,6 @@ var util = require('util') , BufferPool = require('./BufferPool') , bufferUtil = require('./BufferUtil').BufferUtil; -/** - * Node version 0.4 and 0.6 compatibility - */ - -var isNodeV4 = /^v0\.4/.test(process.version); - /** * HyBi Receiver implementation */ @@ -63,7 +57,7 @@ function Receiver () { this.onclose = function() {}; this.onping = function() {}; this.onpong = function() {}; -}; +} module.exports = Receiver; @@ -92,7 +86,7 @@ Receiver.prototype.add = function(data) { this.expectOffset = 0; this.expectHandler.call(this, bufferForHandler); } -} +}; /** * Releases all resources used by the receiver. @@ -116,7 +110,7 @@ Receiver.prototype.cleanup = function() { this.onclose = null; this.onping = null; this.onpong = null; -} +}; /** * Waits for a certain amount of header bytes to be available, then fires a callback. @@ -140,7 +134,7 @@ Receiver.prototype.expectHeader = function(length, handler) { this.expectOffset += read; toRead -= read; } -} +}; /** * Waits for a certain amount of data bytes to be available, then fires a callback. @@ -164,7 +158,7 @@ Receiver.prototype.expectData = function(length, handler) { this.expectOffset += read; toRead -= read; } -} +}; /** * Allocates memory from the buffer pool. @@ -172,9 +166,9 @@ Receiver.prototype.expectData = function(length, handler) { * @api private */ -Receiver.prototype.allocateFromPool = !isNodeV4 - ? function(length, isFragmented) { return (isFragmented ? this.fragmentedBufferPool : this.unfragmentedBufferPool).get(length); } - : function(length) { return new Buffer(length); }; +Receiver.prototype.allocateFromPool = function(length, isFragmented) { + return (isFragmented ? this.fragmentedBufferPool : this.unfragmentedBufferPool).get(length); +}; /** * Start processing a new packet. @@ -216,7 +210,7 @@ Receiver.prototype.processPacket = function (data) { else { handler.start.call(this, data); } -} +}; /** * Endprocessing a packet. @@ -238,7 +232,7 @@ Receiver.prototype.endPacket = function() { this.state.opcode = this.state.activeFragmentedOperation != null ? this.state.activeFragmentedOperation : 0; this.state.masked = false; this.expectHeader(2, this.processPacket); -} +}; /** * Reset the parser state. @@ -262,7 +256,7 @@ Receiver.prototype.reset = function() { this.expectHandler = null; this.overflow = []; this.currentMessage = []; -} +}; /** * Unmask received data. @@ -274,7 +268,7 @@ Receiver.prototype.unmask = function (mask, buf, binary) { if (mask != null && buf != null) bufferUtil.unmask(buf, mask); if (binary) return buf; return buf != null ? buf.toString('utf8') : ''; -} +}; /** * Concatenates a list of buffers. @@ -288,7 +282,7 @@ Receiver.prototype.concatBuffers = function(buffers) { var mergedBuffer = new Buffer(length); bufferUtil.merge(mergedBuffer, buffers); return mergedBuffer; -} +}; /** * Handles an error @@ -300,7 +294,7 @@ Receiver.prototype.error = function (reason, protocolErrorCode) { this.reset(); this.onerror(reason, protocolErrorCode); return this; -} +}; /** * Buffer utilities diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/Sender.hixie.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/Sender.hixie.js index 1754afb6..c715dbdc 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/Sender.hixie.js +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/Sender.hixie.js @@ -34,12 +34,7 @@ util.inherits(Sender, events.EventEmitter); Sender.prototype.send = function(data, options, cb) { if (this.isClosed) return; -/* - if (options && options.binary) { - this.error('hixie websockets do not support binary'); - return; - } -*/ + var isString = typeof data == 'string' , length = isString ? Buffer.byteLength(data) : data.length , lengthbytes = (length > 127) ? 2 : 1 // assume less than 2**14 bytes @@ -52,7 +47,7 @@ Sender.prototype.send = function(data, options, cb) { if (options && options.binary) { buffer.write('\x80', 'binary'); // assume length less than 2**14 bytes - if (lengthbytes > 1) + if (lengthbytes > 1) buffer.write(String.fromCharCode(128+length/128), offset++, 'binary'); buffer.write(String.fromCharCode(length&0x7f), offset++, 'binary'); } else @@ -65,7 +60,7 @@ Sender.prototype.send = function(data, options, cb) { if (writeEndMarker) { if (options && options.binary) { // sending binary, not writing end marker - } else + } else buffer.write('\xff', offset + length, 'binary'); this.continuationFrame = false; } @@ -76,7 +71,7 @@ Sender.prototype.send = function(data, options, cb) { } catch (e) { this.error(e.toString()); } -} +}; /** * Sends a close instruction to the remote party. @@ -93,7 +88,7 @@ Sender.prototype.close = function(code, data, mask, cb) { } catch (e) { this.error(e.toString()); } -} +}; /** * Sends a ping message to the remote party. Not available for hixie. @@ -101,7 +96,7 @@ Sender.prototype.close = function(code, data, mask, cb) { * @api public */ -Sender.prototype.ping = function(data, options) {} +Sender.prototype.ping = function(data, options) {}; /** * Sends a pong message to the remote party. Not available for hixie. @@ -109,7 +104,7 @@ Sender.prototype.ping = function(data, options) {} * @api public */ -Sender.prototype.pong = function(data, options) {} +Sender.prototype.pong = function(data, options) {}; /** * Handles an error @@ -120,4 +115,4 @@ Sender.prototype.pong = function(data, options) {} Sender.prototype.error = function (reason) { this.emit('error', reason); return this; -} +}; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/Sender.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/Sender.js index fc3b4378..bc6ea730 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/Sender.js +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/Sender.js @@ -41,7 +41,7 @@ Sender.prototype.close = function(code, data, mask) { writeUInt16BE.call(dataBuffer, code, 0); if (dataBuffer.length > 2) dataBuffer.write(data, 2); this.frameAndSend(0x8, dataBuffer, true, mask); -} +}; /** * Sends a ping message to the remote party. @@ -52,7 +52,7 @@ Sender.prototype.close = function(code, data, mask) { Sender.prototype.ping = function(data, options) { var mask = options && options.mask; this.frameAndSend(0x9, data || '', true, mask); -} +}; /** * Sends a pong message to the remote party. @@ -63,7 +63,7 @@ Sender.prototype.ping = function(data, options) { Sender.prototype.pong = function(data, options) { var mask = options && options.mask; this.frameAndSend(0xa, data || '', true, mask); -} +}; /** * Sends text or binary data to the remote party. @@ -79,7 +79,7 @@ Sender.prototype.send = function(data, options, cb) { else this.firstFragment = false; if (finalFragment) this.firstFragment = true this.frameAndSend(opcode, data, finalFragment, mask, cb); -} +}; /** * Frames and sends a piece of data according to the HyBi WebSocket protocol. @@ -189,7 +189,7 @@ Sender.prototype.frameAndSend = function(opcode, data, finalFragment, maskData, } } } -} +}; module.exports = Sender; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/WebSocket.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/WebSocket.js index cce3cb41..8c304ebb 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/WebSocket.js +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/WebSocket.js @@ -10,7 +10,7 @@ var util = require('util') , https = require('https') , crypto = require('crypto') , url = require('url') - , fs = require('fs') + , stream = require('stream') , Options = require('options') , Sender = require('./Sender') , Receiver = require('./Receiver') @@ -29,12 +29,6 @@ var protocolVersion = 13; var closeTimeout = 30000; // Allow 5 seconds to terminate the connection cleanly -/** - * Node version 0.4 and 0.6 compatibility - */ - -var isNodeV4 = /^v0\.4/.test(process.version); - /** * WebSocket implementation */ @@ -207,7 +201,8 @@ WebSocket.prototype.send = function(data, options, cb) { data instanceof Float64Array); } if (typeof options.mask == 'undefined') options.mask = !this._isServer; - if (data instanceof fs.ReadStream) { + var readable = typeof stream.Readable == 'function' ? stream.Readable : stream.Stream; + if (data instanceof readable) { startQueue(this); var self = this; sendStream(this, data, options, function(error) { @@ -498,14 +493,6 @@ function initAsClient(address, protocols, options) { var expectedServerKey = shasum.digest('base64'); var agent = options.value.agent; - // node<=v0.4.x compatibility - if (!agent && isNodeV4) { - isNodeV4 = true; - agent = new httpObj.Agent({ - host: serverUrl.hostname, - port: port - }); - } var headerHost = serverUrl.hostname; // Append port number to Host and Origin header, only if specified in the url and non-default @@ -557,10 +544,6 @@ function initAsClient(address, protocols, options) { || options.isDefinedAndNonNull('ciphers') || options.isDefinedAndNonNull('rejectUnauthorized')) { - if (isNodeV4) { - throw new Error('Client side certificates are not supported on Node 0.4.x'); - } - if (options.isDefinedAndNonNull('pfx')) requestOptions.pfx = options.value.pfx; if (options.isDefinedAndNonNull('key')) requestOptions.key = options.value.key; if (options.isDefinedAndNonNull('passphrase')) requestOptions.passphrase = options.value.passphrase; @@ -575,10 +558,7 @@ function initAsClient(address, protocols, options) { } } - if (isNodeV4) { - requestOptions.path = (serverUrl.pathname || '/') + (serverUrl.search || ''); - } - else requestOptions.path = serverUrl.path || '/'; + requestOptions.path = serverUrl.path || '/'; if (agent) { requestOptions.agent = agent; @@ -595,27 +575,32 @@ function initAsClient(address, protocols, options) { var self = this; var req = httpObj.request(requestOptions); - (isNodeV4 ? agent : req).on('error', function(error) { + req.on('error', function(error) { self.emit('error', error); cleanupWebsocketResources.call(this, error); }); - (isNodeV4 ? agent : req).once('response', function(res) { - var error = new Error('unexpected server response (' + res.statusCode + ')'); - self.emit('error', error); + + req.once('response', function(res) { + if (!self.emit('unexpected-response', req, res)) { + var error = new Error('unexpected server response (' + res.statusCode + ')'); + req.abort(); + self.emit('error', error); + } cleanupWebsocketResources.call(this, error); }); - (isNodeV4 ? agent : req).once('upgrade', function(res, socket, upgradeHead) { + + req.once('upgrade', function(res, socket, upgradeHead) { if (self.readyState == WebSocket.CLOSED) { // client closed before server accepted connection self.emit('close'); - removeAllListeners(self); + self.removeAllListeners(); socket.end(); return; } var serverKey = res.headers['sec-websocket-accept']; if (typeof serverKey == 'undefined' || serverKey !== expectedServerKey) { self.emit('error', 'invalid server key'); - removeAllListeners(self); + self.removeAllListeners(); socket.end(); return; } @@ -632,7 +617,7 @@ function initAsClient(address, protocols, options) { } if (protError) { self.emit('error', protError); - removeAllListeners(self); + self.removeAllListeners(); socket.end(); return; } else if (serverProt) { @@ -642,7 +627,7 @@ function initAsClient(address, protocols, options) { establishConnection.call(self, Receiver, Sender, socket, upgradeHead); // perform cleanup on http resources - removeAllListeners(isNodeV4 ? agent : req); + req.removeAllListeners(); req = null; agent = null; }); @@ -782,7 +767,7 @@ function cleanupWebsocketResources(error) { if (emitClose) this.emit('close', this._closeCode || 1000, this._closeMessage || ''); if (this._socket) { - removeAllListeners(this._socket); + this._socket.removeAllListeners(); // catch all socket error after removing all standard handlers var socket = this._socket; this._socket.on('error', function() { @@ -796,23 +781,14 @@ function cleanupWebsocketResources(error) { this._socket = null; } if (this._sender) { - removeAllListeners(this._sender); + this._sender.removeAllListeners(); this._sender = null; } if (this._receiver) { this._receiver.cleanup(); this._receiver = null; } - removeAllListeners(this); + this.removeAllListeners(); this.on('error', function() {}); // catch all errors after this delete this._queue; } - -function removeAllListeners(instance) { - if (isNodeV4) { - // node v4 doesn't *actually* remove all listeners globally, - // so we do that instead - instance._events = {}; - } - else instance.removeAllListeners(); -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/WebSocketServer.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/WebSocketServer.js index da759f8b..5cbd195b 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/WebSocketServer.js +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/lib/WebSocketServer.js @@ -8,7 +8,6 @@ var util = require('util') , events = require('events') , http = require('http') , crypto = require('crypto') - , url = require('url') , Options = require('options') , WebSocket = require('./WebSocket') , tls = require('tls') @@ -43,7 +42,7 @@ function WebSocketServer(options, callback) { res.end('Not implemented'); }); this._server.listen(options.value.port, options.value.host, callback); - this._closeServer = function() { self._server.close(); }; + this._closeServer = function() { if (self._server) self._server.close(); }; } else if (options.value.server) { this._server = options.value.server; @@ -273,8 +272,11 @@ function handleHybiUpgrade(req, socket, upgradeHead, cb) { req: req }; if (this.options.verifyClient.length == 2) { - this.options.verifyClient(info, function(result) { - if (!result) abortConnection(socket, 401, 'Unauthorized') + this.options.verifyClient(info, function(result, code, name) { + if (typeof code === 'undefined') code = 401; + if (typeof name === 'undefined') name = http.STATUS_CODES[code]; + + if (!result) abortConnection(socket, code, name); else completeHybiUpgrade1(); }); return; @@ -428,8 +430,11 @@ function handleHixieUpgrade(req, socket, upgradeHead, cb) { }; if (this.options.verifyClient.length == 2) { var self = this; - this.options.verifyClient(info, function(result) { - if (!result) abortConnection(socket, 401, 'Unauthorized') + this.options.verifyClient(info, function(result, code, name) { + if (typeof code === 'undefined') code = 401; + if (typeof name === 'undefined') name = http.STATUS_CODES[code]; + + if (!result) abortConnection(socket, code, name); else onClientVerified.apply(self); }); return; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/commander/Readme.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/commander/Readme.md new file mode 100644 index 00000000..d1644012 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/commander/Readme.md @@ -0,0 +1,195 @@ +# Commander.js + + The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander). + + [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js) + +## Installation + + $ npm install commander + +## Option parsing + + Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('commander'); + +program + .version('0.0.1') + .option('-p, --peppers', 'Add peppers') + .option('-P, --pineapple', 'Add pineapple') + .option('-b, --bbq', 'Add bbq sauce') + .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') + .parse(process.argv); + +console.log('you ordered a pizza with:'); +if (program.peppers) console.log(' - peppers'); +if (program.pineapple) console.log(' - pineapple'); +if (program.bbq) console.log(' - bbq'); +console.log(' - %s cheese', program.cheese); +``` + + Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. + +## Automated --help + + The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free: + +``` + $ ./examples/pizza --help + + Usage: pizza [options] + + Options: + + -V, --version output the version number + -p, --peppers Add peppers + -P, --pineapple Add pineapple + -b, --bbq Add bbq sauce + -c, --cheese Add the specified type of cheese [marble] + -h, --help output usage information + +``` + +## Coercion + +```js +function range(val) { + return val.split('..').map(Number); +} + +function list(val) { + return val.split(','); +} + +program + .version('0.0.1') + .usage('[options] ') + .option('-i, --integer ', 'An integer argument', parseInt) + .option('-f, --float ', 'A float argument', parseFloat) + .option('-r, --range ..', 'A range', range) + .option('-l, --list ', 'A list', list) + .option('-o, --optional [value]', 'An optional value') + .parse(process.argv); + +console.log(' int: %j', program.integer); +console.log(' float: %j', program.float); +console.log(' optional: %j', program.optional); +program.range = program.range || []; +console.log(' range: %j..%j', program.range[0], program.range[1]); +console.log(' list: %j', program.list); +console.log(' args: %j', program.args); +``` + +## Custom help + + You can display arbitrary `-h, --help` information + by listening for "--help". Commander will automatically + exit once you are done so that the remainder of your program + does not execute causing undesired behaviours, for example + in the following executable "stuff" will not output when + `--help` is used. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('../'); + +function list(val) { + return val.split(',').map(Number); +} + +program + .version('0.0.1') + .option('-f, --foo', 'enable some foo') + .option('-b, --bar', 'enable some bar') + .option('-B, --baz', 'enable some baz'); + +// must be before .parse() since +// node's emit() is immediate + +program.on('--help', function(){ + console.log(' Examples:'); + console.log(''); + console.log(' $ custom-help --help'); + console.log(' $ custom-help -h'); + console.log(''); +}); + +program.parse(process.argv); + +console.log('stuff'); +``` + +yielding the following help output: + +``` + +Usage: custom-help [options] + +Options: + + -h, --help output usage information + -V, --version output the version number + -f, --foo enable some foo + -b, --bar enable some bar + -B, --baz enable some baz + +Examples: + + $ custom-help --help + $ custom-help -h + +``` + +## .outputHelp() + + Output help information without exiting. + +## .help() + + Output help information and exit immediately. + +## Links + + - [API documentation](http://visionmedia.github.com/commander.js/) + - [ascii tables](https://github.com/LearnBoost/cli-table) + - [progress bars](https://github.com/visionmedia/node-progress) + - [more progress bars](https://github.com/substack/node-multimeter) + - [examples](https://github.com/visionmedia/commander.js/tree/master/examples) + +## License + +(The MIT License) + +Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/commander/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/commander/index.js index 06ec1e4b..790a7519 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/commander/index.js +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/commander/index.js @@ -1,2 +1,851 @@ -module.exports = require('./lib/commander'); \ No newline at end of file +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter; +var spawn = require('child_process').spawn; +var fs = require('fs'); +var exists = fs.existsSync; +var path = require('path'); +var dirname = path.dirname; +var basename = path.basename; + +/** + * Expose the root command. + */ + +exports = module.exports = new Command; + +/** + * Expose `Command`. + */ + +exports.Command = Command; + +/** + * Expose `Option`. + */ + +exports.Option = Option; + +/** + * Initialize a new `Option` with the given `flags` and `description`. + * + * @param {String} flags + * @param {String} description + * @api public + */ + +function Option(flags, description) { + this.flags = flags; + this.required = ~flags.indexOf('<'); + this.optional = ~flags.indexOf('['); + this.bool = !~flags.indexOf('-no-'); + flags = flags.split(/[ ,|]+/); + if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift(); + this.long = flags.shift(); + this.description = description || ''; +} + +/** + * Return option name. + * + * @return {String} + * @api private + */ + +Option.prototype.name = function(){ + return this.long + .replace('--', '') + .replace('no-', ''); +}; + +/** + * Check if `arg` matches the short or long flag. + * + * @param {String} arg + * @return {Boolean} + * @api private + */ + +Option.prototype.is = function(arg){ + return arg == this.short + || arg == this.long; +}; + +/** + * Initialize a new `Command`. + * + * @param {String} name + * @api public + */ + +function Command(name) { + this.commands = []; + this.options = []; + this._execs = []; + this._args = []; + this._name = name; +} + +/** + * Inherit from `EventEmitter.prototype`. + */ + +Command.prototype.__proto__ = EventEmitter.prototype; + +/** + * Add command `name`. + * + * The `.action()` callback is invoked when the + * command `name` is specified via __ARGV__, + * and the remaining arguments are applied to the + * function for access. + * + * When the `name` is "*" an un-matched command + * will be passed as the first arg, followed by + * the rest of __ARGV__ remaining. + * + * Examples: + * + * program + * .version('0.0.1') + * .option('-C, --chdir ', 'change the working directory') + * .option('-c, --config ', 'set config path. defaults to ./deploy.conf') + * .option('-T, --no-tests', 'ignore test hook') + * + * program + * .command('setup') + * .description('run remote setup commands') + * .action(function(){ + * console.log('setup'); + * }); + * + * program + * .command('exec ') + * .description('run the given remote command') + * .action(function(cmd){ + * console.log('exec "%s"', cmd); + * }); + * + * program + * .command('*') + * .description('deploy the given env') + * .action(function(env){ + * console.log('deploying "%s"', env); + * }); + * + * program.parse(process.argv); + * + * @param {String} name + * @param {String} [desc] + * @return {Command} the new command + * @api public + */ + +Command.prototype.command = function(name, desc){ + var args = name.split(/ +/); + var cmd = new Command(args.shift()); + if (desc) cmd.description(desc); + if (desc) this.executables = true; + if (desc) this._execs[cmd._name] = true; + this.commands.push(cmd); + cmd.parseExpectedArgs(args); + cmd.parent = this; + if (desc) return this; + return cmd; +}; + +/** + * Add an implicit `help [cmd]` subcommand + * which invokes `--help` for the given command. + * + * @api private + */ + +Command.prototype.addImplicitHelpCommand = function() { + this.command('help [cmd]', 'display help for [cmd]'); +}; + +/** + * Parse expected `args`. + * + * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. + * + * @param {Array} args + * @return {Command} for chaining + * @api public + */ + +Command.prototype.parseExpectedArgs = function(args){ + if (!args.length) return; + var self = this; + args.forEach(function(arg){ + switch (arg[0]) { + case '<': + self._args.push({ required: true, name: arg.slice(1, -1) }); + break; + case '[': + self._args.push({ required: false, name: arg.slice(1, -1) }); + break; + } + }); + return this; +}; + +/** + * Register callback `fn` for the command. + * + * Examples: + * + * program + * .command('help') + * .description('display verbose help') + * .action(function(){ + * // output help here + * }); + * + * @param {Function} fn + * @return {Command} for chaining + * @api public + */ + +Command.prototype.action = function(fn){ + var self = this; + this.parent.on(this._name, function(args, unknown){ + // Parse any so-far unknown options + unknown = unknown || []; + var parsed = self.parseOptions(unknown); + + // Output help if necessary + outputHelpIfNecessary(self, parsed.unknown); + + // If there are still any unknown options, then we simply + // die, unless someone asked for help, in which case we give it + // to them, and then we die. + if (parsed.unknown.length > 0) { + self.unknownOption(parsed.unknown[0]); + } + + // Leftover arguments need to be pushed back. Fixes issue #56 + if (parsed.args.length) args = parsed.args.concat(args); + + self._args.forEach(function(arg, i){ + if (arg.required && null == args[i]) { + self.missingArgument(arg.name); + } + }); + + // Always append ourselves to the end of the arguments, + // to make sure we match the number of arguments the user + // expects + if (self._args.length) { + args[self._args.length] = self; + } else { + args.push(self); + } + + fn.apply(this, args); + }); + return this; +}; + +/** + * Define option with `flags`, `description` and optional + * coercion `fn`. + * + * The `flags` string should contain both the short and long flags, + * separated by comma, a pipe or space. The following are all valid + * all will output this way when `--help` is used. + * + * "-p, --pepper" + * "-p|--pepper" + * "-p --pepper" + * + * Examples: + * + * // simple boolean defaulting to false + * program.option('-p, --pepper', 'add pepper'); + * + * --pepper + * program.pepper + * // => Boolean + * + * // simple boolean defaulting to false + * program.option('-C, --no-cheese', 'remove cheese'); + * + * program.cheese + * // => true + * + * --no-cheese + * program.cheese + * // => true + * + * // required argument + * program.option('-C, --chdir ', 'change the working directory'); + * + * --chdir /tmp + * program.chdir + * // => "/tmp" + * + * // optional argument + * program.option('-c, --cheese [type]', 'add cheese [marble]'); + * + * @param {String} flags + * @param {String} description + * @param {Function|Mixed} fn or default + * @param {Mixed} defaultValue + * @return {Command} for chaining + * @api public + */ + +Command.prototype.option = function(flags, description, fn, defaultValue){ + var self = this + , option = new Option(flags, description) + , oname = option.name() + , name = camelcase(oname); + + // default as 3rd arg + if ('function' != typeof fn) defaultValue = fn, fn = null; + + // preassign default value only for --no-*, [optional], or + if (false == option.bool || option.optional || option.required) { + // when --no-* we make sure default is true + if (false == option.bool) defaultValue = true; + // preassign only if we have a default + if (undefined !== defaultValue) self[name] = defaultValue; + } + + // register the option + this.options.push(option); + + // when it's passed assign the value + // and conditionally invoke the callback + this.on(oname, function(val){ + // coercion + if (null != val && fn) val = fn(val); + + // unassigned or bool + if ('boolean' == typeof self[name] || 'undefined' == typeof self[name]) { + // if no value, bool true, and we have a default, then use it! + if (null == val) { + self[name] = option.bool + ? defaultValue || true + : false; + } else { + self[name] = val; + } + } else if (null !== val) { + // reassign + self[name] = val; + } + }); + + return this; +}; + +/** + * Parse `argv`, settings options and invoking commands when defined. + * + * @param {Array} argv + * @return {Command} for chaining + * @api public + */ + +Command.prototype.parse = function(argv){ + // implicit help + if (this.executables) this.addImplicitHelpCommand(); + + // store raw args + this.rawArgs = argv; + + // guess name + this._name = this._name || basename(argv[1]); + + // process argv + var parsed = this.parseOptions(this.normalize(argv.slice(2))); + var args = this.args = parsed.args; + + var result = this.parseArgs(this.args, parsed.unknown); + + // executable sub-commands + var name = result.args[0]; + if (this._execs[name]) return this.executeSubCommand(argv, args, parsed.unknown); + + return result; +}; + +/** + * Execute a sub-command executable. + * + * @param {Array} argv + * @param {Array} args + * @param {Array} unknown + * @api private + */ + +Command.prototype.executeSubCommand = function(argv, args, unknown) { + args = args.concat(unknown); + + if (!args.length) this.help(); + if ('help' == args[0] && 1 == args.length) this.help(); + + // --help + if ('help' == args[0]) { + args[0] = args[1]; + args[1] = '--help'; + } + + // executable + var dir = dirname(argv[1]); + var bin = basename(argv[1]) + '-' + args[0]; + + // check for ./ first + var local = path.join(dir, bin); + + // run it + args = args.slice(1); + var proc = spawn(local, args, { stdio: 'inherit', customFds: [0, 1, 2] }); + proc.on('error', function(err){ + if (err.code == "ENOENT") { + console.error('\n %s(1) does not exist, try --help\n', bin); + } else if (err.code == "EACCES") { + console.error('\n %s(1) not executable. try chmod or run with root\n', bin); + } + }); + + this.runningCommand = proc; +}; + +/** + * Normalize `args`, splitting joined short flags. For example + * the arg "-abc" is equivalent to "-a -b -c". + * This also normalizes equal sign and splits "--abc=def" into "--abc def". + * + * @param {Array} args + * @return {Array} + * @api private + */ + +Command.prototype.normalize = function(args){ + var ret = [] + , arg + , lastOpt + , index; + + for (var i = 0, len = args.length; i < len; ++i) { + arg = args[i]; + i > 0 && (lastOpt = this.optionFor(args[i-1])); + + if (lastOpt && lastOpt.required) { + ret.push(arg); + } else if (arg.length > 1 && '-' == arg[0] && '-' != arg[1]) { + arg.slice(1).split('').forEach(function(c){ + ret.push('-' + c); + }); + } else if (/^--/.test(arg) && ~(index = arg.indexOf('='))) { + ret.push(arg.slice(0, index), arg.slice(index + 1)); + } else { + ret.push(arg); + } + } + + return ret; +}; + +/** + * Parse command `args`. + * + * When listener(s) are available those + * callbacks are invoked, otherwise the "*" + * event is emitted and those actions are invoked. + * + * @param {Array} args + * @return {Command} for chaining + * @api private + */ + +Command.prototype.parseArgs = function(args, unknown){ + var cmds = this.commands + , len = cmds.length + , name; + + if (args.length) { + name = args[0]; + if (this.listeners(name).length) { + this.emit(args.shift(), args, unknown); + } else { + this.emit('*', args); + } + } else { + outputHelpIfNecessary(this, unknown); + + // If there were no args and we have unknown options, + // then they are extraneous and we need to error. + if (unknown.length > 0) { + this.unknownOption(unknown[0]); + } + } + + return this; +}; + +/** + * Return an option matching `arg` if any. + * + * @param {String} arg + * @return {Option} + * @api private + */ + +Command.prototype.optionFor = function(arg){ + for (var i = 0, len = this.options.length; i < len; ++i) { + if (this.options[i].is(arg)) { + return this.options[i]; + } + } +}; + +/** + * Parse options from `argv` returning `argv` + * void of these options. + * + * @param {Array} argv + * @return {Array} + * @api public + */ + +Command.prototype.parseOptions = function(argv){ + var args = [] + , len = argv.length + , literal + , option + , arg; + + var unknownOptions = []; + + // parse options + for (var i = 0; i < len; ++i) { + arg = argv[i]; + + // literal args after -- + if ('--' == arg) { + literal = true; + continue; + } + + if (literal) { + args.push(arg); + continue; + } + + // find matching Option + option = this.optionFor(arg); + + // option is defined + if (option) { + // requires arg + if (option.required) { + arg = argv[++i]; + if (null == arg) return this.optionMissingArgument(option); + this.emit(option.name(), arg); + // optional arg + } else if (option.optional) { + arg = argv[i+1]; + if (null == arg || ('-' == arg[0] && '-' != arg)) { + arg = null; + } else { + ++i; + } + this.emit(option.name(), arg); + // bool + } else { + this.emit(option.name()); + } + continue; + } + + // looks like an option + if (arg.length > 1 && '-' == arg[0]) { + unknownOptions.push(arg); + + // If the next argument looks like it might be + // an argument for this option, we pass it on. + // If it isn't, then it'll simply be ignored + if (argv[i+1] && '-' != argv[i+1][0]) { + unknownOptions.push(argv[++i]); + } + continue; + } + + // arg + args.push(arg); + } + + return { args: args, unknown: unknownOptions }; +}; + +/** + * Argument `name` is missing. + * + * @param {String} name + * @api private + */ + +Command.prototype.missingArgument = function(name){ + console.error(); + console.error(" error: missing required argument `%s'", name); + console.error(); + process.exit(1); +}; + +/** + * `Option` is missing an argument, but received `flag` or nothing. + * + * @param {String} option + * @param {String} flag + * @api private + */ + +Command.prototype.optionMissingArgument = function(option, flag){ + console.error(); + if (flag) { + console.error(" error: option `%s' argument missing, got `%s'", option.flags, flag); + } else { + console.error(" error: option `%s' argument missing", option.flags); + } + console.error(); + process.exit(1); +}; + +/** + * Unknown option `flag`. + * + * @param {String} flag + * @api private + */ + +Command.prototype.unknownOption = function(flag){ + console.error(); + console.error(" error: unknown option `%s'", flag); + console.error(); + process.exit(1); +}; + + +/** + * Set the program version to `str`. + * + * This method auto-registers the "-V, --version" flag + * which will print the version number when passed. + * + * @param {String} str + * @param {String} flags + * @return {Command} for chaining + * @api public + */ + +Command.prototype.version = function(str, flags){ + if (0 == arguments.length) return this._version; + this._version = str; + flags = flags || '-V, --version'; + this.option(flags, 'output the version number'); + this.on('version', function(){ + console.log(str); + process.exit(0); + }); + return this; +}; + +/** + * Set the description `str`. + * + * @param {String} str + * @return {String|Command} + * @api public + */ + +Command.prototype.description = function(str){ + if (0 == arguments.length) return this._description; + this._description = str; + return this; +}; + +/** + * Set / get the command usage `str`. + * + * @param {String} str + * @return {String|Command} + * @api public + */ + +Command.prototype.usage = function(str){ + var args = this._args.map(function(arg){ + return arg.required + ? '<' + arg.name + '>' + : '[' + arg.name + ']'; + }); + + var usage = '[options' + + (this.commands.length ? '] [command' : '') + + ']' + + (this._args.length ? ' ' + args : ''); + + if (0 == arguments.length) return this._usage || usage; + this._usage = str; + + return this; +}; + +/** + * Return the largest option length. + * + * @return {Number} + * @api private + */ + +Command.prototype.largestOptionLength = function(){ + return this.options.reduce(function(max, option){ + return Math.max(max, option.flags.length); + }, 0); +}; + +/** + * Return help for options. + * + * @return {String} + * @api private + */ + +Command.prototype.optionHelp = function(){ + var width = this.largestOptionLength(); + + // Prepend the help information + return [pad('-h, --help', width) + ' ' + 'output usage information'] + .concat(this.options.map(function(option){ + return pad(option.flags, width) + + ' ' + option.description; + })) + .join('\n'); +}; + +/** + * Return command help documentation. + * + * @return {String} + * @api private + */ + +Command.prototype.commandHelp = function(){ + if (!this.commands.length) return ''; + return [ + '' + , ' Commands:' + , '' + , this.commands.map(function(cmd){ + var args = cmd._args.map(function(arg){ + return arg.required + ? '<' + arg.name + '>' + : '[' + arg.name + ']'; + }).join(' '); + + return pad(cmd._name + + (cmd.options.length + ? ' [options]' + : '') + ' ' + args, 22) + + (cmd.description() + ? ' ' + cmd.description() + : ''); + }).join('\n').replace(/^/gm, ' ') + , '' + ].join('\n'); +}; + +/** + * Return program help documentation. + * + * @return {String} + * @api private + */ + +Command.prototype.helpInformation = function(){ + return [ + '' + , ' Usage: ' + this._name + ' ' + this.usage() + , '' + this.commandHelp() + , ' Options:' + , '' + , '' + this.optionHelp().replace(/^/gm, ' ') + , '' + , '' + ].join('\n'); +}; + +/** + * Output help information for this command + * + * @api public + */ + +Command.prototype.outputHelp = function(){ + process.stdout.write(this.helpInformation()); + this.emit('--help'); +}; + +/** + * Output help information and exit. + * + * @api public + */ + +Command.prototype.help = function(){ + this.outputHelp(); + process.exit(); +}; + +/** + * Camel-case the given `flag` + * + * @param {String} flag + * @return {String} + * @api private + */ + +function camelcase(flag) { + return flag.split('-').reduce(function(str, word){ + return str + word[0].toUpperCase() + word.slice(1); + }); +} + +/** + * Pad `str` to `width`. + * + * @param {String} str + * @param {Number} width + * @return {String} + * @api private + */ + +function pad(str, width) { + var len = Math.max(0, width - str.length); + return str + Array(len + 1).join(' '); +} + +/** + * Output help information if necessary + * + * @param {Command} command to output help for + * @param {Array} array of options to search for -h or --help + * @api private + */ + +function outputHelpIfNecessary(cmd, options) { + options = options || []; + for (var i = 0; i < options.length; i++) { + if (options[i] == '--help' || options[i] == '-h') { + cmd.outputHelp(); + process.exit(0); + } + } +} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/commander/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/commander/package.json index 9936f7d7..752a1952 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/commander/package.json +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/commander/package.json @@ -1,7 +1,61 @@ { - "name": "commander", - "version": "0.6.1", + "_args": [ + [ + "commander@~2.1.0", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws" + ] + ], + "_from": "commander@>=2.1.0 <2.2.0", + "_id": "commander@2.1.0", + "_inCache": true, + "_installable": true, + "_location": "/ws/commander", + "_npmUser": { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + }, + "_npmVersion": "1.3.14", + "_phantomChildren": {}, + "_requested": { + "name": "commander", + "raw": "commander@~2.1.0", + "rawSpec": "~2.1.0", + "scope": null, + "spec": ">=2.1.0 <2.2.0", + "type": "range" + }, + "_requiredBy": [ + "/ws" + ], + "_resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", + "_shasum": "d121bbae860d9992a3d517ba96f56588e47c6781", + "_shrinkwrap": null, + "_spec": "commander@~2.1.0", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector\\node_modules\\ws", + "author": { + "email": "tj@vision-media.ca", + "name": "TJ Holowaychuk" + }, + "bugs": { + "url": "https://github.com/visionmedia/commander.js/issues" + }, + "dependencies": {}, "description": "the complete solution for node.js command-line programs", + "devDependencies": { + "should": ">= 0.0.1" + }, + "directories": {}, + "dist": { + "shasum": "d121bbae860d9992a3d517ba96f56588e47c6781", + "tarball": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz" + }, + "engines": { + "node": ">= 0.6.x" + }, + "files": [ + "index.js" + ], + "homepage": "https://github.com/visionmedia/commander.js", "keywords": [ "command", "option", @@ -9,31 +63,22 @@ "prompt", "stdin" ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, + "main": "index", + "maintainers": [ + { + "email": "tj@vision-media.ca", + "name": "tjholowaychuk" + } + ], + "name": "commander", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", "repository": { "type": "git", - "url": "https://github.com/visionmedia/commander.js.git" - }, - "dependencies": {}, - "devDependencies": { - "should": ">= 0.0.1" + "url": "git+https://github.com/visionmedia/commander.js.git" }, "scripts": { "test": "make test" }, - "main": "index", - "engines": { - "node": ">= 0.4.x" - }, - "readme": "# Commander.js\n\n The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander).\n\n [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)\n\n## Installation\n\n $ npm install commander\n\n## Option parsing\n\n Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('commander');\n\nprogram\n .version('0.0.1')\n .option('-p, --peppers', 'Add peppers')\n .option('-P, --pineapple', 'Add pineapple')\n .option('-b, --bbq', 'Add bbq sauce')\n .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')\n .parse(process.argv);\n\nconsole.log('you ordered a pizza with:');\nif (program.peppers) console.log(' - peppers');\nif (program.pineapple) console.log(' - pineappe');\nif (program.bbq) console.log(' - bbq');\nconsole.log(' - %s cheese', program.cheese);\n```\n\n Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as \"--template-engine\" are camel-cased, becoming `program.templateEngine` etc.\n\n## Automated --help\n\n The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:\n\n``` \n $ ./examples/pizza --help\n\n Usage: pizza [options]\n\n Options:\n\n -V, --version output the version number\n -p, --peppers Add peppers\n -P, --pineapple Add pineappe\n -b, --bbq Add bbq sauce\n -c, --cheese Add the specified type of cheese [marble]\n -h, --help output usage information\n\n```\n\n## Coercion\n\n```js\nfunction range(val) {\n return val.split('..').map(Number);\n}\n\nfunction list(val) {\n return val.split(',');\n}\n\nprogram\n .version('0.0.1')\n .usage('[options] ')\n .option('-i, --integer ', 'An integer argument', parseInt)\n .option('-f, --float ', 'A float argument', parseFloat)\n .option('-r, --range ..', 'A range', range)\n .option('-l, --list ', 'A list', list)\n .option('-o, --optional [value]', 'An optional value')\n .parse(process.argv);\n\nconsole.log(' int: %j', program.integer);\nconsole.log(' float: %j', program.float);\nconsole.log(' optional: %j', program.optional);\nprogram.range = program.range || [];\nconsole.log(' range: %j..%j', program.range[0], program.range[1]);\nconsole.log(' list: %j', program.list);\nconsole.log(' args: %j', program.args);\n```\n\n## Custom help\n\n You can display arbitrary `-h, --help` information\n by listening for \"--help\". Commander will automatically\n exit once you are done so that the remainder of your program\n does not execute causing undesired behaviours, for example\n in the following executable \"stuff\" will not output when\n `--help` is used.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('../');\n\nfunction list(val) {\n return val.split(',').map(Number);\n}\n\nprogram\n .version('0.0.1')\n .option('-f, --foo', 'enable some foo')\n .option('-b, --bar', 'enable some bar')\n .option('-B, --baz', 'enable some baz');\n\n// must be before .parse() since\n// node's emit() is immediate\n\nprogram.on('--help', function(){\n console.log(' Examples:');\n console.log('');\n console.log(' $ custom-help --help');\n console.log(' $ custom-help -h');\n console.log('');\n});\n\nprogram.parse(process.argv);\n\nconsole.log('stuff');\n```\n\nyielding the following help output:\n\n```\n\nUsage: custom-help [options]\n\nOptions:\n\n -h, --help output usage information\n -V, --version output the version number\n -f, --foo enable some foo\n -b, --bar enable some bar\n -B, --baz enable some baz\n\nExamples:\n\n $ custom-help --help\n $ custom-help -h\n\n```\n\n## .prompt(msg, fn)\n\n Single-line prompt:\n\n```js\nprogram.prompt('name: ', function(name){\n console.log('hi %s', name);\n});\n```\n\n Multi-line prompt:\n\n```js\nprogram.prompt('description:', function(name){\n console.log('hi %s', name);\n});\n```\n\n Coercion:\n\n```js\nprogram.prompt('Age: ', Number, function(age){\n console.log('age: %j', age);\n});\n```\n\n```js\nprogram.prompt('Birthdate: ', Date, function(date){\n console.log('date: %s', date);\n});\n```\n\n## .password(msg[, mask], fn)\n\nPrompt for password without echoing:\n\n```js\nprogram.password('Password: ', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\nPrompt for password with mask char \"*\":\n\n```js\nprogram.password('Password: ', '*', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\n## .confirm(msg, fn)\n\n Confirm with the given `msg`:\n\n```js\nprogram.confirm('continue? ', function(ok){\n console.log(' got %j', ok);\n});\n```\n\n## .choose(list, fn)\n\n Let the user choose from a `list`:\n\n```js\nvar list = ['tobi', 'loki', 'jane', 'manny', 'luna'];\n\nconsole.log('Choose the coolest pet:');\nprogram.choose(list, function(i){\n console.log('you chose %d \"%s\"', i, list[i]);\n});\n```\n\n## Links\n\n - [API documentation](http://visionmedia.github.com/commander.js/)\n - [ascii tables](https://github.com/LearnBoost/cli-table)\n - [progress bars](https://github.com/visionmedia/node-progress)\n - [more progress bars](https://github.com/substack/node-multimeter)\n - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/commander.js/issues" - }, - "homepage": "https://github.com/visionmedia/commander.js", - "_id": "commander@0.6.1", - "_from": "commander@~0.6.1" + "version": "2.1.0" } diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/nan/.index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/nan/.index.js deleted file mode 100644 index 68da1f34..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/nan/.index.js +++ /dev/null @@ -1 +0,0 @@ -//noop \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/nan/LICENSE b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/nan/LICENSE deleted file mode 100644 index 352c2874..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/nan/LICENSE +++ /dev/null @@ -1,43 +0,0 @@ -Copyright 2013, NAN contributors: - - Rod Vagg - - Benjamin Byholm - - Trevor Norris -(the "Original Author") -All rights reserved. - -MIT +no-false-attribs License - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -Distributions of all or part of the Software intended to be used -by the recipients as they would use the unmodified Software, -containing modifications that substantially alter, remove, or -disable functionality of the Software, outside of the documented -configuration mechanisms provided by the Software, shall be -modified such that the Original Author's bug reporting email -addresses and urls are either replaced with the contact information -of the parties responsible for the changes, or removed entirely. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - - -Except where noted, this license applies to any and all software -programs and associated documentation files created by the -Original Author, when distributed with the Software. diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/nan/nan.h b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/nan/nan.h deleted file mode 100644 index b3eb02db..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/nan/nan.h +++ /dev/null @@ -1,884 +0,0 @@ -/********************************************************************************** - * NAN - Native Abstractions for Node.js - * - * Copyright (c) 2013 NAN contributors: - * - Rod Vagg - * - Benjamin Byholm - * - Trevor Norris - * - * MIT +no-false-attribs License - * - * Version 0.3.2 (current Node unstable: 0.11.6, Node stable: 0.10.17) - * - * ChangeLog: - * * 0.3.2 Aug 30 2013 - * - Fix missing scope declaration in GetFromPersistent() and SaveToPersistent - * in NanAsyncWorker - * - * * 0.3.1 Aug 20 2013 - * - fix "not all control paths return a value" compile warning on some platforms - * - * * 0.3.0 Aug 19 2013 - * - Made NAN work with NPM - * - Lots of fixes to NanFromV8String, pulling in features from new Node core - * - Changed node::encoding to Nan::Encoding in NanFromV8String to unify the API - * - Added optional error number argument for NanThrowError() - * - Added NanInitPersistent() - * - Added NanReturnNull() and NanReturnEmptyString() - * - Added NanLocker and NanUnlocker - * - Added missing scopes - * - Made sure to clear disposed Persistent handles - * - Changed NanAsyncWorker to allocate error messages on the heap - * - Changed NanThrowError(Local) to NanThrowError(Handle) - * - Fixed leak in NanAsyncWorker when errmsg is used - * - * * 0.2.2 Aug 5 2013 - * - Fixed usage of undefined variable with node::BASE64 in NanFromV8String() - * - * * 0.2.1 Aug 5 2013 - * - Fixed 0.8 breakage, node::BUFFER encoding type not available in 0.8 for - * NanFromV8String() - * - * * 0.2.0 Aug 5 2013 - * - Added NAN_PROPERTY_GETTER, NAN_PROPERTY_SETTER, NAN_PROPERTY_ENUMERATOR, - * NAN_PROPERTY_DELETER, NAN_PROPERTY_QUERY - * - Extracted _NAN_METHOD_ARGS, _NAN_GETTER_ARGS, _NAN_SETTER_ARGS, - * _NAN_PROPERTY_GETTER_ARGS, _NAN_PROPERTY_SETTER_ARGS, - * _NAN_PROPERTY_ENUMERATOR_ARGS, _NAN_PROPERTY_DELETER_ARGS, - * _NAN_PROPERTY_QUERY_ARGS - * - Added NanGetInternalFieldPointer, NanSetInternalFieldPointer - * - Added NAN_WEAK_CALLBACK, NAN_WEAK_CALLBACK_OBJECT, - * NAN_WEAK_CALLBACK_DATA, NanMakeWeak - * - Renamed THROW_ERROR to _NAN_THROW_ERROR - * - Added NanNewBufferHandle(char*, size_t, node::smalloc::FreeCallback, void*) - * - Added NanBufferUse(char*, uint32_t) - * - Added NanNewContextHandle(v8::ExtensionConfiguration*, - * v8::Handle, v8::Handle) - * - Fixed broken NanCallback#GetFunction() - * - Added optional encoding and size arguments to NanFromV8String() - * - Added NanGetPointerSafe() and NanSetPointerSafe() - * - Added initial test suite (to be expanded) - * - Allow NanUInt32OptionValue to convert any Number object - * - * * 0.1.0 Jul 21 2013 - * - Added `NAN_GETTER`, `NAN_SETTER` - * - Added `NanThrowError` with single Local argument - * - Added `NanNewBufferHandle` with single uint32_t argument - * - Added `NanHasInstance(Persistent&, Handle)` - * - Added `Local NanCallback#GetFunction()` - * - Added `NanCallback#Call(int, Local[])` - * - Deprecated `NanCallback#Run(int, Local[])` in favour of Call - * - * See https://github.com/rvagg/nan for the latest update to this file - **********************************************************************************/ - -#ifndef NAN_H -#define NAN_H - -#include -#include -#include - -// some generic helpers - -template static inline bool NanSetPointerSafe(T *var, T val) { - if (var) { - *var = val; - return true; - } else { - return false; - } -} - -template static inline T NanGetPointerSafe( - T *var, - T fallback = reinterpret_cast(0)) { - if (var) { - return *var; - } else { - return fallback; - } -} - -#define NanSymbol(value) v8::String::NewSymbol(value) - -static inline bool NanBooleanOptionValue( - v8::Local optionsObj - , v8::Handle opt, bool def) { - - if (def) { - return optionsObj.IsEmpty() - || !optionsObj->Has(opt) - || optionsObj->Get(opt)->BooleanValue(); - } else { - return !optionsObj.IsEmpty() - && optionsObj->Has(opt) - && optionsObj->Get(opt)->BooleanValue(); - } -} - -static inline bool NanBooleanOptionValue( - v8::Local optionsObj - , v8::Handle opt) { - return NanBooleanOptionValue(optionsObj, opt, false); -} - -static inline uint32_t NanUInt32OptionValue( - v8::Local optionsObj - , v8::Handle opt - , uint32_t def) { - - return !optionsObj.IsEmpty() - && optionsObj->Has(opt) - && optionsObj->Get(opt)->IsNumber() - ? optionsObj->Get(opt)->Uint32Value() - : def; -} - -#if (NODE_MODULE_VERSION > 0x000B) -// Node 0.11+ (0.11.3 and below won't compile with these) - -static v8::Isolate* nan_isolate = v8::Isolate::GetCurrent(); - -# define _NAN_METHOD_ARGS const v8::FunctionCallbackInfo& args -# define NAN_METHOD(name) void name(_NAN_METHOD_ARGS) -# define _NAN_GETTER_ARGS const v8::PropertyCallbackInfo& args -# define NAN_GETTER(name) \ - void name(v8::Local property, _NAN_GETTER_ARGS) -# define _NAN_SETTER_ARGS const v8::PropertyCallbackInfo& args -# define NAN_SETTER(name) \ - void name( \ - v8::Local property \ - , v8::Local value \ - , _NAN_SETTER_ARGS) -# define _NAN_PROPERTY_GETTER_ARGS \ - const v8::PropertyCallbackInfo& args -# define NAN_PROPERTY_GETTER(name) \ - void name(v8::Local property \ - , _NAN_PROPERTY_GETTER_ARGS) -# define _NAN_PROPERTY_SETTER_ARGS \ - const v8::PropertyCallbackInfo& args -# define NAN_PROPERTY_SETTER(name) \ - void name(v8::Local property \ - , v8::Local value \ - , _NAN_PROPERTY_SETTER_ARGS) -# define _NAN_PROPERTY_ENUMERATOR_ARGS \ - const v8::PropertyCallbackInfo& args -# define NAN_PROPERTY_ENUMERATOR(name) \ - void name(_NAN_PROPERTY_ENUMERATOR_ARGS) -# define _NAN_PROPERTY_DELETER_ARGS \ - const v8::PropertyCallbackInfo& args -# define NAN_PROPERTY_DELETER(name) \ - void name( \ - v8::Local property \ - , _NAN_PROPERTY_DELETER_ARGS) -# define _NAN_PROPERTY_QUERY_ARGS \ - const v8::PropertyCallbackInfo& args -# define NAN_PROPERTY_QUERY(name) \ - void name(v8::Local property, _NAN_PROPERTY_QUERY_ARGS) -# define NanGetInternalFieldPointer(object, index) \ - object->GetAlignedPointerFromInternalField(index) -# define NanSetInternalFieldPointer(object, index, value) \ - object->SetAlignedPointerInInternalField(index, value) - -# define NAN_WEAK_CALLBACK(type, name) \ - void name( \ - v8::Isolate* isolate, \ - v8::Persistent* object, \ - type data) -# define NAN_WEAK_CALLBACK_OBJECT (*object) -# define NAN_WEAK_CALLBACK_DATA(type) ((type) data) - -# define NanScope() v8::HandleScope scope(nan_isolate) -# define NanLocker() v8::Locker locker(nan_isolate) -# define NanUnlocker() v8::Unlocker unlocker(nan_isolate) -# define NanReturnValue(value) return args.GetReturnValue().Set(value) -# define NanReturnUndefined() return -# define NanReturnNull() return args.GetReturnValue().SetNull() -# define NanReturnEmptyString() return args.GetReturnValue().SetEmptyString() -# define NanAssignPersistent(type, handle, obj) handle.Reset(nan_isolate, obj) -# define NanInitPersistent(type, name, obj) \ - v8::Persistent name(nan_isolate, obj) -# define NanObjectWrapHandle(obj) obj->handle() -# define NanMakeWeak(handle, parameter, callback) \ - handle.MakeWeak(nan_isolate, parameter, callback) - -# define _NAN_THROW_ERROR(fun, errmsg) \ - do { \ - NanScope(); \ - v8::ThrowException(fun(v8::String::New(errmsg))); \ - } while (0); - - inline static void NanThrowError(const char* errmsg) { - _NAN_THROW_ERROR(v8::Exception::Error, errmsg); - } - - inline static void NanThrowError(v8::Handle error) { - NanScope(); - v8::ThrowException(error); - } - - inline static void NanThrowError(const char *msg, const int errorNumber) { - v8::Local err = v8::Exception::Error(v8::String::New(msg)); - v8::Local obj = err.As(); - obj->Set(v8::String::New("code"), v8::Int32::New(errorNumber)); - NanThrowError(err); - } - - inline static void NanThrowTypeError(const char* errmsg) { - _NAN_THROW_ERROR(v8::Exception::TypeError, errmsg); - } - - inline static void NanThrowRangeError(const char* errmsg) { - _NAN_THROW_ERROR(v8::Exception::RangeError, errmsg); - } - - template static inline void NanDispose(v8::Persistent &handle) { - handle.Dispose(nan_isolate); - handle.Clear(); - } - - static inline v8::Local NanNewBufferHandle ( - char *data, - size_t length, - node::smalloc::FreeCallback callback, - void *hint) { - return node::Buffer::New(data, length, callback, hint); - } - - static inline v8::Local NanNewBufferHandle ( - char *data, uint32_t size) { - return node::Buffer::New(data, size); - } - - static inline v8::Local NanNewBufferHandle (uint32_t size) { - return node::Buffer::New(size); - } - - static inline v8::Local NanBufferUse(char* data, uint32_t size) { - return node::Buffer::Use(data, size); - } - - template - inline v8::Local NanPersistentToLocal( - const v8::Persistent& persistent) { - if (persistent.IsWeak()) { - return v8::Local::New(nan_isolate, persistent); - } else { - return *reinterpret_cast*>( - const_cast*>(&persistent)); - } - } - - inline bool NanHasInstance( - v8::Persistent& function_template - , v8::Handle value) { - return NanPersistentToLocal(function_template)->HasInstance(value); - } - - static inline v8::Local NanNewContextHandle( - v8::ExtensionConfiguration* extensions = NULL, - v8::Handle tmpl = v8::Handle(), - v8::Handle obj = v8::Handle()) { - return v8::Local::New(nan_isolate, v8::Context::New( - nan_isolate, extensions, tmpl, obj)); - } - -#else -// Node 0.8 and 0.10 - -# define _NAN_METHOD_ARGS const v8::Arguments& args -# define NAN_METHOD(name) v8::Handle name(_NAN_METHOD_ARGS) -# define _NAN_GETTER_ARGS const v8::AccessorInfo &args -# define NAN_GETTER(name) \ - v8::Handle name(v8::Local property, _NAN_GETTER_ARGS) -# define _NAN_SETTER_ARGS const v8::AccessorInfo &args -# define NAN_SETTER(name) \ - void name( \ - v8::Local property \ - , v8::Local value \ - , _NAN_SETTER_ARGS) -# define _NAN_PROPERTY_GETTER_ARGS const v8::AccessorInfo& args -# define NAN_PROPERTY_GETTER(name) \ - v8::Handle name(v8::Local property \ - , _NAN_PROPERTY_GETTER_ARGS) -# define _NAN_PROPERTY_SETTER_ARGS const v8::AccessorInfo& args -# define NAN_PROPERTY_SETTER(name) \ - v8::Handle name(v8::Local property \ - , v8::Local value \ - , _NAN_PROPERTY_SETTER_ARGS) -# define _NAN_PROPERTY_ENUMERATOR_ARGS const v8::AccessorInfo& args -# define NAN_PROPERTY_ENUMERATOR(name) \ - v8::Handle name(_NAN_PROPERTY_ENUMERATOR_ARGS) -# define _NAN_PROPERTY_DELETER_ARGS const v8::AccessorInfo& args -# define NAN_PROPERTY_DELETER(name) \ - v8::Handle name( \ - v8::Local property \ - , _NAN_PROPERTY_DELETER_ARGS) -# define _NAN_PROPERTY_QUERY_ARGS const v8::AccessorInfo& args -# define NAN_PROPERTY_QUERY(name) \ - v8::Handle name( \ - v8::Local property \ - , _NAN_PROPERTY_QUERY_ARGS) - -# define NanGetInternalFieldPointer(object, index) \ - object->GetPointerFromInternalField(index) -# define NanSetInternalFieldPointer(object, index, value) \ - object->SetPointerInInternalField(index, value) -# define NAN_WEAK_CALLBACK(type, name) void name( \ - v8::Persistent object, \ - void *data) -# define NAN_WEAK_CALLBACK_OBJECT object -# define NAN_WEAK_CALLBACK_DATA(type) ((type) data) - -# define NanScope() v8::HandleScope scope -# define NanLocker() v8::Locker locker -# define NanUnlocker() v8::Unlocker unlocker -# define NanReturnValue(value) return scope.Close(value) -# define NanReturnUndefined() return v8::Undefined() -# define NanReturnNull() return v8::Null() -# define NanReturnEmptyString() return v8::String::Empty() -# define NanInitPersistent(type, name, obj) \ - v8::Persistent name = v8::Persistent::New(obj) -# define NanAssignPersistent(type, handle, obj) \ - handle = v8::Persistent::New(obj) -# define NanObjectWrapHandle(obj) obj->handle_ -# define NanMakeWeak(handle, parameters, callback) \ - handle.MakeWeak(parameters, callback) - -# define _NAN_THROW_ERROR(fun, errmsg) \ - do { \ - NanScope(); \ - return v8::ThrowException(fun(v8::String::New(errmsg))); \ - } while (0); - - inline static v8::Handle NanThrowError(const char* errmsg) { - _NAN_THROW_ERROR(v8::Exception::Error, errmsg); - } - - inline static v8::Handle NanThrowError( - v8::Handle error) { - NanScope(); - return v8::ThrowException(error); - } - - inline static v8::Handle NanThrowError( - const char *msg, - const int errorNumber) { - v8::Local err = v8::Exception::Error(v8::String::New(msg)); - v8::Local obj = err.As(); - obj->Set(v8::String::New("code"), v8::Int32::New(errorNumber)); - return NanThrowError(err); - } - - inline static v8::Handle NanThrowTypeError(const char* errmsg) { - _NAN_THROW_ERROR(v8::Exception::TypeError, errmsg); - } - - inline static v8::Handle NanThrowRangeError(const char* errmsg) { - _NAN_THROW_ERROR(v8::Exception::RangeError, errmsg); - } - - template static inline void NanDispose(v8::Persistent &handle) { - handle.Dispose(); - handle.Clear(); - } - - static inline v8::Local NanNewBufferHandle ( - char *data, - size_t length, - node::Buffer::free_callback callback, - void *hint) { - return v8::Local::New( - node::Buffer::New(data, length, callback, hint)->handle_); - } - - static inline v8::Local NanNewBufferHandle ( - char *data, uint32_t size) { - return v8::Local::New(node::Buffer::New(data, size)->handle_); - } - - static inline v8::Local NanNewBufferHandle (uint32_t size) { - return v8::Local::New(node::Buffer::New(size)->handle_); - } - - static inline void FreeData(char *data, void *hint) { - delete[] data; - } - - static inline v8::Local NanBufferUse(char* data, uint32_t size) { - return v8::Local::New( - node::Buffer::New(data, size, FreeData, NULL)->handle_); - } - - template - inline v8::Local NanPersistentToLocal( - const v8::Persistent& persistent) { - if (persistent.IsWeak()) { - return v8::Local::New(persistent); - } else { - return *reinterpret_cast*>( - const_cast*>(&persistent)); - } - } - - inline bool NanHasInstance( - v8::Persistent& function_template - , v8::Handle value) { - return function_template->HasInstance(value); - } - - static inline v8::Local NanNewContextHandle( - v8::ExtensionConfiguration* extensions = NULL - , v8::Handle tmpl = - v8::Handle() - , v8::Handle obj = v8::Handle() - ) { - v8::Persistent ctx = - v8::Context::New(extensions, tmpl, obj); - v8::Local lctx = v8::Local::New(ctx); - ctx.Dispose(); - return lctx; - } - -#endif // node version - -class NanCallback { - public: - NanCallback(const v8::Local &fn) { - NanScope(); - v8::Local obj = v8::Object::New(); - obj->Set(NanSymbol("callback"), fn); - NanAssignPersistent(v8::Object, handle, obj); - } - - ~NanCallback() { - if (handle.IsEmpty()) return; - handle.Dispose(); - handle.Clear(); - } - - inline v8::Local GetFunction () { - return NanPersistentToLocal(handle)->Get(NanSymbol("callback")) - .As(); - } - - // deprecated - void Run(int argc, v8::Local argv[]) { - Call(argc, argv); - } - - void Call(int argc, v8::Local argv[]) { - NanScope(); - - v8::Local callback = NanPersistentToLocal(handle)-> - Get(NanSymbol("callback")).As(); - v8::TryCatch try_catch; - callback->Call(v8::Context::GetCurrent()->Global(), argc, argv); - if (try_catch.HasCaught()) { - node::FatalException(try_catch); - } - } - - private: - v8::Persistent handle; -}; - -/* abstract */ class NanAsyncWorker { -public: - NanAsyncWorker (NanCallback *callback) : callback(callback) { - request.data = this; - errmsg = NULL; - } - - virtual ~NanAsyncWorker () { - NanScope(); - - if (!persistentHandle.IsEmpty()) - NanDispose(persistentHandle); - if (callback) - delete callback; - if (errmsg) - delete errmsg; - } - - virtual void WorkComplete () { - NanScope(); - - if (errmsg == NULL) - HandleOKCallback(); - else - HandleErrorCallback(); - delete callback; - callback = NULL; - } - - virtual void Execute () =0; - - uv_work_t request; - -protected: - v8::Persistent persistentHandle; - NanCallback *callback; - const char *errmsg; - - void SavePersistent(const char *key, v8::Local &obj) { - NanScope(); - - v8::Local handle = NanPersistentToLocal(persistentHandle); - handle->Set(NanSymbol(key), obj); - } - - v8::Local GetFromPersistent(const char *key) { - NanScope(); - - v8::Local handle = NanPersistentToLocal(persistentHandle); - return handle->Get(NanSymbol(key)).As(); - } - - virtual void HandleOKCallback () { - NanScope(); - - callback->Call(0, NULL); - }; - - virtual void HandleErrorCallback () { - NanScope(); - - v8::Local argv[] = { - v8::Exception::Error(v8::String::New(errmsg)) - }; - callback->Call(1, argv); - } -}; - -inline void NanAsyncExecute (uv_work_t* req) { - NanAsyncWorker *worker = static_cast(req->data); - worker->Execute(); -} - -inline void NanAsyncExecuteComplete (uv_work_t* req) { - NanAsyncWorker* worker = static_cast(req->data); - worker->WorkComplete(); - delete worker; -} - -inline void NanAsyncQueueWorker (NanAsyncWorker* worker) { - uv_queue_work( - uv_default_loop() - , &worker->request - , NanAsyncExecute - , (uv_after_work_cb)NanAsyncExecuteComplete - ); -} - -//// Base 64 //// - -#define _nan_base64_encoded_size(size) ((size + 2 - ((size + 2) % 3)) / 3 * 4) - - -// Doesn't check for padding at the end. Can be 1-2 bytes over. -static inline size_t _nan_base64_decoded_size_fast(size_t size) { - size_t remainder = size % 4; - - size = (size / 4) * 3; - if (remainder) { - if (size == 0 && remainder == 1) { - // special case: 1-byte input cannot be decoded - size = 0; - } else { - // non-padded input, add 1 or 2 extra bytes - size += 1 + (remainder == 3); - } - } - - return size; -} - -template -static size_t _nan_base64_decoded_size(const TypeName* src, size_t size) { - if (size == 0) - return 0; - - if (src[size - 1] == '=') - size--; - if (size > 0 && src[size - 1] == '=') - size--; - - return _nan_base64_decoded_size_fast(size); -} - - -// supports regular and URL-safe base64 -static const int _nan_unbase64_table[] = - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -2, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, 62, -1, 63, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, - -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, 63, - -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - }; - -#define _nan_unbase64(x) _nan_unbase64_table[(uint8_t)(x)] - - -template -static size_t _nan_base64_decode(char* buf, - size_t len, - const TypeName* src, - const size_t srcLen) { - char a, b, c, d; - char* dst = buf; - char* dstEnd = buf + len; - const TypeName* srcEnd = src + srcLen; - - while (src < srcEnd && dst < dstEnd) { - int remaining = srcEnd - src; - - while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; - if (remaining == 0 || *src == '=') break; - a = _nan_unbase64(*src++); - - while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; - if (remaining <= 1 || *src == '=') break; - b = _nan_unbase64(*src++); - - *dst++ = (a << 2) | ((b & 0x30) >> 4); - if (dst == dstEnd) break; - - while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; - if (remaining <= 2 || *src == '=') break; - c = _nan_unbase64(*src++); - - *dst++ = ((b & 0x0F) << 4) | ((c & 0x3C) >> 2); - if (dst == dstEnd) break; - - while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; - if (remaining <= 3 || *src == '=') break; - d = _nan_unbase64(*src++); - - *dst++ = ((c & 0x03) << 6) | (d & 0x3F); - } - - return dst - buf; -} - -//// HEX //// - -template -unsigned _nan_hex2bin(TypeName c) { - if (c >= '0' && c <= '9') return c - '0'; - if (c >= 'A' && c <= 'F') return 10 + (c - 'A'); - if (c >= 'a' && c <= 'f') return 10 + (c - 'a'); - return static_cast(-1); -} - - -template -static size_t _nan_hex_decode(char* buf, - size_t len, - const TypeName* src, - const size_t srcLen) { - size_t i; - for (i = 0; i < len && i * 2 + 1 < srcLen; ++i) { - unsigned a = _nan_hex2bin(src[i * 2 + 0]); - unsigned b = _nan_hex2bin(src[i * 2 + 1]); - if (!~a || !~b) return i; - buf[i] = a * 16 + b; - } - - return i; -} - -static bool _NanGetExternalParts( - v8::Handle val - , const char** data - , size_t* len) { - - if (node::Buffer::HasInstance(val)) { - *data = node::Buffer::Data(val.As()); - *len = node::Buffer::Length(val.As()); - return true; - - } - - assert(val->IsString()); - v8::Local str = v8::Local::New(val.As()); - - if (str->IsExternalAscii()) { - const v8::String::ExternalAsciiStringResource* ext; - ext = str->GetExternalAsciiStringResource(); - *data = ext->data(); - *len = ext->length(); - return true; - - } else if (str->IsExternal()) { - const v8::String::ExternalStringResource* ext; - ext = str->GetExternalStringResource(); - *data = reinterpret_cast(ext->data()); - *len = ext->length(); - return true; - } - - return false; -} - -namespace Nan { - enum Encoding {ASCII, UTF8, BASE64, UCS2, BINARY, HEX, BUFFER}; -} - -static inline char* NanFromV8String( - v8::Handle from - , enum Nan::Encoding encoding = Nan::UTF8 - , size_t *datalen = NULL - , char *buf = NULL - , size_t buflen = 0 - , int flags = v8::String::NO_NULL_TERMINATION - | v8::String::HINT_MANY_WRITES_EXPECTED) { - - NanScope(); - - size_t sz_; - size_t term_len = !(flags & v8::String::NO_NULL_TERMINATION); - char *data = NULL; - size_t len; - bool is_extern = _NanGetExternalParts( - from - , const_cast(&data) - , &len); - - if (is_extern && !term_len) { - NanSetPointerSafe(datalen, len); - return data; - } - - v8::Local toStr = from->ToString(); - - char *to = buf; - - v8::String::AsciiValue value(toStr); - switch(encoding) { - case Nan::ASCII: -#if NODE_MODULE_VERSION < 0x0C - sz_ = toStr->Length(); - if (to == NULL) { - to = new char[sz_ + term_len]; - } else { - assert(buflen >= sz_ + term_len && "too small buffer"); - } - NanSetPointerSafe( - datalen - , toStr->WriteAscii(to, 0, sz_ + term_len, flags)); - return to; -#endif - case Nan::BINARY: - case Nan::BUFFER: - sz_ = toStr->Length(); - if (to == NULL) { - to = new char[sz_ + term_len]; - } else { - assert(buflen >= sz_ + term_len && "too small buffer"); - } -#if NODE_MODULE_VERSION < 0x0C - // TODO(isaacs): THIS IS AWFUL!!! - // AGREE(kkoopa) - { - uint16_t* twobytebuf = new uint16_t[sz_ + term_len]; - - size_t len = toStr->Write(twobytebuf, 0, sz_ + term_len, flags); - - for (size_t i = 0; i < sz_ + term_len && i < len + term_len; i++) { - unsigned char *b = reinterpret_cast(&twobytebuf[i]); - to[i] = *b; - } - - NanSetPointerSafe(datalen, len); - - delete[] twobytebuf; - return to; - } -#else - NanSetPointerSafe( - datalen, - toStr->WriteOneByte( - reinterpret_cast(to) - , 0 - , sz_ + term_len - , flags)); - return to; -#endif - case Nan::UTF8: - sz_ = toStr->Utf8Length(); - if (to == NULL) { - to = new char[sz_ + term_len]; - } else { - assert(buflen >= sz_ + term_len && "too small buffer"); - } - NanSetPointerSafe( - datalen - , toStr->WriteUtf8(to, sz_ + term_len, NULL, flags) - term_len); - return to; - case Nan::BASE64: - sz_ = _nan_base64_decoded_size(*value, toStr->Length()); - if (to == NULL) { - to = new char[sz_ + term_len]; - } else { - assert(buflen >= sz_ + term_len); - } - NanSetPointerSafe( - datalen - , _nan_base64_decode(to, sz_, *value, value.length())); - if (term_len) { - to[sz_] = '\0'; - } - return to; - case Nan::UCS2: - { - sz_ = toStr->Length(); - if (to == NULL) { - to = new char[(sz_ + term_len) * 2]; - } else { - assert(buflen >= (sz_ + term_len) * 2 && "too small buffer"); - } - - int bc = 2 * toStr->Write( - reinterpret_cast(to) - , 0 - , sz_ + term_len - , flags); - NanSetPointerSafe(datalen, bc); - return to; - } - case Nan::HEX: - sz_ = toStr->Length(); - assert(!(sz_ & 1) && "bad hex data"); - if (to == NULL) { - to = new char[sz_ / 2 + term_len]; - } else { - assert(buflen >= sz_ / 2 + term_len && "too small buffer"); - } - - NanSetPointerSafe( - datalen - , _nan_hex_decode(to, sz_ / 2, *value, value.length())); - if (term_len) { - to[sz_ / 2] = '\0'; - } - return to; - default: - assert(0 && "unknown encoding"); - } - return to; -} - -#endif diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/nan/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/nan/package.json deleted file mode 100644 index 34ba61a9..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/nan/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "nan", - "version": "0.3.2", - "description": "Native Abstractions for Node.js: C++ header for Node 0.8->0.12 compatibility", - "main": ".index.js", - "repository": { - "type": "git", - "url": "git://github.com/rvagg/nan.git" - }, - "contributors": [ - { - "name": "Rod Vagg", - "email": "r@va.gg", - "url": "https://github.com/rvagg" - }, - { - "name": "Benjamin Byholm", - "email": "bbyholm@abo.fi", - "url": "https://github.com/kkoopa/" - }, - { - "name": "Trevor Norris", - "email": "trev.norris@gmail.com", - "url": "https://github.com/trevnorris" - } - ], - "license": "MIT", - "readme": "Native Abstractions for Node.js\n===============================\n\n**A header file filled with macro and utility goodness for making addon development for Node.js easier across versions 0.8, 0.10 and 0.11, and eventually 0.12.**\n\n***Current version: 0.3.2*** *(See [nan.h](https://github.com/rvagg/nan/blob/master/nan.h) for changelog)*\n\n[![NPM](https://nodei.co/npm/nan.png?downloads=true&stars=true)](https://nodei.co/npm/nan/) [![NPM](https://nodei.co/npm-dl/nan.png?months=6)](https://nodei.co/npm/nan/)\n\nThanks to the crazy changes in V8 (and some in Node core), keeping native addons compiling happily across versions, particularly 0.10 to 0.11/0.12, is a minor nightmare. The goal of this project is to store all logic necessary to develop native Node.js addons without having to inspect `NODE_MODULE_VERSION` and get yourself into a macro-tangle.\n\nThis project also contains some helper utilities that make addon development a bit more pleasant.\n\n * **[Usage](#usage)**\n * **[Example](#example)**\n * **[API](#api)**\n\n\n## Usage\n\nSimply add **NAN** as a dependency in the *package.json* of your Node addon:\n\n```js\n\"dependencies\": {\n ...\n \"nan\" : \"~0.3.1\"\n ...\n}\n```\n\nPull in the path to **NAN** in your *binding.gyp* so that you can use `#include \"nan.h\"` in your *.cpp*:\n\n```js\n\"include_dirs\" : [\n ...\n \"` when compiling your addon.\n\n\n## Example\n\nSee **[LevelDOWN](https://github.com/rvagg/node-leveldown/pull/48)** for a full example of **NAN** in use.\n\nFor a simpler example, see the **[async pi estimation example](https://github.com/rvagg/nan/tree/master/examples/async_pi_estimate)** in the examples directory for full code and an explanation of what this Monte Carlo Pi estimation example does. Below are just some parts of the full example that illustrate the use of **NAN**.\n\nCompare to the current 0.10 version of this example, found in the [node-addon-examples](https://github.com/rvagg/node-addon-examples/tree/master/9_async_work) repository and also a 0.11 version of the same found [here](https://github.com/kkoopa/node-addon-examples/tree/5c01f58fc993377a567812597e54a83af69686d7/9_async_work).\n\nNote that there is no embedded version sniffing going on here and also the async work is made much simpler, see below for details on the `NanAsyncWorker` class.\n\n```c++\n// addon.cc\n#include \n#include \"nan.h\"\n// ...\n\nusing namespace v8;\n\nvoid InitAll(Handle exports) {\n exports->Set(NanSymbol(\"calculateSync\"),\n FunctionTemplate::New(CalculateSync)->GetFunction());\n\n exports->Set(NanSymbol(\"calculateAsync\"),\n FunctionTemplate::New(CalculateAsync)->GetFunction());\n}\n\nNODE_MODULE(addon, InitAll)\n```\n\n```c++\n// sync.h\n#include \n#include \"nan.h\"\n\nNAN_METHOD(CalculateSync);\n```\n\n```c++\n// sync.cc\n#include \n#include \"nan.h\"\n#include \"sync.h\"\n// ...\n\nusing namespace v8;\n\n// Simple synchronous access to the `Estimate()` function\nNAN_METHOD(CalculateSync) {\n NanScope();\n\n // expect a number as the first argument\n int points = args[0]->Uint32Value();\n double est = Estimate(points);\n\n NanReturnValue(Number::New(est));\n}\n```\n\n```c++\n// async.cc\n#include \n#include \"nan.h\"\n#include \"async.h\"\n\n// ...\n\nusing namespace v8;\n\nclass PiWorker : public NanAsyncWorker {\n public:\n PiWorker(NanCallback *callback, int points)\n : NanAsyncWorker(callback), points(points) {}\n ~PiWorker() {}\n\n // Executed inside the worker-thread.\n // It is not safe to access V8, or V8 data structures\n // here, so everything we need for input and output\n // should go on `this`.\n void Execute () {\n estimate = Estimate(points);\n }\n\n // Executed when the async work is complete\n // this function will be run inside the main event loop\n // so it is safe to use V8 again\n void HandleOKCallback () {\n NanScope();\n\n Local argv[] = {\n Local::New(Null())\n , Number::New(estimate)\n };\n\n callback->Call(2, argv);\n };\n\n private:\n int points;\n double estimate;\n};\n\n// Asynchronous access to the `Estimate()` function\nNAN_METHOD(CalculateAsync) {\n NanScope();\n\n int points = args[0]->Uint32Value();\n NanCallback *callback = new NanCallback(args[1].As());\n\n NanAsyncQueueWorker(new PiWorker(callback, points));\n NanReturnUndefined();\n}\n```\n\n\n## API\n\n * NAN_METHOD\n * NAN_GETTER\n * NAN_SETTER\n * NAN_PROPERTY_GETTER\n * NAN_PROPERTY_SETTER\n * NAN_PROPERTY_ENUMERATOR\n * NAN_PROPERTY_DELETER\n * NAN_PROPERTY_QUERY\n * NAN_WEAK_CALLBACK\n * NanReturnValue\n * NanReturnUndefined\n * NanReturnNull\n * NanReturnEmptyString\n * NanScope\n * NanLocker\n * NanUnlocker\n * NanGetInternalFieldPointer\n * NanSetInternalFieldPointer\n * NanObjectWrapHandle\n * NanMakeWeak\n * NanSymbol\n * NanGetPointerSafe\n * NanSetPointerSafe\n * NanFromV8String\n * NanBooleanOptionValue\n * NanUInt32OptionValue\n * NanThrowError, NanThrowTypeError, NanThrowRangeError, NanThrowError(Handle), NanThrowError(Handle, int)\n * NanNewBufferHandle(char *, size_t, FreeCallback, void *), NanNewBufferHandle(char *, uint32_t), NanNewBufferHandle(uint32_t)\n * NanBufferUse(char *, uint32_t)\n * NanNewContextHandle\n * NanHasInstance\n * NanPersistentToLocal\n * NanDispose\n * NanAssignPersistent\n * NanInitPersistent\n * NanCallback\n * NanAsyncWorker\n * NanAsyncQueueWorker\n\n\n### NAN_METHOD(methodname)\n\nUse `NAN_METHOD` to define your V8 accessible methods:\n\n```c++\n// .h:\nclass Foo : public node::ObjectWrap {\n ...\n\n static NAN_METHOD(Bar);\n static NAN_METHOD(Baz);\n}\n\n\n// .cc:\nNAN_METHOD(Foo::Bar) {\n ...\n}\n\nNAN_METHOD(Foo::Baz) {\n ...\n}\n```\n\nThe reason for this macro is because of the method signature change in 0.11:\n\n```c++\n// 0.10 and below:\nHandle name(const Arguments& args)\n\n// 0.11 and above\nvoid name(const FunctionCallbackInfo& args)\n```\n\nThe introduction of `FunctionCallbackInfo` brings additional complications:\n\n\n### NAN_GETTER(methodname)\n\nUse `NAN_GETTER` to declare your V8 accessible getters. You get a `Local` `property` and an appropriately typed `args` object that can act like the `args` argument to a `NAN_METHOD` call.\n\nYou can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_GETTER`.\n\n\n### NAN_SETTER(methodname)\n\nUse `NAN_SETTER` to declare your V8 accessible setters. Same as `NAN_GETTER` but you also get a `Local` `value` object to work with.\n\nYou can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_SETTER`.\n\n\n### NAN_PROPERTY_GETTER(cbname)\nUse `NAN_PROPERTY_GETTER` to declare your V8 accessible property getters. You get a `Local` `property` and an appropriately typed `args` object that can act similar to the `args` argument to a `NAN_METHOD` call.\n\nYou can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_PROPERTY_GETTER`.\n\n\n### NAN_PROPERTY_SETTER(cbname)\nUse `NAN_PROPERTY_SETTER` to declare your V8 accessible property setters. Same as `NAN_PROPERTY_GETTER` but you also get a `Local` `value` object to work with.\n\nYou can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_PROPERTY_SETTER`.\n\n\n### NAN_PROPERTY_ENUMERATOR(cbname)\nUse `NAN_PROPERTY_ENUMERATOR` to declare your V8 accessible property enumerators. You get an appropriately typed `args` object like the `args` argument to a `NAN_PROPERTY_GETTER` call.\n\nYou can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_PROPERTY_ENUMERATOR`.\n\n\n### NAN_PROPERTY_DELETER(cbname)\nUse `NAN_PROPERTY_DELETER` to declare your V8 accessible property deleters. Same as `NAN_PROPERTY_GETTER`.\n\nYou can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_PROPERTY_DELETER`.\n\n\n### NAN_PROPERTY_QUERY(cbname)\nUse `NAN_PROPERTY_QUERY` to declare your V8 accessible property queries. Same as `NAN_PROPERTY_GETTER`.\n\nYou can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_PROPERTY_QUERY`.\n\n\n### NAN_WEAK_CALLBACK(type, cbname)\n\nUse `NAN_WEAK_CALLBACK` to declare your V8 WeakReference callbacks. There is an object argument accessible through `NAN_WEAK_CALLBACK_OBJECT`. The `type` argument gives the type of the `data` argument, accessible through `NAN_WEAK_CALLBACK_DATA(type)`.\n\n```c++\nstatic NAN_WEAK_CALLBACK(BufferReference*, WeakCheck) {\n if (NAN_WEAK_CALLBACK_DATA(BufferReference*)->noLongerNeeded_) {\n delete NAN_WEAK_CALLBACK_DATA(BufferReference*);\n } else {\n // Still in use, revive, prevent GC\n NanMakeWeak(NAN_WEAK_CALLBACK_OBJECT, NAN_WEAK_CALLBACK_DATA(BufferReference*), &WeakCheck);\n }\n}\n\n```\n\n### NanReturnValue(Handle<Value>)\n\nUse `NanReturnValue` when you want to return a value from your V8 accessible method:\n\n```c++\nNAN_METHOD(Foo::Bar) {\n ...\n\n NanReturnValue(String::New(\"FooBar!\"));\n}\n```\n\nNo `return` statement required.\n\n\n### NanReturnUndefined()\n\nUse `NanReturnUndefined` when you don't want to return anything from your V8 accessible method:\n\n```c++\nNAN_METHOD(Foo::Baz) {\n ...\n\n NanReturnUndefined();\n}\n```\n\n\n### NanReturnNull()\n\nUse `NanReturnNull` when you want to return `Null` from your V8 accessible method:\n\n```c++\nNAN_METHOD(Foo::Baz) {\n ...\n\n NanReturnNull();\n}\n```\n\n\n### NanReturnEmptyString()\n\nUse `NanReturnEmptyString` when you want to return an empty `String` from your V8 accessible method:\n\n```c++\nNAN_METHOD(Foo::Baz) {\n ...\n\n NanReturnEmptyString();\n}\n```\n\n\n### NanScope()\n\nThe introduction of `isolate` references for many V8 calls in Node 0.11 makes `NanScope()` necessary, use it in place of `HandleScope scope`:\n\n```c++\nNAN_METHOD(Foo::Bar) {\n NanScope();\n\n NanReturnValue(String::New(\"FooBar!\"));\n}\n```\n\n\n### NanLocker()\n\nThe introduction of `isolate` references for many V8 calls in Node 0.11 makes `NanLocker()` necessary, use it in place of `Locker locker`:\n\n```c++\nNAN_METHOD(Foo::Bar) {\n NanLocker();\n ...\n NanUnlocker();\n}\n```\n\n\n### NanUnlocker()\n\nThe introduction of `isolate` references for many V8 calls in Node 0.11 makes `NanUnlocker()` necessary, use it in place of `Unlocker unlocker`:\n\n```c++\nNAN_METHOD(Foo::Bar) {\n NanLocker();\n ...\n NanUnlocker();\n}\n```\n\n\n### void * NanGetInternalFieldPointer(Handle<Object>, int)\n\nGets a pointer to the internal field with at `index` from a V8 `Object` handle.\n\n```c++\nLocal obj;\n...\nNanGetInternalFieldPointer(obj, 0);\n```\n\n### void NanSetInternalFieldPointer(Handle<Object>, int, void *)\n\nSets the value of the internal field at `index` on a V8 `Object` handle.\n\n```c++\nstatic Persistent dataWrapperCtor;\n...\nLocal wrapper = NanPersistentToLocal(dataWrapperCtor)->NewInstance();\nNanSetInternalFieldPointer(wrapper, 0, this);\n```\n\n\n### Local<Object> NanObjectWrapHandle(Object)\n\nWhen you want to fetch the V8 object handle from a native object you've wrapped with Node's `ObjectWrap`, you should use `NanObjectWrapHandle`:\n\n```c++\nNanObjectWrapHandle(iterator)->Get(String::NewSymbol(\"end\"))\n```\n\n\n### NanMakeWeak(Persistent<T>, parameter, callback)\n\nMake a persistent reference weak.\n\n\n### String NanSymbol(char *)\n\nThis isn't strictly about compatibility, it's just an easier way to create string symbol objects (i.e. `String::NewSymbol(x)`), for getting and setting object properties, or names of objects.\n\n```c++\nbool foo = false;\nif (obj->Has(NanSymbol(\"foo\")))\n foo = optionsObj->Get(NanSymbol(\"foo\"))->BooleanValue()\n```\n\n\n### Type NanGetPointerSafe(Type *[, Type])\n\nA helper for getting values from optional pointers. If the pointer is `NULL`, the function returns the optional default value, which defaults to `0`. Otherwise, the function returns the value the pointer points to.\n\n```c++\nchar *plugh(uint32_t *optional) {\n char res[] = \"xyzzy\";\n uint32_t param = NanGetPointerSafe(optional, 0x1337);\n switch (param) {\n ...\n }\n NanSetPointerSafe(optional, 0xDEADBEEF);\n} \n```\n\n\n### bool NanSetPointerSafe(Type *, Type)\n\nA helper for setting optional argument pointers. If the pointer is `NULL`, the function simply return `false`. Otherwise, the value is assigned to the variable the pointer points to.\n\n```c++\nconst char *plugh(size_t *outputsize) {\n char res[] = \"xyzzy\";\n if !(NanSetPointerSafe(outputsize, strlen(res) + 1)) {\n ...\n }\n\n ...\n}\n```\n\n\n### char* NanFromV8String(Handle<Value>[, enum Nan::Encoding, size_t *, char *, size_t, int])\n\nWhen you want to convert a V8 `String` to a `char*` use `NanFromV8String`. It is possible to define an encoding that defaults to `Nan::UTF8` as well as a pointer to a variable that will be assigned the number of bytes in the returned string. It is also possible to supply a buffer and its length to the function in order not to have a new buffer allocated. The final argument allows optionally setting `String::WriteOptions`, which default to `String::HINT_MANY_WRITES_EXPECTED | String::NO_NULL_TERMINATION`.\nJust remember that you'll end up with an object that you'll need to `delete[]` at some point unless you supply your own buffer:\n\n```c++\nsize_t count;\nchar* name = NanFromV8String(args[0]);\nchar* decoded = NanFromV8String(args[1], Nan::BASE64, &count, NULL, 0, String::HINT_MANY_WRITES_EXPECTED);\nchar param_copy[count];\nmemcpy(param_copy, decoded, count);\ndelete[] decoded;\n```\n\n\n### bool NanBooleanOptionValue(Handle<Value>, Handle<String>[, bool])\n\nWhen you have an \"options\" object that you need to fetch properties from, boolean options can be fetched with this pair. They check first if the object exists (`IsEmpty`), then if the object has the given property (`Has`) then they get and convert/coerce the property to a `bool`.\n\nThe optional last parameter is the *default* value, which is `false` if left off:\n\n```c++\n// `foo` is false unless the user supplies a truthy value for it\nbool foo = NanBooleanOptionValue(optionsObj, NanSymbol(\"foo\"));\n// `bar` is true unless the user supplies a falsy value for it\nbool bar = NanBooleanOptionValueDefTrue(optionsObj, NanSymbol(\"bar\"), true);\n```\n\n\n### uint32_t NanUInt32OptionValue(Handle<Value>, Handle<String>, uint32_t)\n\nSimilar to `NanBooleanOptionValue`, use `NanUInt32OptionValue` to fetch an integer option from your options object. Can be any kind of JavaScript `Number` and it will be coerced to an unsigned 32-bit integer.\n\nRequires all 3 arguments as a default is not optional:\n\n```c++\nuint32_t count = NanUInt32OptionValue(optionsObj, NanSymbol(\"count\"), 1024);\n```\n\n\n### NanThrowError(message), NanThrowTypeError(message), NanThrowRangeError(message), NanThrowError(Local<Value>), NanThrowError(Local<Value>, int)\n\nFor throwing `Error`, `TypeError` and `RangeError` objects. You should `return` this call:\n\n```c++\nreturn NanThrowError(\"you must supply a callback argument\");\n```\n\nCan also handle any custom object you may want to throw. If used with the error code argument, it will add the supplied error code to the error object as a property called `code`.\n\n\n### Local<Object> NanNewBufferHandle(char *, uint32_t), Local<Object> NanNewBufferHandle(uint32_t)\n\nThe `Buffer` API has changed a little in Node 0.11, this helper provides consistent access to `Buffer` creation:\n\n```c++\nNanNewBufferHandle((char*)value.data(), value.size());\n```\n\nCan also be used to initialize a `Buffer` with just a `size` argument.\n\nCan also be supplied with a `NAN_WEAK_CALLBACK` and a hint for the garbage collector, when dealing with weak references.\n\n\n### Local<Object> NanBufferUse(char*, uint32_t)\n\n`Buffer::New(char*, uint32_t)` prior to 0.11 would make a copy of the data.\nWhile it was possible to get around this, it required a shim by passing a\ncallback. So the new API `Buffer::Use(char*, uint32_t)` was introduced to remove\nneeding to use this shim.\n\n`NanBufferUse` uses the `char*` passed as the backing data, and will free the\nmemory automatically when the weak callback is called. Keep this in mind, as\ncareless use can lead to \"double free or corruption\" and other cryptic failures.\n\n\n### bool NanHasInstance(Persistent<FunctionTemplate>&, Handle<Value>)\n\nCan be used to check the type of an object to determine it is of a particular class you have already defined and have a `Persistent` handle for.\n\n\n### Local<Type> NanPersistentToLocal(Persistent<Type>&)\n\nAside from `FunctionCallbackInfo`, the biggest and most painful change to V8 in Node 0.11 is the many restrictions now placed on `Persistent` handles. They are difficult to assign and difficult to fetch the original value out of.\n\nUse `NanPersistentToLocal` to convert a `Persistent` handle back to a `Local` handle.\n\n```c++\nLocal handle = NanPersistentToLocal(persistentHandle);\n```\n\n\n### Local<Context> NanNewContextHandle([ExtensionConfiguration*, Handle<ObjectTemplate>, Handle<Value>])\nCreates a new `Local` handle.\n\n```c++\nLocal ftmpl = FunctionTemplate::New();\nLocal otmpl = ftmpl->InstanceTemplate();\nLocal ctx = NanNewContextHandle(NULL, otmpl);\n```\n\n\n### void NanDispose(Persistent<T> &)\n\nUse `NanDispose` to dispose a `Persistent` handle.\n\n```c++\nNanDispose(persistentHandle);\n```\n\n\n### NanAssignPersistent(type, handle, object)\n\nUse `NanAssignPersistent` to assign a non-`Persistent` handle to a `Persistent` one. You can no longer just declare a `Persistent` handle and assign directly to it later, you have to `Reset` it in Node 0.11, so this makes it easier.\n\nIn general it is now better to place anything you want to protect from V8's garbage collector as properties of a generic `Object` and then assign that to a `Persistent`. This works in older versions of Node also if you use `NanAssignPersistent`:\n\n```c++\nPersistent persistentHandle;\n\n...\n\nLocal obj = Object::New();\nobj->Set(NanSymbol(\"key\"), keyHandle); // where keyHandle might be a Local\nNanAssignPersistent(Object, persistentHandle, obj)\n```\n\n\n### NanInitPersistent(type, name, object)\n\nUser `NanInitPersistent` to declare and initialize a new `Persistent` with the supplied object. The assignment operator for `Persistent` is no longer public in Node 0.11, so this macro makes it easier to declare and initializing a new `Persistent`. See NanAssignPersistent for more information.\n\n```c++\nLocal obj = Object::New();\nobj->Set(NanSymbol(\"key\"), keyHandle); // where keyHandle might be a Local\nNanInitPersistent(Object, persistentHandle, obj);\n```\n\n\n### NanCallback\n\nBecause of the difficulties imposed by the changes to `Persistent` handles in V8 in Node 0.11, creating `Persistent` versions of your `Local` handles is annoyingly tricky. `NanCallback` makes it easier by taking your `Local` handle, making it persistent until the `NanCallback` is deleted and even providing a handy `Call()` method to fetch and execute the callback `Function`.\n\n```c++\nLocal callbackHandle = callback = args[0].As();\nNanCallback *callback = new NanCallback(callbackHandle);\n// pass `callback` around and it's safe from GC until you:\ndelete callback;\n```\n\nYou can execute the callback like so:\n\n```c++\n// no arguments:\ncallback->Call(0, NULL);\n\n// an error argument:\nLocal argv[] = {\n Exception::Error(String::New(\"fail!\"))\n};\ncallback->Call(1, argv);\n\n// a success argument:\nLocal argv[] = {\n Local::New(Null()),\n String::New(\"w00t!\")\n};\ncallback->Call(2, argv);\n```\n\n`NanCallback` also has a `Local GetCallback()` method that you can use to fetch a local handle to the underlying callback function if you need it.\n\n\n### NanAsyncWorker\n\n`NanAsyncWorker` is an abstract class that you can subclass to have much of the annoying async queuing and handling taken care of for you. It can even store arbitrary V8 objects for you and have them persist while the async work is in progress.\n\nSee a rough outline of the implementation:\n\n```c++\nclass NanAsyncWorker {\npublic:\n NanAsyncWorker (NanCallback *callback);\n\n // Clean up persistent handles and delete the *callback\n virtual ~NanAsyncWorker ();\n\n // Check the `char *errmsg` property and call HandleOKCallback()\n // or HandleErrorCallback depending on whether it has been set or not\n virtual void WorkComplete ();\n\n // You must implement this to do some async work. If there is an\n // error then allocate `errmsg` to to a message and the callback will\n // be passed that string in an Error object\n virtual void Execute ();\n\nprotected:\n // Set this if there is an error, otherwise it's NULL\n const char *errmsg;\n\n // Save a V8 object in a Persistent handle to protect it from GC\n void SavePersistent(const char *key, Local &obj);\n\n // Fetch a stored V8 object (don't call from within `Execute()`)\n Local GetFromPersistent(const char *key);\n\n // Default implementation calls the callback function with no arguments.\n // Override this to return meaningful data\n virtual void HandleOKCallback ();\n\n // Default implementation calls the callback function with an Error object\n // wrapping the `errmsg` string\n virtual void HandleErrorCallback ();\n};\n```\n\n\n### NanAsyncQueueWorker(NanAsyncWorker *)\n\n`NanAsyncQueueWorker` will run a `NanAsyncWorker` asynchronously via libuv. Both the *execute* and *after_work* steps are taken care of for you—most of the logic for this is embedded in `NanAsyncWorker`.\n\n### Contributors\n\nNAN is only possible due to the excellent work of the following contributors:\n\n\n\n\n\n
    Rod VaggGitHub/rvaggTwitter/@rvagg
    Benjamin ByholmGitHub/kkoopa
    Trevor NorrisGitHub/trevnorrisTwitter/@trevnorris
    \n\nLicence & copyright\n-----------------------\n\nCopyright (c) 2013 Rod Vagg & NAN contributors (listed above).\n\nNative Abstractions for Node.js is licensed under an MIT +no-false-attribs license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/rvagg/nan/issues" - }, - "homepage": "https://github.com/rvagg/nan", - "_id": "nan@0.3.2", - "_from": "nan@~0.3.0" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/options/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/options/package.json deleted file mode 100644 index cbdc5c21..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/options/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "author": { - "name": "Einar Otto Stangvik", - "email": "einaros@gmail.com", - "url": "http://2x.io" - }, - "name": "options", - "description": "A very light-weight in-code option parsers for node.js.", - "version": "0.0.5", - "repository": { - "type": "git", - "url": "git://github.com/einaros/options.js.git" - }, - "main": "lib/options", - "scripts": { - "test": "make test" - }, - "engines": { - "node": ">=0.4.0" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "latest" - }, - "readme": "# options.js #\n\nA very light-weight in-code option parsers for node.js.\n\n## License ##\n\n(The MIT License)\n\nCopyright (c) 2012 Einar Otto Stangvik <einaros@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/einaros/options.js/issues" - }, - "homepage": "https://github.com/einaros/options.js", - "_id": "options@0.0.5", - "_from": "options@>=0.0.5" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/options/test/fixtures/test.conf b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/options/test/fixtures/test.conf deleted file mode 100644 index 6e624441..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/options/test/fixtures/test.conf +++ /dev/null @@ -1,4 +0,0 @@ -{ - "a": "foobar", - "b": false -} \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/options/test/options.test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/options/test/options.test.js deleted file mode 100644 index 6a1d9f5b..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/options/test/options.test.js +++ /dev/null @@ -1,140 +0,0 @@ -var Options = require('options') - , assert = require('assert'); - -describe('Options', function() { - describe('#ctor', function() { - it('initializes options', function() { - var option = new Options({a: true, b: false}); - assert.strictEqual(true, option.value.a); - assert.strictEqual(false, option.value.b); - }); - }); - - describe('#merge', function() { - it('merges options from another object', function() { - var option = new Options({a: true, b: false}); - option.merge({b: true}); - assert.strictEqual(true, option.value.a); - assert.strictEqual(true, option.value.b); - }); - it('does nothing when arguments are undefined', function() { - var option = new Options({a: true, b: false}); - option.merge(undefined); - assert.strictEqual(true, option.value.a); - assert.strictEqual(false, option.value.b); - }); - it('cannot set values that werent already there', function() { - var option = new Options({a: true, b: false}); - option.merge({c: true}); - assert.strictEqual('undefined', typeof option.value.c); - }); - it('can require certain options to be defined', function() { - var option = new Options({a: true, b: false, c: 3}); - var caughtException = false; - try { - option.merge({}, ['a', 'b', 'c']); - } - catch (e) { - caughtException = e.toString() == 'Error: options a, b and c must be defined'; - } - assert.strictEqual(true, caughtException); - }); - it('can require certain options to be defined, when options are undefined', function() { - var option = new Options({a: true, b: false, c: 3}); - var caughtException = false; - try { - option.merge(undefined, ['a', 'b', 'c']); - } - catch (e) { - caughtException = e.toString() == 'Error: options a, b and c must be defined'; - } - assert.strictEqual(true, caughtException); - }); - it('returns "this"', function() { - var option = new Options({a: true, b: false, c: 3}); - assert.strictEqual(option, option.merge()); - }); - }); - - describe('#copy', function() { - it('returns a new object with the indicated options', function() { - var option = new Options({a: true, b: false, c: 3}); - option.merge({c: 4}); - var obj = option.copy(['a', 'c']); - assert.strictEqual(true, obj.a); - assert.strictEqual(4, obj.c); - assert.strictEqual('undefined', typeof obj.b); - }); - }); - - describe('#value', function() { - it('can be enumerated', function() { - var option = new Options({a: true, b: false}); - assert.strictEqual(2, Object.keys(option.value).length); - }); - it('can not be used to set values', function() { - var option = new Options({a: true, b: false}); - option.value.b = true; - assert.strictEqual(false, option.value.b); - }); - it('can not be used to add values', function() { - var option = new Options({a: true, b: false}); - option.value.c = 3; - assert.strictEqual('undefined', typeof option.value.c); - }); - }); - - describe('#isDefined', function() { - it('returns true if the named value is defined', function() { - var option = new Options({a: undefined}); - assert.strictEqual(false, option.isDefined('a')); - option.merge({a: false}); - assert.strictEqual(true, option.isDefined('a')); - }); - }); - - describe('#isDefinedAndNonNull', function() { - it('returns true if the named value is defined and non-null', function() { - var option = new Options({a: undefined}); - assert.strictEqual(false, option.isDefinedAndNonNull('a')); - option.merge({a: null}); - assert.strictEqual(false, option.isDefinedAndNonNull('a')); - option.merge({a: 2}); - assert.strictEqual(true, option.isDefinedAndNonNull('a')); - }); - }); - - describe('#read', function() { - it('reads and merges config from a file', function() { - var option = new Options({a: true, b: true}); - option.read(__dirname + '/fixtures/test.conf'); - assert.strictEqual('foobar', option.value.a); - assert.strictEqual(false, option.value.b); - }); - - it('asynchronously reads and merges config from a file when a callback is passed', function(done) { - var option = new Options({a: true, b: true}); - option.read(__dirname + '/fixtures/test.conf', function(error) { - assert.strictEqual('foobar', option.value.a); - assert.strictEqual(false, option.value.b); - done(); - }); - }); - }); - - describe('#reset', function() { - it('resets options to defaults', function() { - var option = new Options({a: true, b: false}); - option.merge({b: true}); - assert.strictEqual(true, option.value.b); - option.reset(); - assert.strictEqual(false, option.value.b); - }); - }); - - it('is immutable', function() { - var option = new Options({a: true, b: false}); - option.foo = 2; - assert.strictEqual('undefined', typeof option.foo); - }); -}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/tinycolor/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/tinycolor/package.json deleted file mode 100644 index c9a34e93..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/node_modules/tinycolor/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "author": { - "name": "Einar Otto Stangvik", - "email": "einaros@gmail.com", - "url": "http://2x.io" - }, - "name": "tinycolor", - "description": "a to-the-point color module for node", - "version": "0.0.1", - "repository": { - "type": "git", - "url": "git://github.com/einaros/tinycolor.git" - }, - "engines": { - "node": ">=0.4.0" - }, - "dependencies": {}, - "devDependencies": {}, - "main": "tinycolor", - "readme": "# tinycolor #\n\nThis is a no-fuzz, barebone, zero muppetry color module for node.js.", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/einaros/tinycolor/issues" - }, - "homepage": "https://github.com/einaros/tinycolor", - "_id": "tinycolor@0.0.1", - "_from": "tinycolor@0.x" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/package.json index ac2e1b75..53c84e9b 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/package.json +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/package.json @@ -1,12 +1,78 @@ { + "_args": [ + [ + "ws@~0.4.31", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector" + ] + ], + "_from": "ws@>=0.4.31 <0.5.0", + "_id": "ws@0.4.32", + "_inCache": true, + "_installable": true, + "_location": "/ws", + "_npmUser": { + "email": "info@3rd-Eden.com", + "name": "V1" + }, + "_npmVersion": "1.4.10", + "_phantomChildren": {}, + "_requested": { + "name": "ws", + "raw": "ws@~0.4.31", + "rawSpec": "~0.4.31", + "scope": null, + "spec": ">=0.4.31 <0.5.0", + "type": "range" + }, + "_requiredBy": [ + "/" + ], + "_resolved": "https://registry.npmjs.org/ws/-/ws-0.4.32.tgz", + "_shasum": "787a6154414f3c99ed83c5772153b20feb0cec32", + "_shrinkwrap": null, + "_spec": "ws@~0.4.31", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector", "author": { - "name": "Einar Otto Stangvik", "email": "einaros@gmail.com", + "name": "Einar Otto Stangvik", "url": "http://2x.io" }, - "name": "ws", + "bin": { + "wscat": "./bin/wscat" + }, + "browser": "./lib/browser.js", + "bugs": { + "url": "https://github.com/einaros/ws/issues" + }, + "component": { + "scripts": { + "ws/index.js": "./lib/browser.js" + } + }, + "dependencies": { + "commander": "~2.1.0", + "nan": "~1.0.0", + "options": ">=0.0.5", + "tinycolor": "0.x" + }, "description": "simple to use, blazing fast and thoroughly tested websocket client, server and console for node.js, up-to-date against RFC-6455", - "version": "0.4.31", + "devDependencies": { + "ansi": "latest", + "benchmark": "0.3.x", + "expect.js": "0.2.x", + "mocha": "1.12.0", + "should": "1.2.x" + }, + "directories": {}, + "dist": { + "shasum": "787a6154414f3c99ed83c5772153b20feb0cec32", + "tarball": "https://registry.npmjs.org/ws/-/ws-0.4.32.tgz" + }, + "engines": { + "node": ">=0.4.0" + }, + "gypfile": true, + "homepage": "https://github.com/einaros/ws", "keywords": [ "Hixie", "HyBi", @@ -16,46 +82,26 @@ "WebSockets", "real-time" ], + "maintainers": [ + { + "email": "einaros@gmail.com", + "name": "einaros" + }, + { + "email": "info@3rd-Eden.com", + "name": "V1" + } + ], + "name": "ws", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", "repository": { "type": "git", "url": "git://github.com/einaros/ws.git" }, - "bin": { - "wscat": "./bin/wscat" - }, "scripts": { - "test": "make test", - "install": "(node-gyp rebuild 2> builderror.log) || (exit 0)" + "install": "(node-gyp rebuild 2> builderror.log) || (exit 0)", + "test": "make test" }, - "engines": { - "node": ">=0.4.0" - }, - "dependencies": { - "commander": "~0.6.1", - "nan": "~0.3.0", - "tinycolor": "0.x", - "options": ">=0.0.5" - }, - "devDependencies": { - "mocha": "1.12.0", - "should": "1.2.x", - "expect.js": "0.2.x", - "benchmark": "0.3.x", - "ansi": "latest" - }, - "browser": "./lib/browser.js", - "component": { - "scripts": { - "ws/index.js": "./lib/browser.js" - } - }, - "gypfile": true, - "readme": "[![Build Status](https://secure.travis-ci.org/einaros/ws.png)](http://travis-ci.org/einaros/ws)\n\n# ws: a node.js websocket library #\n\n`ws` is a simple to use websocket implementation, up-to-date against RFC-6455, and [probably the fastest WebSocket library for node.js](http://web.archive.org/web/20130314230536/http://hobbycoding.posterous.com/the-fastest-websocket-module-for-nodejs).\n\nPasses the quite extensive Autobahn test suite. See http://einaros.github.com/ws for the full reports.\n\nComes with a command line utility, `wscat`, which can either act as a server (--listen), or client (--connect); Use it to debug simple websocket services.\n\n## Protocol support ##\n\n* **Hixie draft 76** (Old and deprecated, but still in use by Safari and Opera. Added to ws version 0.4.2, but server only. Can be disabled by setting the `disableHixie` option to true.)\n* **HyBi drafts 07-12** (Use the option `protocolVersion: 8`, or argument `-p 8` for wscat)\n* **HyBi drafts 13-17** (Current default, alternatively option `protocolVersion: 13`, or argument `-p 13` for wscat)\n\n_See the echo.websocket.org example below for how to use the `protocolVersion` option._\n\n## Usage ##\n\n### Installing ###\n\n`npm install ws`\n\n### Sending and receiving text data ###\n\n```js\nvar WebSocket = require('ws');\nvar ws = new WebSocket('ws://www.host.com/path');\nws.on('open', function() {\n ws.send('something');\n});\nws.on('message', function(data, flags) {\n // flags.binary will be set if a binary data is received\n // flags.masked will be set if the data was masked\n});\n```\n\n### Sending binary data ###\n\n```js\nvar WebSocket = require('ws');\nvar ws = new WebSocket('ws://www.host.com/path');\nws.on('open', function() {\n var array = new Float32Array(5);\n for (var i = 0; i < array.length; ++i) array[i] = i / 2;\n ws.send(array, {binary: true, mask: true});\n});\n```\n\nSetting `mask`, as done for the send options above, will cause the data to be masked according to the websocket protocol. The same option applies for text data.\n\n### Server example ###\n\n```js\nvar WebSocketServer = require('ws').Server\n , wss = new WebSocketServer({port: 8080});\nwss.on('connection', function(ws) {\n ws.on('message', function(message) {\n console.log('received: %s', message);\n });\n ws.send('something');\n});\n```\n\n### Server sending broadcast data ###\n\n```js\nvar WebSocketServer = require('ws').Server\n , wss = new WebSocketServer({port: 8080});\n \nwss.broadcast = function(data) {\n\tfor(var i in this.clients)\n\t\tthis.clients[i].send(data);\n};\n```\n\n### Error handling best practices ###\n\n```js\n// If the WebSocket is closed before the following send is attempted\nws.send('something');\n\n// Errors (both immediate and async write errors) can be detected in an optional callback.\n// The callback is also the only way of being notified that data has actually been sent.\nws.send('something', function(error) {\n // if error is null, the send has been completed,\n // otherwise the error object will indicate what failed.\n});\n\n// Immediate errors can also be handled with try/catch-blocks, but **note**\n// that since sends are inherently asynchronous, socket write failures will *not*\n// be captured when this technique is used.\ntry {\n ws.send('something');\n}\ncatch (e) {\n // handle error\n}\n```\n\n### echo.websocket.org demo ###\n\n```js\nvar WebSocket = require('ws');\nvar ws = new WebSocket('ws://echo.websocket.org/', {protocolVersion: 8, origin: 'http://websocket.org'});\nws.on('open', function() {\n console.log('connected');\n ws.send(Date.now().toString(), {mask: true});\n});\nws.on('close', function() {\n console.log('disconnected');\n});\nws.on('message', function(data, flags) {\n console.log('Roundtrip time: ' + (Date.now() - parseInt(data)) + 'ms', flags);\n setTimeout(function() {\n ws.send(Date.now().toString(), {mask: true});\n }, 500);\n});\n```\n\n### wscat against echo.websocket.org ###\n\n $ npm install -g ws\n $ wscat -c ws://echo.websocket.org -p 8\n connected (press CTRL+C to quit)\n > hi there\n < hi there\n > are you a happy parrot?\n < are you a happy parrot?\n\n### Other examples ###\n\nFor a full example with a browser client communicating with a ws server, see the examples folder.\n\nNote that the usage together with Express 3.0 is quite different from Express 2.x. The difference is expressed in the two different serverstats-examples.\n\nOtherwise, see the test cases.\n\n### Running the tests ###\n\n`make test`\n\n## API Docs ##\n\nSee the doc/ directory for Node.js-like docs for the ws classes.\n\n## License ##\n\n(The MIT License)\n\nCopyright (c) 2011 Einar Otto Stangvik <einaros@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/einaros/ws/issues" - }, - "homepage": "https://github.com/einaros/ws", - "_id": "ws@0.4.31", - "_from": "ws@~0.4.31" + "version": "0.4.32" } diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/src/bufferutil.cc b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/src/bufferutil.cc index f06777f4..7f99bd6b 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/src/bufferutil.cc +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/src/bufferutil.cc @@ -24,12 +24,12 @@ class BufferUtil : public ObjectWrap static void Initialize(v8::Handle target) { NanScope(); - Local t = FunctionTemplate::New(New); + Local t = NanNew(New); t->InstanceTemplate()->SetInternalFieldCount(1); NODE_SET_METHOD(t, "unmask", BufferUtil::Unmask); NODE_SET_METHOD(t, "mask", BufferUtil::Mask); NODE_SET_METHOD(t, "merge", BufferUtil::Merge); - target->Set(String::NewSymbol("BufferUtil"), t->GetFunction()); + target->Set(NanSymbol("BufferUtil"), t->GetFunction()); } protected: @@ -57,7 +57,7 @@ class BufferUtil : public ObjectWrap memcpy(buffer + offset, Buffer::Data(src), length); offset += length; } - NanReturnValue(True()); + NanReturnValue(NanTrue()); } static NAN_METHOD(Unmask) @@ -78,7 +78,7 @@ class BufferUtil : public ObjectWrap case 1: *((unsigned char*)from ) = *((unsigned char*)from ) ^ ((unsigned char*)mask)[0]; case 0:; } - NanReturnValue(True()); + NanReturnValue(NanTrue()); } static NAN_METHOD(Mask) @@ -103,7 +103,7 @@ class BufferUtil : public ObjectWrap case 1: *((unsigned char*)to ) = *((unsigned char*)from ) ^ *((unsigned char*)mask); case 0:; } - NanReturnValue(True()); + NanReturnValue(NanTrue()); } }; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/src/validation.cc b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/src/validation.cc index 528eda1f..0d9e242a 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/src/validation.cc +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/src/validation.cc @@ -105,11 +105,11 @@ class Validation : public ObjectWrap static void Initialize(v8::Handle target) { - HandleScope scope; - Local t = FunctionTemplate::New(New); + NanScope(); + Local t = NanNew(New); t->InstanceTemplate()->SetInternalFieldCount(1); NODE_SET_METHOD(t, "isValidUTF8", Validation::IsValidUTF8); - target->Set(String::NewSymbol("Validation"), t->GetFunction()); + target->Set(NanSymbol("Validation"), t->GetFunction()); } protected: @@ -131,7 +131,7 @@ class Validation : public ObjectWrap Local buffer_obj = args[0]->ToObject(); char *buffer_data = Buffer::Data(buffer_obj); size_t buffer_length = Buffer::Length(buffer_obj); - NanReturnValue(is_valid_utf8(buffer_length, buffer_data) == 1 ? True() : False()); + NanReturnValue(is_valid_utf8(buffer_length, buffer_data) == 1 ? NanTrue() : NanFalse()); } }; diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/BufferPool.test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/BufferPool.test.js deleted file mode 100644 index 1ee7ff0f..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/BufferPool.test.js +++ /dev/null @@ -1,63 +0,0 @@ -var BufferPool = require('../lib/BufferPool'); -require('should'); - -describe('BufferPool', function() { - describe('#ctor', function() { - it('allocates pool', function() { - var db = new BufferPool(1000); - db.size.should.eql(1000); - }); - }); - describe('#get', function() { - it('grows the pool if necessary', function() { - var db = new BufferPool(1000); - var buf = db.get(2000); - db.size.should.be.above(1000); - db.used.should.eql(2000); - buf.length.should.eql(2000); - }); - it('grows the pool after the first call, if necessary', function() { - var db = new BufferPool(1000); - var buf = db.get(1000); - db.used.should.eql(1000); - db.size.should.eql(1000); - buf.length.should.eql(1000); - var buf2 = db.get(1000); - db.used.should.eql(2000); - db.size.should.be.above(1000); - buf2.length.should.eql(1000); - }); - it('grows the pool according to the growStrategy if necessary', function() { - var db = new BufferPool(1000, function(db, length) { - return db.size + 2345; - }); - var buf = db.get(2000); - db.size.should.eql(3345); - buf.length.should.eql(2000); - }); - it('doesnt grow the pool if theres enough room available', function() { - var db = new BufferPool(1000); - var buf = db.get(1000); - db.size.should.eql(1000); - buf.length.should.eql(1000); - }); - }); - describe('#reset', function() { - it('shinks the pool', function() { - var db = new BufferPool(1000); - var buf = db.get(2000); - db.reset(true); - db.size.should.eql(1000); - }); - it('shrinks the pool according to the shrinkStrategy', function() { - var db = new BufferPool(1000, function(db, length) { - return db.used + length; - }, function(db) { - return 0; - }); - var buf = db.get(2000); - db.reset(true); - db.size.should.eql(0); - }); - }); -}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/Receiver.hixie.test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/Receiver.hixie.test.js deleted file mode 100644 index 043d3bc4..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/Receiver.hixie.test.js +++ /dev/null @@ -1,158 +0,0 @@ -var assert = require('assert') - , expect = require('expect.js') - , Receiver = require('../lib/Receiver.hixie'); -require('./hybi-common'); - -describe('Receiver', function() { - it('can parse text message', function() { - var p = new Receiver(); - var packet = '00 48 65 6c 6c 6f ff'; - - var gotData = false; - p.ontext = function(data) { - gotData = true; - assert.equal('Hello', data); - }; - - p.add(getBufferFromHexString(packet)); - expect(gotData).to.equal(true); - }); - - it('can parse multiple text messages', function() { - var p = new Receiver(); - var packet = '00 48 65 6c 6c 6f ff 00 48 65 6c 6c 6f ff'; - - var gotData = false; - var messages = []; - p.ontext = function(data) { - gotData = true; - messages.push(data); - }; - - p.add(getBufferFromHexString(packet)); - expect(gotData).to.equal(true); - for (var i = 0; i < 2; ++i) { - expect(messages[i]).to.equal('Hello'); - } - }); - - it('can parse empty message', function() { - var p = new Receiver(); - var packet = '00 ff'; - - var gotData = false; - p.ontext = function(data) { - gotData = true; - assert.equal('', data); - }; - - p.add(getBufferFromHexString(packet)); - expect(gotData).to.equal(true); - }); - - it('can parse text messages delivered over multiple frames', function() { - var p = new Receiver(); - var packets = [ - '00 48', - '65 6c 6c', - '6f ff 00 48', - '65', - '6c 6c 6f', - 'ff' - ]; - - var gotData = false; - var messages = []; - p.ontext = function(data) { - gotData = true; - messages.push(data); - }; - - for (var i = 0; i < packets.length; ++i) { - p.add(getBufferFromHexString(packets[i])); - } - expect(gotData).to.equal(true); - for (var i = 0; i < 2; ++i) { - expect(messages[i]).to.equal('Hello'); - } - }); - - it('emits an error if a payload doesnt start with 0x00', function() { - var p = new Receiver(); - var packets = [ - '00 6c ff', - '00 6c ff ff', - 'ff 00 6c ff 00 6c ff', - '00', - '6c 6c 6f', - 'ff' - ]; - - var gotData = false; - var gotError = false; - var messages = []; - p.ontext = function(data) { - gotData = true; - messages.push(data); - }; - p.onerror = function(reason, code) { - gotError = code == true; - }; - - for (var i = 0; i < packets.length && !gotError; ++i) { - p.add(getBufferFromHexString(packets[i])); - } - expect(gotError).to.equal(true); - expect(messages[0]).to.equal('l'); - expect(messages[1]).to.equal('l'); - expect(messages.length).to.equal(2); - }); - - it('can parse close messages', function() { - var p = new Receiver(); - var packets = [ - 'ff 00' - ]; - - var gotClose = false; - var gotError = false; - p.onclose = function() { - gotClose = true; - }; - p.onerror = function(reason, code) { - gotError = code == true; - }; - - for (var i = 0; i < packets.length && !gotError; ++i) { - p.add(getBufferFromHexString(packets[i])); - } - expect(gotClose).to.equal(true); - expect(gotError).to.equal(false); - }); - - it('can parse binary messages delivered over multiple frames', function() { - var p = new Receiver(); - var packets = [ - '80 05 48', - '65 6c 6c', - '6f 80 80 05 48', - '65', - '6c 6c 6f' - ]; - - var gotData = false; - var messages = []; - p.ontext = function(data) { - gotData = true; - messages.push(data); - }; - - for (var i = 0; i < packets.length; ++i) { - p.add(getBufferFromHexString(packets[i])); - } - expect(gotData).to.equal(true); - for (var i = 0; i < 2; ++i) { - expect(messages[i]).to.equal('Hello'); - } - }); -}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/Receiver.test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/Receiver.test.js deleted file mode 100644 index b0b5c0a4..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/Receiver.test.js +++ /dev/null @@ -1,255 +0,0 @@ -var assert = require('assert') - , Receiver = require('../lib/Receiver'); -require('should'); -require('./hybi-common'); - -describe('Receiver', function() { - it('can parse unmasked text message', function() { - var p = new Receiver(); - var packet = '81 05 48 65 6c 6c 6f'; - - var gotData = false; - p.ontext = function(data) { - gotData = true; - assert.equal('Hello', data); - }; - - p.add(getBufferFromHexString(packet)); - gotData.should.be.ok; - }); - it('can parse close message', function() { - var p = new Receiver(); - var packet = '88 00'; - - var gotClose = false; - p.onclose = function(data) { - gotClose = true; - }; - - p.add(getBufferFromHexString(packet)); - gotClose.should.be.ok; - }); - it('can parse masked text message', function() { - var p = new Receiver(); - var packet = '81 93 34 83 a8 68 01 b9 92 52 4f a1 c6 09 59 e6 8a 52 16 e6 cb 00 5b a1 d5'; - - var gotData = false; - p.ontext = function(data) { - gotData = true; - assert.equal('5:::{"name":"echo"}', data); - }; - - p.add(getBufferFromHexString(packet)); - gotData.should.be.ok; - }); - it('can parse a masked text message longer than 125 bytes', function() { - var p = new Receiver(); - var message = 'A'; - for (var i = 0; i < 300; ++i) message += (i % 5).toString(); - var packet = '81 FE ' + pack(4, message.length) + ' 34 83 a8 68 ' + getHexStringFromBuffer(mask(message, '34 83 a8 68')); - - var gotData = false; - p.ontext = function(data) { - gotData = true; - assert.equal(message, data); - }; - - p.add(getBufferFromHexString(packet)); - gotData.should.be.ok; - }); - it('can parse a really long masked text message', function() { - var p = new Receiver(); - var message = 'A'; - for (var i = 0; i < 64*1024; ++i) message += (i % 5).toString(); - var packet = '81 FF ' + pack(16, message.length) + ' 34 83 a8 68 ' + getHexStringFromBuffer(mask(message, '34 83 a8 68')); - - var gotData = false; - p.ontext = function(data) { - gotData = true; - assert.equal(message, data); - }; - - p.add(getBufferFromHexString(packet)); - gotData.should.be.ok; - }); - it('can parse a fragmented masked text message of 300 bytes', function() { - var p = new Receiver(); - var message = 'A'; - for (var i = 0; i < 300; ++i) message += (i % 5).toString(); - var msgpiece1 = message.substr(0, 150); - var msgpiece2 = message.substr(150); - var packet1 = '01 FE ' + pack(4, msgpiece1.length) + ' 34 83 a8 68 ' + getHexStringFromBuffer(mask(msgpiece1, '34 83 a8 68')); - var packet2 = '80 FE ' + pack(4, msgpiece2.length) + ' 34 83 a8 68 ' + getHexStringFromBuffer(mask(msgpiece2, '34 83 a8 68')); - - var gotData = false; - p.ontext = function(data) { - gotData = true; - assert.equal(message, data); - }; - - p.add(getBufferFromHexString(packet1)); - p.add(getBufferFromHexString(packet2)); - gotData.should.be.ok; - }); - it('can parse a ping message', function() { - var p = new Receiver(); - var message = 'Hello'; - var packet = '89 ' + getHybiLengthAsHexString(message.length, true) + ' 34 83 a8 68 ' + getHexStringFromBuffer(mask(message, '34 83 a8 68')); - - var gotPing = false; - p.onping = function(data) { - gotPing = true; - assert.equal(message, data); - }; - - p.add(getBufferFromHexString(packet)); - gotPing.should.be.ok; - }); - it('can parse a ping with no data', function() { - var p = new Receiver(); - var packet = '89 00'; - - var gotPing = false; - p.onping = function(data) { - gotPing = true; - }; - - p.add(getBufferFromHexString(packet)); - gotPing.should.be.ok; - }); - it('can parse a fragmented masked text message of 300 bytes with a ping in the middle', function() { - var p = new Receiver(); - var message = 'A'; - for (var i = 0; i < 300; ++i) message += (i % 5).toString(); - - var msgpiece1 = message.substr(0, 150); - var packet1 = '01 FE ' + pack(4, msgpiece1.length) + ' 34 83 a8 68 ' + getHexStringFromBuffer(mask(msgpiece1, '34 83 a8 68')); - - var pingMessage = 'Hello'; - var pingPacket = '89 ' + getHybiLengthAsHexString(pingMessage.length, true) + ' 34 83 a8 68 ' + getHexStringFromBuffer(mask(pingMessage, '34 83 a8 68')); - - var msgpiece2 = message.substr(150); - var packet2 = '80 FE ' + pack(4, msgpiece2.length) + ' 34 83 a8 68 ' + getHexStringFromBuffer(mask(msgpiece2, '34 83 a8 68')); - - var gotData = false; - p.ontext = function(data) { - gotData = true; - assert.equal(message, data); - }; - var gotPing = false; - p.onping = function(data) { - gotPing = true; - assert.equal(pingMessage, data); - }; - - p.add(getBufferFromHexString(packet1)); - p.add(getBufferFromHexString(pingPacket)); - p.add(getBufferFromHexString(packet2)); - gotData.should.be.ok; - gotPing.should.be.ok; - }); - it('can parse a fragmented masked text message of 300 bytes with a ping in the middle, which is delievered over sevaral tcp packets', function() { - var p = new Receiver(); - var message = 'A'; - for (var i = 0; i < 300; ++i) message += (i % 5).toString(); - - var msgpiece1 = message.substr(0, 150); - var packet1 = '01 FE ' + pack(4, msgpiece1.length) + ' 34 83 a8 68 ' + getHexStringFromBuffer(mask(msgpiece1, '34 83 a8 68')); - - var pingMessage = 'Hello'; - var pingPacket = '89 ' + getHybiLengthAsHexString(pingMessage.length, true) + ' 34 83 a8 68 ' + getHexStringFromBuffer(mask(pingMessage, '34 83 a8 68')); - - var msgpiece2 = message.substr(150); - var packet2 = '80 FE ' + pack(4, msgpiece2.length) + ' 34 83 a8 68 ' + getHexStringFromBuffer(mask(msgpiece2, '34 83 a8 68')); - - var gotData = false; - p.ontext = function(data) { - gotData = true; - assert.equal(message, data); - }; - var gotPing = false; - p.onping = function(data) { - gotPing = true; - assert.equal(pingMessage, data); - }; - - var buffers = []; - buffers = buffers.concat(splitBuffer(getBufferFromHexString(packet1))); - buffers = buffers.concat(splitBuffer(getBufferFromHexString(pingPacket))); - buffers = buffers.concat(splitBuffer(getBufferFromHexString(packet2))); - for (var i = 0; i < buffers.length; ++i) { - p.add(buffers[i]); - } - gotData.should.be.ok; - gotPing.should.be.ok; - }); - it('can parse a 100 byte long masked binary message', function() { - var p = new Receiver(); - var length = 100; - var message = new Buffer(length); - for (var i = 0; i < length; ++i) message[i] = i % 256; - var originalMessage = getHexStringFromBuffer(message); - var packet = '82 ' + getHybiLengthAsHexString(length, true) + ' 34 83 a8 68 ' + getHexStringFromBuffer(mask(message, '34 83 a8 68')); - - var gotData = false; - p.onbinary = function(data) { - gotData = true; - assert.equal(originalMessage, getHexStringFromBuffer(data)); - }; - - p.add(getBufferFromHexString(packet)); - gotData.should.be.ok; - }); - it('can parse a 256 byte long masked binary message', function() { - var p = new Receiver(); - var length = 256; - var message = new Buffer(length); - for (var i = 0; i < length; ++i) message[i] = i % 256; - var originalMessage = getHexStringFromBuffer(message); - var packet = '82 ' + getHybiLengthAsHexString(length, true) + ' 34 83 a8 68 ' + getHexStringFromBuffer(mask(message, '34 83 a8 68')); - - var gotData = false; - p.onbinary = function(data) { - gotData = true; - assert.equal(originalMessage, getHexStringFromBuffer(data)); - }; - - p.add(getBufferFromHexString(packet)); - gotData.should.be.ok; - }); - it('can parse a 200kb long masked binary message', function() { - var p = new Receiver(); - var length = 200 * 1024; - var message = new Buffer(length); - for (var i = 0; i < length; ++i) message[i] = i % 256; - var originalMessage = getHexStringFromBuffer(message); - var packet = '82 ' + getHybiLengthAsHexString(length, true) + ' 34 83 a8 68 ' + getHexStringFromBuffer(mask(message, '34 83 a8 68')); - - var gotData = false; - p.onbinary = function(data) { - gotData = true; - assert.equal(originalMessage, getHexStringFromBuffer(data)); - }; - - p.add(getBufferFromHexString(packet)); - gotData.should.be.ok; - }); - it('can parse a 200kb long unmasked binary message', function() { - var p = new Receiver(); - var length = 200 * 1024; - var message = new Buffer(length); - for (var i = 0; i < length; ++i) message[i] = i % 256; - var originalMessage = getHexStringFromBuffer(message); - var packet = '82 ' + getHybiLengthAsHexString(length, false) + ' ' + getHexStringFromBuffer(message); - - var gotData = false; - p.onbinary = function(data) { - gotData = true; - assert.equal(originalMessage, getHexStringFromBuffer(data)); - }; - - p.add(getBufferFromHexString(packet)); - gotData.should.be.ok; - }); -}); - diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/Sender.hixie.test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/Sender.hixie.test.js deleted file mode 100644 index 783f8922..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/Sender.hixie.test.js +++ /dev/null @@ -1,134 +0,0 @@ -var assert = require('assert') - , Sender = require('../lib/Sender.hixie'); -require('should'); -require('./hybi-common'); - -describe('Sender', function() { - describe('#send', function() { - it('frames and sends a text message', function(done) { - var message = 'Hello world'; - var received; - var socket = { - write: function(data, encoding, cb) { - received = data; - process.nextTick(cb); - } - }; - var sender = new Sender(socket, {}); - sender.send(message, {}, function() { - received.toString('utf8').should.eql('\u0000' + message + '\ufffd'); - done(); - }); - }); - - it('frames and sends an empty message', function(done) { - var socket = { - write: function(data, encoding, cb) { - done(); - } - }; - var sender = new Sender(socket, {}); - sender.send('', {}, function() {}); - }); - - it('frames and sends a buffer', function(done) { - var received; - var socket = { - write: function(data, encoding, cb) { - received = data; - process.nextTick(cb); - } - }; - var sender = new Sender(socket, {}); - sender.send(new Buffer('foobar'), {}, function() { - received.toString('utf8').should.eql('\u0000foobar\ufffd'); - done(); - }); - }); - - it('frames and sends a binary message', function(done) { - var message = 'Hello world'; - var received; - var socket = { - write: function(data, encoding, cb) { - received = data; - process.nextTick(cb); - } - }; - var sender = new Sender(socket, {}); - sender.send(message, {binary: true}, function() { - received.toString('hex').should.eql( - // 0x80 0x0b H e l l o w o r l d - '800b48656c6c6f20776f726c64'); - done(); - }); - }); -/* - it('throws an exception for binary data', function(done) { - var socket = { - write: function(data, encoding, cb) { - process.nextTick(cb); - } - }; - var sender = new Sender(socket, {}); - sender.on('error', function() { - done(); - }); - sender.send(new Buffer(100), {binary: true}, function() {}); - }); -*/ - it('can fauxe stream data', function(done) { - var received = []; - var socket = { - write: function(data, encoding, cb) { - received.push(data); - process.nextTick(cb); - } - }; - var sender = new Sender(socket, {}); - sender.send(new Buffer('foobar'), { fin: false }, function() {}); - sender.send('bazbar', { fin: false }, function() {}); - sender.send(new Buffer('end'), { fin: true }, function() { - received[0].toString('utf8').should.eql('\u0000foobar'); - received[1].toString('utf8').should.eql('bazbar'); - received[2].toString('utf8').should.eql('end\ufffd'); - done(); - }); - }); - }); - - describe('#close', function() { - it('sends a hixie close frame', function(done) { - var received; - var socket = { - write: function(data, encoding, cb) { - received = data; - process.nextTick(cb); - } - }; - var sender = new Sender(socket, {}); - sender.close(null, null, null, function() { - received.toString('utf8').should.eql('\ufffd\u0000'); - done(); - }); - }); - - it('sends a message end marker if fauxe streaming has started, before hixie close frame', function(done) { - var received = []; - var socket = { - write: function(data, encoding, cb) { - received.push(data); - if (cb) process.nextTick(cb); - } - }; - var sender = new Sender(socket, {}); - sender.send(new Buffer('foobar'), { fin: false }, function() {}); - sender.close(null, null, null, function() { - received[0].toString('utf8').should.eql('\u0000foobar'); - received[1].toString('utf8').should.eql('\ufffd'); - received[2].toString('utf8').should.eql('\ufffd\u0000'); - done(); - }); - }); - }); -}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/Sender.test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/Sender.test.js deleted file mode 100644 index 43b4864d..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/Sender.test.js +++ /dev/null @@ -1,24 +0,0 @@ -var Sender = require('../lib/Sender'); -require('should'); - -describe('Sender', function() { - describe('#frameAndSend', function() { - it('does not modify a masked binary buffer', function() { - var sender = new Sender({ write: function() {} }); - var buf = new Buffer([1, 2, 3, 4, 5]); - sender.frameAndSend(2, buf, true, true); - buf[0].should.eql(1); - buf[1].should.eql(2); - buf[2].should.eql(3); - buf[3].should.eql(4); - buf[4].should.eql(5); - }); - - it('does not modify a masked text buffer', function() { - var sender = new Sender({ write: function() {} }); - var text = 'hi there'; - sender.frameAndSend(1, text, true, true); - text.should.eql('hi there'); - }); - }); -}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/Validation.test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/Validation.test.js deleted file mode 100644 index 37c33993..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/Validation.test.js +++ /dev/null @@ -1,23 +0,0 @@ -var Validation = require('../lib/Validation').Validation; -require('should'); - -describe('Validation', function() { - describe('isValidUTF8', function() { - it('should return true for a valid utf8 string', function() { - var validBuffer = new Buffer('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque gravida mattis rhoncus. Donec iaculis, metus quis varius accumsan, erat mauris condimentum diam, et egestas erat enim ut ligula. Praesent sollicitudin tellus eget dolor euismod euismod. Nullam ac augue nec neque varius luctus. Curabitur elit mi, consequat ultricies adipiscing mollis, scelerisque in erat. Phasellus facilisis fermentum ullamcorper. Nulla et sem eu arcu pharetra pellentesque. Praesent consectetur tempor justo, vel iaculis dui ullamcorper sit amet. Integer tristique viverra ullamcorper. Vivamus laoreet, nulla eget suscipit eleifend, lacus lectus feugiat libero, non fermentum erat nisi at risus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut pulvinar dignissim tellus, eu dignissim lorem vulputate quis. Morbi ut pulvinar augue.'); - Validation.isValidUTF8(validBuffer).should.be.ok; - }); - it('should return false for an erroneous string', function() { - var invalidBuffer = new Buffer([0xce, 0xba, 0xe1, 0xbd, 0xb9, 0xcf, 0x83, 0xce, 0xbc, 0xce, 0xb5, 0xed, 0xa0, 0x80, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64]); - Validation.isValidUTF8(invalidBuffer).should.not.be.ok; - }); - it('should return true for valid cases from the autobahn test suite', function() { - Validation.isValidUTF8(new Buffer('\xf0\x90\x80\x80')).should.be.ok; - Validation.isValidUTF8(new Buffer([0xf0, 0x90, 0x80, 0x80])).should.be.ok; - }); - it('should return false for erroneous autobahn strings', function() { - Validation.isValidUTF8(new Buffer([0xce, 0xba, 0xe1, 0xbd])).should.not.be.ok; - }); - }); -}); - diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/WebSocket.integration.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/WebSocket.integration.js deleted file mode 100644 index 5d4f426f..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/WebSocket.integration.js +++ /dev/null @@ -1,44 +0,0 @@ -var assert = require('assert') - , WebSocket = require('../') - , server = require('./testserver'); - -var port = 20000; - -function getArrayBuffer(buf) { - var l = buf.length; - var arrayBuf = new ArrayBuffer(l); - var uint8View = new Uint8Array(arrayBuf); - - for (var i = 0; i < l; i++) { - uint8View[i] = buf[i]; - } - return uint8View.buffer; -} - -function areArraysEqual(x, y) { - if (x.length != y.length) return false; - for (var i = 0, l = x.length; i < l; ++i) { - if (x[i] !== y[i]) return false; - } - return true; -} - -describe('WebSocket', function() { - it('communicates successfully with echo service', function(done) { - var ws = new WebSocket('ws://echo.websocket.org/', {protocolVersion: 13, origin: 'http://websocket.org'}); - var str = Date.now().toString(); - var dataReceived = false; - ws.on('open', function() { - ws.send(str, {mask: true}); - }); - ws.on('close', function() { - assert.equal(true, dataReceived); - done(); - }); - ws.on('message', function(data, flags) { - assert.equal(str, data); - ws.terminate(); - dataReceived = true; - }); - }); -}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/WebSocket.test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/WebSocket.test.js deleted file mode 100644 index 91336b93..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/WebSocket.test.js +++ /dev/null @@ -1,1724 +0,0 @@ -var assert = require('assert') - , https = require('https') - , http = require('http') - , should = require('should') - , WebSocket = require('../') - , WebSocketServer = require('../').Server - , fs = require('fs') - , server = require('./testserver') - , crypto = require('crypto'); - -var port = 20000; - -function getArrayBuffer(buf) { - var l = buf.length; - var arrayBuf = new ArrayBuffer(l); - var uint8View = new Uint8Array(arrayBuf); - for (var i = 0; i < l; i++) { - uint8View[i] = buf[i]; - } - return uint8View.buffer; -} - - -function areArraysEqual(x, y) { - if (x.length != y.length) return false; - for (var i = 0, l = x.length; i < l; ++i) { - if (x[i] !== y[i]) return false; - } - return true; -} - -describe('WebSocket', function() { - describe('#ctor', function() { - it('throws exception for invalid url', function(done) { - try { - var ws = new WebSocket('echo.websocket.org'); - } - catch (e) { - done(); - } - }); - }); - - describe('options', function() { - it('should accept an `agent` option', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var agent = { - addRequest: function() { - wss.close(); - done(); - } - }; - var ws = new WebSocket('ws://localhost:' + port, { agent: agent }); - }); - }); - // GH-227 - it('should accept the `options` object as the 3rd argument', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var agent = { - addRequest: function() { - wss.close(); - done(); - } - }; - var ws = new WebSocket('ws://localhost:' + port, [], { agent: agent }); - }); - }); - }); - - describe('properties', function() { - it('#bytesReceived exposes number of bytes received', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('message', function() { - ws.bytesReceived.should.eql(8); - wss.close(); - done(); - }); - }); - wss.on('connection', function(ws) { - ws.send('foobar'); - }); - }); - - it('#url exposes the server url', function(done) { - server.createServer(++port, function(srv) { - var url = 'ws://localhost:' + port; - var ws = new WebSocket(url); - assert.equal(url, ws.url); - ws.terminate(); - ws.on('close', function() { - srv.close(); - done(); - }); - }); - }); - - it('#protocolVersion exposes the protocol version', function(done) { - server.createServer(++port, function(srv) { - var url = 'ws://localhost:' + port; - var ws = new WebSocket(url); - assert.equal(13, ws.protocolVersion); - ws.terminate(); - ws.on('close', function() { - srv.close(); - done(); - }); - }); - }); - - describe('#bufferedAmount', function() { - it('defaults to zero', function(done) { - server.createServer(++port, function(srv) { - var url = 'ws://localhost:' + port; - var ws = new WebSocket(url); - assert.equal(0, ws.bufferedAmount); - ws.terminate(); - ws.on('close', function() { - srv.close(); - done(); - }); - }); - }); - - it('defaults to zero upon "open"', function(done) { - server.createServer(++port, function(srv) { - var url = 'ws://localhost:' + port; - var ws = new WebSocket(url); - ws.onopen = function() { - assert.equal(0, ws.bufferedAmount); - ws.terminate(); - ws.on('close', function() { - srv.close(); - done(); - }); - }; - }); - }); - - it('stress kernel write buffer', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var ws = new WebSocket('ws://localhost:' + port); - }); - wss.on('connection', function(ws) { - while (true) { - if (ws.bufferedAmount > 0) break; - ws.send((new Array(10000)).join('hello')); - } - ws.terminate(); - ws.on('close', function() { - wss.close(); - done(); - }); - }); - }); - }); - - describe('Custom headers', function() { - it('request has an authorization header', function (done) { - var auth = 'test:testpass'; - var srv = http.createServer(function (req, res) {}); - var wss = new WebSocketServer({server: srv}); - srv.listen(++port); - var ws = new WebSocket('ws://' + auth + '@localhost:' + port); - srv.on('upgrade', function (req, socket, head) { - assert(req.headers.authorization, 'auth header exists'); - assert.equal(req.headers.authorization, 'Basic ' + new Buffer(auth).toString('base64')); - ws.terminate(); - ws.on('close', function () { - srv.close(); - wss.close(); - done(); - }); - }); - }); - - it('accepts custom headers', function (done) { - var srv = http.createServer(function (req, res) {}); - var wss = new WebSocketServer({server: srv}); - srv.listen(++port); - - var ws = new WebSocket('ws://localhost:' + port, { - headers: { - 'Cookie': 'foo=bar' - } - }); - - srv.on('upgrade', function (req, socket, head) { - assert(req.headers.cookie, 'auth header exists'); - assert.equal(req.headers.cookie, 'foo=bar'); - - ws.terminate(); - ws.on('close', function () { - srv.close(); - wss.close(); - done(); - }); - }); - }); - }); - - describe('#readyState', function() { - it('defaults to connecting', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - assert.equal(WebSocket.CONNECTING, ws.readyState); - ws.terminate(); - ws.on('close', function() { - srv.close(); - done(); - }); - }); - }); - - it('set to open once connection is established', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - assert.equal(WebSocket.OPEN, ws.readyState); - srv.close(); - done(); - }); - }); - }); - - it('set to closed once connection is closed', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.close(1001); - ws.on('close', function() { - assert.equal(WebSocket.CLOSED, ws.readyState); - srv.close(); - done(); - }); - }); - }); - - it('set to closed once connection is terminated', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.terminate(); - ws.on('close', function() { - assert.equal(WebSocket.CLOSED, ws.readyState); - srv.close(); - done(); - }); - }); - }); - }); - - /* - * Ready state constants - */ - - var readyStates = { - CONNECTING: 0, - OPEN: 1, - CLOSING: 2, - CLOSED: 3 - }; - - /* - * Ready state constant tests - */ - - Object.keys(readyStates).forEach(function(state) { - describe('.' + state, function() { - it('is enumerable property of class', function() { - var propertyDescripter = Object.getOwnPropertyDescriptor(WebSocket, state) - assert.equal(readyStates[state], propertyDescripter.value); - assert.equal(true, propertyDescripter.enumerable); - }); - }); - }); - - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - Object.keys(readyStates).forEach(function(state) { - describe('.' + state, function() { - it('is property of instance', function() { - assert.equal(readyStates[state], ws[state]); - }); - }); - }); - }); - }); - - describe('events', function() { - it('emits a ping event', function(done) { - var wss = new WebSocketServer({port: ++port}); - wss.on('connection', function(client) { - client.ping(); - }); - var ws = new WebSocket('ws://localhost:' + port); - ws.on('ping', function() { - ws.terminate(); - wss.close(); - done(); - }); - }); - - it('emits a pong event', function(done) { - var wss = new WebSocketServer({port: ++port}); - wss.on('connection', function(client) { - client.pong(); - }); - var ws = new WebSocket('ws://localhost:' + port); - ws.on('pong', function() { - ws.terminate(); - wss.close(); - done(); - }); - }); - }); - - describe('connection establishing', function() { - it('can disconnect before connection is established', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.terminate(); - ws.on('open', function() { - assert.fail('connect shouldnt be raised here'); - }); - ws.on('close', function() { - srv.close(); - done(); - }); - }); - }); - - it('can close before connection is established', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.close(1001); - ws.on('open', function() { - assert.fail('connect shouldnt be raised here'); - }); - ws.on('close', function() { - srv.close(); - done(); - }); - }); - }); - - it('invalid server key is denied', function(done) { - server.createServer(++port, server.handlers.invalidKey, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('error', function() { - srv.close(); - done(); - }); - }); - }); - - it('close event is raised when server closes connection', function(done) { - server.createServer(++port, server.handlers.closeAfterConnect, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('close', function() { - srv.close(); - done(); - }); - }); - }); - - it('error is emitted if server aborts connection', function(done) { - server.createServer(++port, server.handlers.return401, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - assert.fail('connect shouldnt be raised here'); - }); - ws.on('error', function() { - srv.close(); - done(); - }); - }); - }); - }); - - describe('#pause and #resume', function() { - it('pauses the underlying stream', function(done) { - // this test is sort-of racecondition'y, since an unlikely slow connection - // to localhost can cause the test to succeed even when the stream pausing - // isn't working as intended. that is an extremely unlikely scenario, though - // and an acceptable risk for the test. - var client; - var serverClient; - var openCount = 0; - function onOpen() { - if (++openCount == 2) { - var paused = true; - serverClient.on('message', function() { - paused.should.not.be.ok; - wss.close(); - done(); - }); - serverClient.pause(); - setTimeout(function() { - paused = false; - serverClient.resume(); - }, 200); - client.send('foo'); - } - } - var wss = new WebSocketServer({port: ++port}, function() { - var ws = new WebSocket('ws://localhost:' + port); - serverClient = ws; - serverClient.on('open', onOpen); - }); - wss.on('connection', function(ws) { - client = ws; - onOpen(); - }); - }); - }); - - describe('#ping', function() { - it('before connect should fail', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('error', function() {}); - try { - ws.ping(); - } - catch (e) { - srv.close(); - ws.terminate(); - done(); - } - }); - }); - - it('before connect can silently fail', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('error', function() {}); - ws.ping('', {}, true); - srv.close(); - ws.terminate(); - done(); - }); - }); - - it('without message is successfully transmitted to the server', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - ws.ping(); - }); - srv.on('ping', function(message) { - srv.close(); - ws.terminate(); - done(); - }); - }); - }); - - it('with message is successfully transmitted to the server', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - ws.ping('hi'); - }); - srv.on('ping', function(message) { - assert.equal('hi', message); - srv.close(); - ws.terminate(); - done(); - }); - }); - }); - - it('with encoded message is successfully transmitted to the server', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - ws.ping('hi', {mask: true}); - }); - srv.on('ping', function(message, flags) { - assert.ok(flags.masked); - assert.equal('hi', message); - srv.close(); - ws.terminate(); - done(); - }); - }); - }); - }); - - describe('#pong', function() { - it('before connect should fail', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('error', function() {}); - try { - ws.pong(); - } - catch (e) { - srv.close(); - ws.terminate(); - done(); - } - }); - }); - - it('before connect can silently fail', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('error', function() {}); - ws.pong('', {}, true); - srv.close(); - ws.terminate(); - done(); - }); - }); - - it('without message is successfully transmitted to the server', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - ws.pong(); - }); - srv.on('pong', function(message) { - srv.close(); - ws.terminate(); - done(); - }); - }); - }); - - it('with message is successfully transmitted to the server', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - ws.pong('hi'); - }); - srv.on('pong', function(message) { - assert.equal('hi', message); - srv.close(); - ws.terminate(); - done(); - }); - }); - }); - - it('with encoded message is successfully transmitted to the server', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - ws.pong('hi', {mask: true}); - }); - srv.on('pong', function(message, flags) { - assert.ok(flags.masked); - assert.equal('hi', message); - srv.close(); - ws.terminate(); - done(); - }); - }); - }); - }); - - describe('#send', function() { - it('very long binary data can be sent and received (with echoing server)', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var array = new Float32Array(5 * 1024 * 1024); - for (var i = 0; i < array.length; ++i) array[i] = i / 5; - ws.on('open', function() { - ws.send(array, {binary: true}); - }); - ws.on('message', function(message, flags) { - assert.ok(flags.binary); - assert.ok(areArraysEqual(array, new Float32Array(getArrayBuffer(message)))); - ws.terminate(); - srv.close(); - done(); - }); - }); - }); - - it('can send and receive text data', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - ws.send('hi'); - }); - ws.on('message', function(message, flags) { - assert.equal('hi', message); - ws.terminate(); - srv.close(); - done(); - }); - }); - }); - - it('send and receive binary data as an array', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var array = new Float32Array(6); - for (var i = 0; i < array.length; ++i) array[i] = i / 2; - var partial = array.subarray(2, 5); - ws.on('open', function() { - ws.send(partial, {binary: true}); - }); - ws.on('message', function(message, flags) { - assert.ok(flags.binary); - assert.ok(areArraysEqual(partial, new Float32Array(getArrayBuffer(message)))); - ws.terminate(); - srv.close(); - done(); - }); - }); - }); - - it('binary data can be sent and received as buffer', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var buf = new Buffer('foobar'); - ws.on('open', function() { - ws.send(buf, {binary: true}); - }); - ws.on('message', function(message, flags) { - assert.ok(flags.binary); - assert.ok(areArraysEqual(buf, message)); - ws.terminate(); - srv.close(); - done(); - }); - }); - }); - - it('ArrayBuffer is auto-detected without binary flag', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var array = new Float32Array(5); - for (var i = 0; i < array.length; ++i) array[i] = i / 2; - ws.on('open', function() { - ws.send(array.buffer); - }); - ws.onmessage = function (event) { - assert.ok(event.type = 'Binary'); - assert.ok(areArraysEqual(array, new Float32Array(getArrayBuffer(event.data)))); - ws.terminate(); - srv.close(); - done(); - }; - }); - }); - - it('Buffer is auto-detected without binary flag', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var buf = new Buffer('foobar'); - ws.on('open', function() { - ws.send(buf); - }); - ws.onmessage = function (event) { - assert.ok(event.type = 'Binary'); - assert.ok(areArraysEqual(event.data, buf)); - ws.terminate(); - srv.close(); - done(); - }; - }); - }); - - it('before connect should fail', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('error', function() {}); - try { - ws.send('hi'); - } - catch (e) { - ws.terminate(); - srv.close(); - done(); - } - }); - }); - - it('before connect should pass error through callback, if present', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('error', function() {}); - ws.send('hi', function(error) { - assert.ok(error instanceof Error); - ws.terminate(); - srv.close(); - done(); - }); - }); - }); - - it('without data should be successful', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - ws.send(); - }); - srv.on('message', function(message, flags) { - assert.equal('', message); - srv.close(); - ws.terminate(); - done(); - }); - }); - }); - - it('calls optional callback when flushed', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - ws.send('hi', function() { - srv.close(); - ws.terminate(); - done(); - }); - }); - }); - }); - - it('with unencoded message is successfully transmitted to the server', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - ws.send('hi'); - }); - srv.on('message', function(message, flags) { - assert.equal('hi', message); - srv.close(); - ws.terminate(); - done(); - }); - }); - }); - - it('with encoded message is successfully transmitted to the server', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - ws.send('hi', {mask: true}); - }); - srv.on('message', function(message, flags) { - assert.ok(flags.masked); - assert.equal('hi', message); - srv.close(); - ws.terminate(); - done(); - }); - }); - }); - - it('with unencoded binary message is successfully transmitted to the server', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var array = new Float32Array(5); - for (var i = 0; i < array.length; ++i) array[i] = i / 2; - ws.on('open', function() { - ws.send(array, {binary: true}); - }); - srv.on('message', function(message, flags) { - assert.ok(flags.binary); - assert.ok(areArraysEqual(array, new Float32Array(getArrayBuffer(message)))); - srv.close(); - ws.terminate(); - done(); - }); - }); - }); - - it('with encoded binary message is successfully transmitted to the server', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var array = new Float32Array(5); - for (var i = 0; i < array.length; ++i) array[i] = i / 2; - ws.on('open', function() { - ws.send(array, {mask: true, binary: true}); - }); - srv.on('message', function(message, flags) { - assert.ok(flags.binary); - assert.ok(flags.masked); - assert.ok(areArraysEqual(array, new Float32Array(getArrayBuffer(message)))); - srv.close(); - ws.terminate(); - done(); - }); - }); - }); - - it('with binary stream will send fragmented data', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var callbackFired = false; - ws.on('open', function() { - var fileStream = fs.createReadStream('test/fixtures/textfile'); - fileStream.bufferSize = 100; - ws.send(fileStream, {binary: true}, function(error) { - assert.equal(null, error); - callbackFired = true; - }); - }); - srv.on('message', function(data, flags) { - assert.ok(flags.binary); - assert.ok(areArraysEqual(fs.readFileSync('test/fixtures/textfile'), data)); - ws.terminate(); - }); - ws.on('close', function() { - assert.ok(callbackFired); - srv.close(); - done(); - }); - }); - }); - - it('with text stream will send fragmented data', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var callbackFired = false; - ws.on('open', function() { - var fileStream = fs.createReadStream('test/fixtures/textfile'); - fileStream.setEncoding('utf8'); - fileStream.bufferSize = 100; - ws.send(fileStream, {binary: false}, function(error) { - assert.equal(null, error); - callbackFired = true; - }); - }); - srv.on('message', function(data, flags) { - assert.ok(!flags.binary); - assert.ok(areArraysEqual(fs.readFileSync('test/fixtures/textfile', 'utf8'), data)); - ws.terminate(); - }); - ws.on('close', function() { - assert.ok(callbackFired); - srv.close(); - done(); - }); - }); - }); - - it('will cause intermittent send to be delayed in order', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - var fileStream = fs.createReadStream('test/fixtures/textfile'); - fileStream.setEncoding('utf8'); - fileStream.bufferSize = 100; - ws.send(fileStream); - ws.send('foobar'); - ws.send('baz'); - }); - var receivedIndex = 0; - srv.on('message', function(data, flags) { - ++receivedIndex; - if (receivedIndex == 1) { - assert.ok(!flags.binary); - assert.ok(areArraysEqual(fs.readFileSync('test/fixtures/textfile', 'utf8'), data)); - } - else if (receivedIndex == 2) { - assert.ok(!flags.binary); - assert.equal('foobar', data); - } - else { - assert.ok(!flags.binary); - assert.equal('baz', data); - srv.close(); - ws.terminate(); - done(); - } - }); - }); - }); - - it('will cause intermittent stream to be delayed in order', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - var fileStream = fs.createReadStream('test/fixtures/textfile'); - fileStream.setEncoding('utf8'); - fileStream.bufferSize = 100; - ws.send(fileStream); - var i = 0; - ws.stream(function(error, send) { - assert.ok(!error); - if (++i == 1) send('foo'); - else send('bar', true); - }); - }); - var receivedIndex = 0; - srv.on('message', function(data, flags) { - ++receivedIndex; - if (receivedIndex == 1) { - assert.ok(!flags.binary); - assert.ok(areArraysEqual(fs.readFileSync('test/fixtures/textfile', 'utf8'), data)); - } - else if (receivedIndex == 2) { - assert.ok(!flags.binary); - assert.equal('foobar', data); - srv.close(); - ws.terminate(); - done(); - } - }); - }); - }); - - it('will cause intermittent ping to be delivered', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - var fileStream = fs.createReadStream('test/fixtures/textfile'); - fileStream.setEncoding('utf8'); - fileStream.bufferSize = 100; - ws.send(fileStream); - ws.ping('foobar'); - }); - var receivedIndex = 0; - srv.on('message', function(data, flags) { - assert.ok(!flags.binary); - assert.ok(areArraysEqual(fs.readFileSync('test/fixtures/textfile', 'utf8'), data)); - if (++receivedIndex == 2) { - srv.close(); - ws.terminate(); - done(); - } - }); - srv.on('ping', function(data) { - assert.equal('foobar', data); - if (++receivedIndex == 2) { - srv.close(); - ws.terminate(); - done(); - } - }); - }); - }); - - it('will cause intermittent pong to be delivered', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - var fileStream = fs.createReadStream('test/fixtures/textfile'); - fileStream.setEncoding('utf8'); - fileStream.bufferSize = 100; - ws.send(fileStream); - ws.pong('foobar'); - }); - var receivedIndex = 0; - srv.on('message', function(data, flags) { - assert.ok(!flags.binary); - assert.ok(areArraysEqual(fs.readFileSync('test/fixtures/textfile', 'utf8'), data)); - if (++receivedIndex == 2) { - srv.close(); - ws.terminate(); - done(); - } - }); - srv.on('pong', function(data) { - assert.equal('foobar', data); - if (++receivedIndex == 2) { - srv.close(); - ws.terminate(); - done(); - } - }); - }); - }); - - it('will cause intermittent close to be delivered', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - var fileStream = fs.createReadStream('test/fixtures/textfile'); - fileStream.setEncoding('utf8'); - fileStream.bufferSize = 100; - ws.send(fileStream); - ws.close(1000, 'foobar'); - }); - ws.on('close', function() { - srv.close(); - ws.terminate(); - done(); - }); - ws.on('error', function() { /* That's quite alright -- a send was attempted after close */ }); - srv.on('message', function(data, flags) { - assert.ok(!flags.binary); - assert.ok(areArraysEqual(fs.readFileSync('test/fixtures/textfile', 'utf8'), data)); - }); - srv.on('close', function(code, data) { - assert.equal(1000, code); - assert.equal('foobar', data); - }); - }); - }); - }); - - describe('#stream', function() { - it('very long binary data can be streamed', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var buffer = new Buffer(10 * 1024); - for (var i = 0; i < buffer.length; ++i) buffer[i] = i % 0xff; - ws.on('open', function() { - var i = 0; - var blockSize = 800; - var bufLen = buffer.length; - ws.stream({binary: true}, function(error, send) { - assert.ok(!error); - var start = i * blockSize; - var toSend = Math.min(blockSize, bufLen - (i * blockSize)); - var end = start + toSend; - var isFinal = toSend < blockSize; - send(buffer.slice(start, end), isFinal); - i += 1; - }); - }); - srv.on('message', function(data, flags) { - assert.ok(flags.binary); - assert.ok(areArraysEqual(buffer, data)); - ws.terminate(); - srv.close(); - done(); - }); - }); - }); - - it('before connect should pass error through callback', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('error', function() {}); - ws.stream(function(error) { - assert.ok(error instanceof Error); - ws.terminate(); - srv.close(); - done(); - }); - }); - }); - - it('without callback should fail', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var payload = 'HelloWorld'; - ws.on('open', function() { - try { - ws.stream(); - } - catch (e) { - srv.close(); - ws.terminate(); - done(); - } - }); - }); - }); - - it('will cause intermittent send to be delayed in order', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var payload = 'HelloWorld'; - ws.on('open', function() { - var i = 0; - ws.stream(function(error, send) { - assert.ok(!error); - if (++i == 1) { - send(payload.substr(0, 5)); - ws.send('foobar'); - ws.send('baz'); - } - else { - send(payload.substr(5, 5), true); - } - }); - }); - var receivedIndex = 0; - srv.on('message', function(data, flags) { - ++receivedIndex; - if (receivedIndex == 1) { - assert.ok(!flags.binary); - assert.equal(payload, data); - } - else if (receivedIndex == 2) { - assert.ok(!flags.binary); - assert.equal('foobar', data); - } - else { - assert.ok(!flags.binary); - assert.equal('baz', data); - srv.close(); - ws.terminate(); - done(); - } - }); - }); - }); - - it('will cause intermittent stream to be delayed in order', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var payload = 'HelloWorld'; - ws.on('open', function() { - var i = 0; - ws.stream(function(error, send) { - assert.ok(!error); - if (++i == 1) { - send(payload.substr(0, 5)); - var i2 = 0; - ws.stream(function(error, send) { - assert.ok(!error); - if (++i2 == 1) send('foo'); - else send('bar', true); - }); - ws.send('baz'); - } - else send(payload.substr(5, 5), true); - }); - }); - var receivedIndex = 0; - srv.on('message', function(data, flags) { - ++receivedIndex; - if (receivedIndex == 1) { - assert.ok(!flags.binary); - assert.equal(payload, data); - } - else if (receivedIndex == 2) { - assert.ok(!flags.binary); - assert.equal('foobar', data); - } - else if (receivedIndex == 3){ - assert.ok(!flags.binary); - assert.equal('baz', data); - setTimeout(function() { - srv.close(); - ws.terminate(); - done(); - }, 1000); - } - else throw new Error('more messages than we actually sent just arrived'); - }); - }); - }); - - it('will cause intermittent ping to be delivered', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var payload = 'HelloWorld'; - ws.on('open', function() { - var i = 0; - ws.stream(function(error, send) { - assert.ok(!error); - if (++i == 1) { - send(payload.substr(0, 5)); - ws.ping('foobar'); - } - else { - send(payload.substr(5, 5), true); - } - }); - }); - var receivedIndex = 0; - srv.on('message', function(data, flags) { - assert.ok(!flags.binary); - assert.equal(payload, data); - if (++receivedIndex == 2) { - srv.close(); - ws.terminate(); - done(); - } - }); - srv.on('ping', function(data) { - assert.equal('foobar', data); - if (++receivedIndex == 2) { - srv.close(); - ws.terminate(); - done(); - } - }); - }); - }); - - it('will cause intermittent pong to be delivered', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var payload = 'HelloWorld'; - ws.on('open', function() { - var i = 0; - ws.stream(function(error, send) { - assert.ok(!error); - if (++i == 1) { - send(payload.substr(0, 5)); - ws.pong('foobar'); - } - else { - send(payload.substr(5, 5), true); - } - }); - }); - var receivedIndex = 0; - srv.on('message', function(data, flags) { - assert.ok(!flags.binary); - assert.equal(payload, data); - if (++receivedIndex == 2) { - srv.close(); - ws.terminate(); - done(); - } - }); - srv.on('pong', function(data) { - assert.equal('foobar', data); - if (++receivedIndex == 2) { - srv.close(); - ws.terminate(); - done(); - } - }); - }); - }); - - it('will cause intermittent close to be delivered', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var payload = 'HelloWorld'; - var errorGiven = false; - ws.on('open', function() { - var i = 0; - ws.stream(function(error, send) { - if (++i == 1) { - send(payload.substr(0, 5)); - ws.close(1000, 'foobar'); - } - else if(i == 2) { - send(payload.substr(5, 5), true); - } - else if (i == 3) { - assert.ok(error); - errorGiven = true; - } - }); - }); - ws.on('close', function() { - assert.ok(errorGiven); - srv.close(); - ws.terminate(); - done(); - }); - srv.on('message', function(data, flags) { - assert.ok(!flags.binary); - assert.equal(payload, data); - }); - srv.on('close', function(code, data) { - assert.equal(1000, code); - assert.equal('foobar', data); - }); - }); - }); - }); - - describe('#close', function() { - it('will raise error callback, if any, if called during send stream', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var errorGiven = false; - ws.on('open', function() { - var fileStream = fs.createReadStream('test/fixtures/textfile'); - fileStream.setEncoding('utf8'); - fileStream.bufferSize = 100; - ws.send(fileStream, function(error) { - errorGiven = error != null; - }); - ws.close(1000, 'foobar'); - }); - ws.on('close', function() { - setTimeout(function() { - assert.ok(errorGiven); - srv.close(); - ws.terminate(); - done(); - }, 1000); - }); - }); - }); - - it('without invalid first argument throws exception', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - try { - ws.close('error'); - } - catch (e) { - srv.close(); - ws.terminate(); - done(); - } - }); - }); - }); - - it('without reserved error code 1004 throws exception', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - try { - ws.close(1004); - } - catch (e) { - srv.close(); - ws.terminate(); - done(); - } - }); - }); - }); - - it('without message is successfully transmitted to the server', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - ws.close(1000); - }); - srv.on('close', function(code, message, flags) { - assert.equal('', message); - srv.close(); - ws.terminate(); - done(); - }); - }); - }); - - it('with message is successfully transmitted to the server', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - ws.close(1000, 'some reason'); - }); - srv.on('close', function(code, message, flags) { - assert.ok(flags.masked); - assert.equal('some reason', message); - srv.close(); - ws.terminate(); - done(); - }); - }); - }); - - it('with encoded message is successfully transmitted to the server', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('open', function() { - ws.close(1000, 'some reason', {mask: true}); - }); - srv.on('close', function(code, message, flags) { - assert.ok(flags.masked); - assert.equal('some reason', message); - srv.close(); - ws.terminate(); - done(); - }); - }); - }); - - it('ends connection to the server', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var connectedOnce = false; - ws.on('open', function() { - connectedOnce = true; - ws.close(1000, 'some reason', {mask: true}); - }); - ws.on('close', function() { - assert.ok(connectedOnce); - srv.close(); - ws.terminate(); - done(); - }); - }); - }); - }); - - describe('W3C API emulation', function() { - it('should not throw errors when getting and setting', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var listener = function () {}; - - ws.onmessage = listener; - ws.onerror = listener; - ws.onclose = listener; - ws.onopen = listener; - - assert.ok(ws.onopen === listener); - assert.ok(ws.onmessage === listener); - assert.ok(ws.onclose === listener); - assert.ok(ws.onerror === listener); - - srv.close(); - ws.terminate(); - done(); - }); - }); - - it('should work the same as the EventEmitter api', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - var listener = function() {}; - var message = 0; - var close = 0; - var open = 0; - - ws.onmessage = function(messageEvent) { - assert.ok(!!messageEvent.data); - ++message; - ws.close(); - }; - - ws.onopen = function() { - ++open; - } - - ws.onclose = function() { - ++close; - } - - ws.on('open', function() { - ws.send('foo'); - }); - - ws.on('close', function() { - process.nextTick(function() { - assert.ok(message === 1); - assert.ok(open === 1); - assert.ok(close === 1); - - srv.close(); - ws.terminate(); - done(); - }); - }); - }); - }); - - it('should receive text data wrapped in a MessageEvent when using addEventListener', function(done) { - server.createServer(++port, function(srv) { - var ws = new WebSocket('ws://localhost:' + port); - ws.addEventListener('open', function() { - ws.send('hi'); - }); - ws.addEventListener('message', function(messageEvent) { - assert.equal('hi', messageEvent.data); - ws.terminate(); - srv.close(); - done(); - }); - }); - }); - - it('should receive valid CloseEvent when server closes with code 1000', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var ws = new WebSocket('ws://localhost:' + port); - ws.addEventListener('close', function(closeEvent) { - assert.equal(true, closeEvent.wasClean); - assert.equal(1000, closeEvent.code); - ws.terminate(); - wss.close(); - done(); - }); - }); - wss.on('connection', function(client) { - client.close(1000); - }); - }); - - it('should receive valid CloseEvent when server closes with code 1001', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var ws = new WebSocket('ws://localhost:' + port); - ws.addEventListener('close', function(closeEvent) { - assert.equal(false, closeEvent.wasClean); - assert.equal(1001, closeEvent.code); - assert.equal('some daft reason', closeEvent.reason); - ws.terminate(); - wss.close(); - done(); - }); - }); - wss.on('connection', function(client) { - client.close(1001, 'some daft reason'); - }); - }); - - it('should have target set on Events', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var ws = new WebSocket('ws://localhost:' + port); - ws.addEventListener('open', function(openEvent) { - assert.equal(ws, openEvent.target); - }); - ws.addEventListener('message', function(messageEvent) { - assert.equal(ws, messageEvent.target); - wss.close(); - }); - ws.addEventListener('close', function(closeEvent) { - assert.equal(ws, closeEvent.target); - ws.emit('error', new Error('forced')); - }); - ws.addEventListener('error', function(errorEvent) { - assert.equal(errorEvent.message, 'forced'); - assert.equal(ws, errorEvent.target); - ws.terminate(); - done(); - }); - }); - wss.on('connection', function(client) { - client.send('hi') - }); - }); - }); - - describe('ssl', function() { - it('can connect to secure websocket server', function(done) { - var options = { - key: fs.readFileSync('test/fixtures/key.pem'), - cert: fs.readFileSync('test/fixtures/certificate.pem') - }; - var app = https.createServer(options, function (req, res) { - res.writeHead(200); - res.end(); - }); - var wss = new WebSocketServer({server: app}); - app.listen(++port, function() { - var ws = new WebSocket('wss://localhost:' + port); - }); - wss.on('connection', function(ws) { - app.close(); - ws.terminate(); - wss.close(); - done(); - }); - }); - - it('can connect to secure websocket server with client side certificate', function(done) { - var options = { - key: fs.readFileSync('test/fixtures/key.pem'), - cert: fs.readFileSync('test/fixtures/certificate.pem'), - ca: [fs.readFileSync('test/fixtures/ca1-cert.pem')], - requestCert: true - }; - var clientOptions = { - key: fs.readFileSync('test/fixtures/agent1-key.pem'), - cert: fs.readFileSync('test/fixtures/agent1-cert.pem') - }; - var app = https.createServer(options, function (req, res) { - res.writeHead(200); - res.end(); - }); - var success = false; - var wss = new WebSocketServer({ - server: app, - verifyClient: function(info) { - success = !!info.req.client.authorized; - return true; - } - }); - app.listen(++port, function() { - var ws = new WebSocket('wss://localhost:' + port, clientOptions); - }); - wss.on('connection', function(ws) { - app.close(); - ws.terminate(); - wss.close(); - success.should.be.ok; - done(); - }); - }); - - it('cannot connect to secure websocket server via ws://', function(done) { - var options = { - key: fs.readFileSync('test/fixtures/key.pem'), - cert: fs.readFileSync('test/fixtures/certificate.pem') - }; - var app = https.createServer(options, function (req, res) { - res.writeHead(200); - res.end(); - }); - var wss = new WebSocketServer({server: app}); - app.listen(++port, function() { - var ws = new WebSocket('ws://localhost:' + port, { rejectUnauthorized :false }); - ws.on('error', function() { - app.close(); - ws.terminate(); - wss.close(); - done(); - }); - }); - }); - - it('can send and receive text data', function(done) { - var options = { - key: fs.readFileSync('test/fixtures/key.pem'), - cert: fs.readFileSync('test/fixtures/certificate.pem') - }; - var app = https.createServer(options, function (req, res) { - res.writeHead(200); - res.end(); - }); - var wss = new WebSocketServer({server: app}); - app.listen(++port, function() { - var ws = new WebSocket('wss://localhost:' + port); - ws.on('open', function() { - ws.send('foobar'); - }); - }); - wss.on('connection', function(ws) { - ws.on('message', function(message, flags) { - message.should.eql('foobar'); - app.close(); - ws.terminate(); - wss.close(); - done(); - }); - }); - }); - - it('can send and receive very long binary data', function(done) { - var options = { - key: fs.readFileSync('test/fixtures/key.pem'), - cert: fs.readFileSync('test/fixtures/certificate.pem') - } - var app = https.createServer(options, function (req, res) { - res.writeHead(200); - res.end(); - }); - crypto.randomBytes(5 * 1024 * 1024, function(ex, buf) { - if (ex) throw ex; - var wss = new WebSocketServer({server: app}); - app.listen(++port, function() { - var ws = new WebSocket('wss://localhost:' + port); - ws.on('open', function() { - ws.send(buf, {binary: true}); - }); - ws.on('message', function(message, flags) { - flags.binary.should.be.ok; - areArraysEqual(buf, message).should.be.ok; - app.close(); - ws.terminate(); - wss.close(); - done(); - }); - }); - wss.on('connection', function(ws) { - ws.on('message', function(message, flags) { - ws.send(message, {binary: true}); - }); - }); - }); - }); - }); - - describe('protocol support discovery', function() { - describe('#supports', function() { - describe('#binary', function() { - it('returns true for hybi transport', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var ws = new WebSocket('ws://localhost:' + port); - }); - wss.on('connection', function(client) { - assert.equal(true, client.supports.binary); - wss.close(); - done(); - }); - }); - - it('returns false for hixie transport', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'WebSocket', - 'Sec-WebSocket-Key1': '3e6b263 4 17 80', - 'Sec-WebSocket-Key2': '17 9 G`ZD9 2 2b 7X 3 /r90' - } - }; - var req = http.request(options); - req.write('WjN}|M(6'); - req.end(); - }); - wss.on('connection', function(client) { - assert.equal(false, client.supports.binary); - wss.close(); - done(); - }); - }); - }); - }); - }); - - describe('host and origin headers', function() { - it('includes the host header with port number', function(done) { - var srv = http.createServer(); - srv.listen(++port, function(){ - srv.on('upgrade', function(req, socket, upgradeHeade) { - assert.equal('localhost:' + port, req.headers['host']); - srv.close(); - done(); - }); - var ws = new WebSocket('ws://localhost:' + port); - }); - }); - - it('includes the origin header with port number', function(done) { - var srv = http.createServer(); - srv.listen(++port, function() { - srv.on('upgrade', function(req, socket, upgradeHeade) { - assert.equal('localhost:' + port, req.headers['origin']); - srv.close(); - done(); - }); - var ws = new WebSocket('ws://localhost:' + port); - }); - }); - }); - -}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/WebSocketServer.test.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/WebSocketServer.test.js deleted file mode 100644 index c21fd97f..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/WebSocketServer.test.js +++ /dev/null @@ -1,1103 +0,0 @@ -var http = require('http') - , https = require('https') - , WebSocket = require('../') - , WebSocketServer = WebSocket.Server - , fs = require('fs') - , should = require('should'); - -var port = 8000; - -function getArrayBuffer(buf) { - var l = buf.length; - var arrayBuf = new ArrayBuffer(l); - for (var i = 0; i < l; ++i) { - arrayBuf[i] = buf[i]; - } - return arrayBuf; -} - -function areArraysEqual(x, y) { - if (x.length != y.length) return false; - for (var i = 0, l = x.length; i < l; ++i) { - if (x[i] !== y[i]) return false; - } - return true; -} - -describe('WebSocketServer', function() { - describe('#ctor', function() { - it('throws an error if no option object is passed', function() { - var gotException = false; - try { - var wss = new WebSocketServer(); - } - catch (e) { - gotException = true; - } - gotException.should.be.ok; - }); - - it('throws an error if no port or server is specified', function() { - var gotException = false; - try { - var wss = new WebSocketServer({}); - } - catch (e) { - gotException = true; - } - gotException.should.be.ok; - }); - - it('does not throw an error if no port or server is specified, when the noServer option is true', function() { - var gotException = false; - try { - var wss = new WebSocketServer({noServer: true}); - } - catch (e) { - gotException = true; - } - gotException.should.eql(false); - }); - - it('emits an error if http server bind fails', function(done) { - var wss = new WebSocketServer({port: 1}); - wss.on('error', function() { done(); }); - }); - - it('starts a server on a given port', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var ws = new WebSocket('ws://localhost:' + port); - }); - wss.on('connection', function(client) { - wss.close(); - done(); - }); - }); - - it('uses a precreated http server', function (done) { - var srv = http.createServer(); - srv.listen(++port, function () { - var wss = new WebSocketServer({server: srv}); - var ws = new WebSocket('ws://localhost:' + port); - - wss.on('connection', function(client) { - wss.close(); - srv.close(); - done(); - }); - }); - }); - - it('uses a precreated http server listening on unix socket', function (done) { - var srv = http.createServer(); - var sockPath = '/tmp/ws_socket_'+new Date().getTime()+'.'+Math.floor(Math.random() * 1000); - srv.listen(sockPath, function () { - var wss = new WebSocketServer({server: srv}); - var ws = new WebSocket('ws+unix://'+sockPath); - - wss.on('connection', function(client) { - wss.close(); - srv.close(); - done(); - }); - }); - }); - - it('emits path specific connection event', function (done) { - var srv = http.createServer(); - srv.listen(++port, function () { - var wss = new WebSocketServer({server: srv}); - var ws = new WebSocket('ws://localhost:' + port+'/endpointName'); - - wss.on('connection/endpointName', function(client) { - wss.close(); - srv.close(); - done(); - }); - }); - }); - - it('can have two different instances listening on the same http server with two different paths', function(done) { - var srv = http.createServer(); - srv.listen(++port, function () { - var wss1 = new WebSocketServer({server: srv, path: '/wss1'}) - , wss2 = new WebSocketServer({server: srv, path: '/wss2'}); - var doneCount = 0; - wss1.on('connection', function(client) { - wss1.close(); - if (++doneCount == 2) { - srv.close(); - done(); - } - }); - wss2.on('connection', function(client) { - wss2.close(); - if (++doneCount == 2) { - srv.close(); - done(); - } - }); - var ws1 = new WebSocket('ws://localhost:' + port + '/wss1'); - var ws2 = new WebSocket('ws://localhost:' + port + '/wss2?foo=1'); - }); - }); - - it('cannot have two different instances listening on the same http server with the same path', function(done) { - var srv = http.createServer(); - srv.listen(++port, function () { - var wss1 = new WebSocketServer({server: srv, path: '/wss1'}); - try { - var wss2 = new WebSocketServer({server: srv, path: '/wss1'}); - } - catch (e) { - wss1.close(); - srv.close(); - done(); - } - }); - }); - }); - - describe('#close', function() { - it('will close all clients', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('close', function() { - if (++closes == 2) done(); - }); - }); - var closes = 0; - wss.on('connection', function(client) { - client.on('close', function() { - if (++closes == 2) done(); - }); - wss.close(); - }); - }); - - it('does not close a precreated server', function(done) { - var srv = http.createServer(); - var realClose = srv.close; - srv.close = function() { - should.fail('must not close pre-created server'); - } - srv.listen(++port, function () { - var wss = new WebSocketServer({server: srv}); - var ws = new WebSocket('ws://localhost:' + port); - wss.on('connection', function(client) { - wss.close(); - srv.close = realClose; - srv.close(); - done(); - }); - }); - }); - - it('cleans up websocket data on a precreated server', function(done) { - var srv = http.createServer(); - srv.listen(++port, function () { - var wss1 = new WebSocketServer({server: srv, path: '/wss1'}) - , wss2 = new WebSocketServer({server: srv, path: '/wss2'}); - (typeof srv._webSocketPaths).should.eql('object'); - Object.keys(srv._webSocketPaths).length.should.eql(2); - wss1.close(); - Object.keys(srv._webSocketPaths).length.should.eql(1); - wss2.close(); - (typeof srv._webSocketPaths).should.eql('undefined'); - srv.close(); - done(); - }); - }); - }); - - describe('#clients', function() { - it('returns a list of connected clients', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - wss.clients.length.should.eql(0); - var ws = new WebSocket('ws://localhost:' + port); - }); - wss.on('connection', function(client) { - wss.clients.length.should.eql(1); - wss.close(); - done(); - }); - }); - - it('can be disabled', function(done) { - var wss = new WebSocketServer({port: ++port, clientTracking: false}, function() { - wss.clients.length.should.eql(0); - var ws = new WebSocket('ws://localhost:' + port); - }); - wss.on('connection', function(client) { - wss.clients.length.should.eql(0); - wss.close(); - done(); - }); - }); - - it('is updated when client terminates the connection', function(done) { - var ws; - var wss = new WebSocketServer({port: ++port}, function() { - ws = new WebSocket('ws://localhost:' + port); - }); - wss.on('connection', function(client) { - client.on('close', function() { - wss.clients.length.should.eql(0); - wss.close(); - done(); - }); - ws.terminate(); - }); - }); - - it('is updated when client closes the connection', function(done) { - var ws; - var wss = new WebSocketServer({port: ++port}, function() { - ws = new WebSocket('ws://localhost:' + port); - }); - wss.on('connection', function(client) { - client.on('close', function() { - wss.clients.length.should.eql(0); - wss.close(); - done(); - }); - ws.close(); - }); - }); - }); - - describe('#options', function() { - it('exposes options passed to constructor', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - wss.options.port.should.eql(port); - wss.close(); - done(); - }); - }); - }); - - describe('#handleUpgrade', function() { - it('can be used for a pre-existing server', function (done) { - var srv = http.createServer(); - srv.listen(++port, function () { - var wss = new WebSocketServer({noServer: true}); - srv.on('upgrade', function(req, socket, upgradeHead) { - wss.handleUpgrade(req, socket, upgradeHead, function(client) { - client.send('hello'); - }); - }); - var ws = new WebSocket('ws://localhost:' + port); - ws.on('message', function(message) { - message.should.eql('hello'); - wss.close(); - srv.close(); - done(); - }); - }); - }); - }); - - describe('hybi mode', function() { - describe('connection establishing', function() { - it('does not accept connections with no sec-websocket-key', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'websocket' - } - }; - var req = http.request(options); - req.end(); - req.on('response', function(res) { - res.statusCode.should.eql(400); - wss.close(); - done(); - }); - }); - wss.on('connection', function(ws) { - done(new Error('connection must not be established')); - }); - wss.on('error', function() {}); - }); - - it('does not accept connections with no sec-websocket-version', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'websocket', - 'Sec-WebSocket-Key': 'dGhlIHNhbXBsZSBub25jZQ==' - } - }; - var req = http.request(options); - req.end(); - req.on('response', function(res) { - res.statusCode.should.eql(400); - wss.close(); - done(); - }); - }); - wss.on('connection', function(ws) { - done(new Error('connection must not be established')); - }); - wss.on('error', function() {}); - }); - - it('does not accept connections with invalid sec-websocket-version', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'websocket', - 'Sec-WebSocket-Key': 'dGhlIHNhbXBsZSBub25jZQ==', - 'Sec-WebSocket-Version': 12 - } - }; - var req = http.request(options); - req.end(); - req.on('response', function(res) { - res.statusCode.should.eql(400); - wss.close(); - done(); - }); - }); - wss.on('connection', function(ws) { - done(new Error('connection must not be established')); - }); - wss.on('error', function() {}); - }); - - it('client can be denied', function(done) { - var wss = new WebSocketServer({port: ++port, verifyClient: function(o) { - return false; - }}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'websocket', - 'Sec-WebSocket-Key': 'dGhlIHNhbXBsZSBub25jZQ==', - 'Sec-WebSocket-Version': 8, - 'Sec-WebSocket-Origin': 'http://foobar.com' - } - }; - var req = http.request(options); - req.end(); - req.on('response', function(res) { - res.statusCode.should.eql(401); - process.nextTick(function() { - wss.close(); - done(); - }); - }); - }); - wss.on('connection', function(ws) { - done(new Error('connection must not be established')); - }); - wss.on('error', function() {}); - }); - - it('client can be accepted', function(done) { - var wss = new WebSocketServer({port: ++port, verifyClient: function(o) { - return true; - }}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'websocket', - 'Sec-WebSocket-Key': 'dGhlIHNhbXBsZSBub25jZQ==', - 'Sec-WebSocket-Version': 13, - 'Origin': 'http://foobar.com' - } - }; - var req = http.request(options); - req.end(); - }); - wss.on('connection', function(ws) { - ws.terminate(); - wss.close(); - done(); - }); - wss.on('error', function() {}); - }); - - it('verifyClient gets client origin', function(done) { - var verifyClientCalled = false; - var wss = new WebSocketServer({port: ++port, verifyClient: function(info) { - info.origin.should.eql('http://foobarbaz.com'); - verifyClientCalled = true; - return false; - }}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'websocket', - 'Sec-WebSocket-Key': 'dGhlIHNhbXBsZSBub25jZQ==', - 'Sec-WebSocket-Version': 13, - 'Origin': 'http://foobarbaz.com' - } - }; - var req = http.request(options); - req.end(); - req.on('response', function(res) { - verifyClientCalled.should.be.ok; - wss.close(); - done(); - }); - }); - wss.on('error', function() {}); - }); - - it('verifyClient gets original request', function(done) { - var verifyClientCalled = false; - var wss = new WebSocketServer({port: ++port, verifyClient: function(info) { - info.req.headers['sec-websocket-key'].should.eql('dGhlIHNhbXBsZSBub25jZQ=='); - verifyClientCalled = true; - return false; - }}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'websocket', - 'Sec-WebSocket-Key': 'dGhlIHNhbXBsZSBub25jZQ==', - 'Sec-WebSocket-Version': 13, - 'Origin': 'http://foobarbaz.com' - } - }; - var req = http.request(options); - req.end(); - req.on('response', function(res) { - verifyClientCalled.should.be.ok; - wss.close(); - done(); - }); - }); - wss.on('error', function() {}); - }); - - it('verifyClient has secure:true for ssl connections', function(done) { - var options = { - key: fs.readFileSync('test/fixtures/key.pem'), - cert: fs.readFileSync('test/fixtures/certificate.pem') - }; - var app = https.createServer(options, function (req, res) { - res.writeHead(200); - res.end(); - }); - var success = false; - var wss = new WebSocketServer({ - server: app, - verifyClient: function(info) { - success = info.secure === true; - return true; - } - }); - app.listen(++port, function() { - var ws = new WebSocket('wss://localhost:' + port); - }); - wss.on('connection', function(ws) { - app.close(); - ws.terminate(); - wss.close(); - success.should.be.ok; - done(); - }); - }); - - it('verifyClient has secure:false for non-ssl connections', function(done) { - var app = http.createServer(function (req, res) { - res.writeHead(200); - res.end(); - }); - var success = false; - var wss = new WebSocketServer({ - server: app, - verifyClient: function(info) { - success = info.secure === false; - return true; - } - }); - app.listen(++port, function() { - var ws = new WebSocket('ws://localhost:' + port); - }); - wss.on('connection', function(ws) { - app.close(); - ws.terminate(); - wss.close(); - success.should.be.ok; - done(); - }); - }); - - it('client can be denied asynchronously', function(done) { - var wss = new WebSocketServer({port: ++port, verifyClient: function(o, cb) { - process.nextTick(function() { - cb(false); - }); - }}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'websocket', - 'Sec-WebSocket-Key': 'dGhlIHNhbXBsZSBub25jZQ==', - 'Sec-WebSocket-Version': 8, - 'Sec-WebSocket-Origin': 'http://foobar.com' - } - }; - var req = http.request(options); - req.end(); - req.on('response', function(res) { - res.statusCode.should.eql(401); - process.nextTick(function() { - wss.close(); - done(); - }); - }); - }); - wss.on('connection', function(ws) { - done(new Error('connection must not be established')); - }); - wss.on('error', function() {}); - }); - - it('client can be accepted asynchronously', function(done) { - var wss = new WebSocketServer({port: ++port, verifyClient: function(o, cb) { - process.nextTick(function() { - cb(true); - }); - }}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'websocket', - 'Sec-WebSocket-Key': 'dGhlIHNhbXBsZSBub25jZQ==', - 'Sec-WebSocket-Version': 13, - 'Origin': 'http://foobar.com' - } - }; - var req = http.request(options); - req.end(); - }); - wss.on('connection', function(ws) { - ws.terminate(); - wss.close(); - done(); - }); - wss.on('error', function() {}); - }); - - it('handles messages passed along with the upgrade request (upgrade head)', function(done) { - var wss = new WebSocketServer({port: ++port, verifyClient: function(o) { - return true; - }}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'websocket', - 'Sec-WebSocket-Key': 'dGhlIHNhbXBsZSBub25jZQ==', - 'Sec-WebSocket-Version': 13, - 'Origin': 'http://foobar.com' - } - }; - var req = http.request(options); - req.write(new Buffer([0x81, 0x05, 0x48, 0x65, 0x6c, 0x6c, 0x6f], 'binary')); - req.end(); - }); - wss.on('connection', function(ws) { - ws.on('message', function(data) { - data.should.eql('Hello'); - ws.terminate(); - wss.close(); - done(); - }); - }); - wss.on('error', function() {}); - }); - - it('selects the first protocol by default', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var ws = new WebSocket('ws://localhost:' + port, {protocol: 'prot1, prot2'}); - ws.on('open', function(client) { - ws.protocol.should.eql('prot1'); - wss.close(); - done(); - }); - }); - }); - - it('selects the last protocol via protocol handler', function(done) { - var wss = new WebSocketServer({port: ++port, handleProtocols: function(ps, cb) { - cb(true, ps[ps.length-1]); }}, function() { - var ws = new WebSocket('ws://localhost:' + port, {protocol: 'prot1, prot2'}); - ws.on('open', function(client) { - ws.protocol.should.eql('prot2'); - wss.close(); - done(); - }); - }); - }); - - it('client detects invalid server protocol', function(done) { - var wss = new WebSocketServer({port: ++port, handleProtocols: function(ps, cb) { - cb(true, 'prot3'); }}, function() { - var ws = new WebSocket('ws://localhost:' + port, {protocol: 'prot1, prot2'}); - ws.on('open', function(client) { - done(new Error('connection must not be established')); - }); - ws.on('error', function() { - done(); - }); - }); - }); - - it('client detects no server protocol', function(done) { - var wss = new WebSocketServer({port: ++port, handleProtocols: function(ps, cb) { - cb(true); }}, function() { - var ws = new WebSocket('ws://localhost:' + port, {protocol: 'prot1, prot2'}); - ws.on('open', function(client) { - done(new Error('connection must not be established')); - }); - ws.on('error', function() { - done(); - }); - }); - }); - - it('client refuses server protocols', function(done) { - var wss = new WebSocketServer({port: ++port, handleProtocols: function(ps, cb) { - cb(false); }}, function() { - var ws = new WebSocket('ws://localhost:' + port, {protocol: 'prot1, prot2'}); - ws.on('open', function(client) { - done(new Error('connection must not be established')); - }); - ws.on('error', function() { - done(); - }); - }); - }); - - it('server detects invalid protocol handler', function(done) { - var wss = new WebSocketServer({port: ++port, handleProtocols: function(ps, cb) { - // not calling callback is an error and shouldn't timeout - }}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'websocket', - 'Sec-WebSocket-Key': 'dGhlIHNhbXBsZSBub25jZQ==', - 'Sec-WebSocket-Version': 13, - 'Sec-WebSocket-Origin': 'http://foobar.com' - } - }; - options.port = port; - var req = http.request(options); - req.end(); - req.on('response', function(res) { - res.statusCode.should.eql(501); - wss.close(); - done(); - }); - }); - wss.on('connection', function(ws) { - done(new Error('connection must not be established')); - }); - wss.on('error', function() {}); - }); - }); - - describe('messaging', function() { - it('can send and receive data', function(done) { - var data = new Array(65*1024); - for (var i = 0; i < data.length; ++i) { - data[i] = String.fromCharCode(65 + ~~(25 * Math.random())); - } - data = data.join(''); - var wss = new WebSocketServer({port: ++port}, function() { - var ws = new WebSocket('ws://localhost:' + port); - ws.on('message', function(message, flags) { - ws.send(message); - }); - }); - wss.on('connection', function(client) { - client.on('message', function(message) { - message.should.eql(data); - wss.close(); - done(); - }); - client.send(data); - }); - }); - }); - }); - - describe('hixie mode', function() { - it('can be disabled', function(done) { - var wss = new WebSocketServer({port: ++port, disableHixie: true}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'WebSocket', - 'Sec-WebSocket-Key1': '3e6b263 4 17 80', - 'Sec-WebSocket-Key2': '17 9 G`ZD9 2 2b 7X 3 /r90' - } - }; - var req = http.request(options); - req.write('WjN}|M(6'); - req.end(); - req.on('response', function(res) { - res.statusCode.should.eql(401); - process.nextTick(function() { - wss.close(); - done(); - }); - }); - }); - wss.on('connection', function(ws) { - done(new Error('connection must not be established')); - }); - wss.on('error', function() {}); - }); - - describe('connection establishing', function() { - it('does not accept connections with no sec-websocket-key1', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'WebSocket', - 'Sec-WebSocket-Key1': '3e6b263 4 17 80' - } - }; - var req = http.request(options); - req.end(); - req.on('response', function(res) { - res.statusCode.should.eql(400); - wss.close(); - done(); - }); - }); - wss.on('connection', function(ws) { - done(new Error('connection must not be established')); - }); - wss.on('error', function() {}); - }); - - it('does not accept connections with no sec-websocket-key2', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'WebSocket', - 'Sec-WebSocket-Key2': '17 9 G`ZD9 2 2b 7X 3 /r90' - } - }; - var req = http.request(options); - req.end(); - req.on('response', function(res) { - res.statusCode.should.eql(400); - wss.close(); - done(); - }); - }); - wss.on('connection', function(ws) { - done(new Error('connection must not be established')); - }); - wss.on('error', function() {}); - }); - - it('accepts connections with valid handshake', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'WebSocket', - 'Sec-WebSocket-Key1': '3e6b263 4 17 80', - 'Sec-WebSocket-Key2': '17 9 G`ZD9 2 2b 7X 3 /r90' - } - }; - var req = http.request(options); - req.write('WjN}|M(6'); - req.end(); - }); - wss.on('connection', function(ws) { - ws.terminate(); - wss.close(); - done(); - }); - wss.on('error', function() {}); - }); - - it('client can be denied', function(done) { - var wss = new WebSocketServer({port: ++port, verifyClient: function(o) { - return false; - }}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'WebSocket', - 'Sec-WebSocket-Key1': '3e6b263 4 17 80', - 'Sec-WebSocket-Key2': '17 9 G`ZD9 2 2b 7X 3 /r90' - } - }; - var req = http.request(options); - req.write('WjN}|M(6'); - req.end(); - req.on('response', function(res) { - res.statusCode.should.eql(401); - process.nextTick(function() { - wss.close(); - done(); - }); - }); - }); - wss.on('connection', function(ws) { - done(new Error('connection must not be established')); - }); - wss.on('error', function() {}); - }); - - it('client can be accepted', function(done) { - var wss = new WebSocketServer({port: ++port, verifyClient: function(o) { - return true; - }}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'WebSocket', - 'Sec-WebSocket-Key1': '3e6b263 4 17 80', - 'Sec-WebSocket-Key2': '17 9 G`ZD9 2 2b 7X 3 /r90' - } - }; - var req = http.request(options); - req.write('WjN}|M(6'); - req.end(); - }); - wss.on('connection', function(ws) { - ws.terminate(); - wss.close(); - done(); - }); - wss.on('error', function() {}); - }); - - it('verifyClient gets client origin', function(done) { - var verifyClientCalled = false; - var wss = new WebSocketServer({port: ++port, verifyClient: function(info) { - info.origin.should.eql('http://foobarbaz.com'); - verifyClientCalled = true; - return false; - }}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'WebSocket', - 'Origin': 'http://foobarbaz.com', - 'Sec-WebSocket-Key1': '3e6b263 4 17 80', - 'Sec-WebSocket-Key2': '17 9 G`ZD9 2 2b 7X 3 /r90' - } - }; - var req = http.request(options); - req.write('WjN}|M(6'); - req.end(); - req.on('response', function(res) { - verifyClientCalled.should.be.ok; - wss.close(); - done(); - }); - }); - wss.on('error', function() {}); - }); - - it('verifyClient gets original request', function(done) { - var verifyClientCalled = false; - var wss = new WebSocketServer({port: ++port, verifyClient: function(info) { - info.req.headers['sec-websocket-key1'].should.eql('3e6b263 4 17 80'); - verifyClientCalled = true; - return false; - }}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'WebSocket', - 'Origin': 'http://foobarbaz.com', - 'Sec-WebSocket-Key1': '3e6b263 4 17 80', - 'Sec-WebSocket-Key2': '17 9 G`ZD9 2 2b 7X 3 /r90' - } - }; - var req = http.request(options); - req.write('WjN}|M(6'); - req.end(); - req.on('response', function(res) { - verifyClientCalled.should.be.ok; - wss.close(); - done(); - }); - }); - wss.on('error', function() {}); - }); - - it('client can be denied asynchronously', function(done) { - var wss = new WebSocketServer({port: ++port, verifyClient: function(o, cb) { - cb(false); - }}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'WebSocket', - 'Origin': 'http://foobarbaz.com', - 'Sec-WebSocket-Key1': '3e6b263 4 17 80', - 'Sec-WebSocket-Key2': '17 9 G`ZD9 2 2b 7X 3 /r90' - } - }; - var req = http.request(options); - req.write('WjN}|M(6'); - req.end(); - req.on('response', function(res) { - res.statusCode.should.eql(401); - process.nextTick(function() { - wss.close(); - done(); - }); - }); - }); - wss.on('connection', function(ws) { - done(new Error('connection must not be established')); - }); - wss.on('error', function() {}); - }); - - it('client can be accepted asynchronously', function(done) { - var wss = new WebSocketServer({port: ++port, verifyClient: function(o, cb) { - cb(true); - }}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'WebSocket', - 'Origin': 'http://foobarbaz.com', - 'Sec-WebSocket-Key1': '3e6b263 4 17 80', - 'Sec-WebSocket-Key2': '17 9 G`ZD9 2 2b 7X 3 /r90' - } - }; - var req = http.request(options); - req.write('WjN}|M(6'); - req.end(); - }); - wss.on('connection', function(ws) { - wss.close(); - done(); - }); - wss.on('error', function() {}); - }); - - it('handles messages passed along with the upgrade request (upgrade head)', function(done) { - var wss = new WebSocketServer({port: ++port, verifyClient: function(o) { - return true; - }}, function() { - var options = { - port: port, - host: '127.0.0.1', - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'WebSocket', - 'Sec-WebSocket-Key1': '3e6b263 4 17 80', - 'Sec-WebSocket-Key2': '17 9 G`ZD9 2 2b 7X 3 /r90', - 'Origin': 'http://foobar.com' - } - }; - var req = http.request(options); - req.write('WjN}|M(6'); - req.write(new Buffer([0x00, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0xff], 'binary')); - req.end(); - }); - wss.on('connection', function(ws) { - ws.on('message', function(data) { - data.should.eql('Hello'); - ws.terminate(); - wss.close(); - done(); - }); - }); - wss.on('error', function() {}); - }); - }); - }); - - describe('client properties', function() { - it('protocol is exposed', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var ws = new WebSocket('ws://localhost:' + port, {protocol: 'hi'}); - }); - wss.on('connection', function(client) { - client.protocol.should.eql('hi'); - wss.close(); - done(); - }); - }); - - it('protocolVersion is exposed', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var ws = new WebSocket('ws://localhost:' + port, {protocolVersion: 8}); - }); - wss.on('connection', function(client) { - client.protocolVersion.should.eql(8); - wss.close(); - done(); - }); - }); - - it('upgradeReq is the original request object', function(done) { - var wss = new WebSocketServer({port: ++port}, function() { - var ws = new WebSocket('ws://localhost:' + port, {protocolVersion: 8}); - }); - wss.on('connection', function(client) { - client.upgradeReq.httpVersion.should.eql('1.1'); - wss.close(); - done(); - }); - }); - }); - -}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/autobahn-server.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/autobahn-server.js deleted file mode 100644 index 36fe0c24..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/autobahn-server.js +++ /dev/null @@ -1,29 +0,0 @@ -var WebSocketServer = require('../').Server; - -process.on('uncaughtException', function(err) { - console.log('Caught exception: ', err, err.stack); -}); - -process.on('SIGINT', function () { - try { - console.log('Updating reports and shutting down'); - var ws = new WebSocket('ws://localhost:9001/updateReports?agent=ws'); - ws.on('close', function() { - process.exit(); - }); - } - catch(e) { - process.exit(); - } -}); - -var wss = new WebSocketServer({port: 8181}); -wss.on('connection', function(ws) { - console.log('new connection'); - ws.on('message', function(data, flags) { - ws.send(flags.buffer, {binary: flags.binary === true}); - }); - ws.on('error', function() { - console.log('error', arguments); - }); -}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/autobahn.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/autobahn.js deleted file mode 100644 index 048cc904..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/autobahn.js +++ /dev/null @@ -1,52 +0,0 @@ -var WebSocket = require('../'); -var currentTest = 1; -var lastTest = -1; -var testCount = null; - -process.on('uncaughtException', function(err) { - console.log('Caught exception: ', err, err.stack); -}); - -process.on('SIGINT', function () { - try { - console.log('Updating reports and shutting down'); - var ws = new WebSocket('ws://localhost:9001/updateReports?agent=ws'); - ws.on('close', function() { - process.exit(); - }); - } - catch(e) { - process.exit(); - } -}); - -function nextTest() { - if (currentTest > testCount || (lastTest != -1 && currentTest > lastTest)) { - console.log('Updating reports and shutting down'); - var ws = new WebSocket('ws://localhost:9001/updateReports?agent=ws'); - ws.on('close', function() { - process.exit(); - }); - return; - }; - console.log('Running test case ' + currentTest + '/' + testCount); - var ws = new WebSocket('ws://localhost:9001/runCase?case=' + currentTest + '&agent=ws'); - ws.on('message', function(data, flags) { - ws.send(flags.buffer, {binary: flags.binary === true, mask: true}); - }); - ws.on('close', function(data) { - currentTest += 1; - process.nextTick(nextTest); - }); - ws.on('error', function(e) {}); -} - -var ws = new WebSocket('ws://localhost:9001/getCaseCount'); -ws.on('message', function(data, flags) { - testCount = parseInt(data); -}); -ws.on('close', function() { - if (testCount > 0) { - nextTest(); - } -}); \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/agent1-cert.pem b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/agent1-cert.pem deleted file mode 100644 index cccb9fb4..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/agent1-cert.pem +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICbjCCAdcCCQCVvok5oeLpqzANBgkqhkiG9w0BAQUFADB6MQswCQYDVQQGEwJV -UzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQKEwZKb3llbnQxEDAO -BgNVBAsTB05vZGUuanMxDDAKBgNVBAMTA2NhMTEgMB4GCSqGSIb3DQEJARYRcnlA -dGlueWNsb3Vkcy5vcmcwHhcNMTMwMzA4MDAzMDIyWhcNNDAwNzIzMDAzMDIyWjB9 -MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQK -EwZKb3llbnQxEDAOBgNVBAsTB05vZGUuanMxDzANBgNVBAMTBmFnZW50MTEgMB4G -CSqGSIb3DQEJARYRcnlAdGlueWNsb3Vkcy5vcmcwgZ8wDQYJKoZIhvcNAQEBBQAD -gY0AMIGJAoGBAL6GwKosYb0Yc3Qo0OtQVlCJ4208Idw11ij+t2W5sfYbCil5tyQo -jnhGM1CJhEXynQpXXwjKJuIeTQCkeUibTyFKa0bs8+li2FiGoKYbb4G81ovnqkmE -2iDVb8Gw3rrM4zeZ0ZdFnjMsAZac8h6+C4sB/pS9BiMOo6qTl15RQlcJAgMBAAEw -DQYJKoZIhvcNAQEFBQADgYEAOtmLo8DwTPnI4wfQbQ3hWlTS/9itww6IsxH2ODt9 -ggB7wi7N3uAdIWRZ54ke0NEAO5CW1xNTwsWcxQbiHrDOqX1vfVCjIenI76jVEEap -/Ay53ydHNBKdsKkib61Me14Mu0bA3lUul57VXwmH4NUEFB3w973Q60PschUhOEXj -7DY= ------END CERTIFICATE----- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/agent1-key.pem b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/agent1-key.pem deleted file mode 100644 index cbd5f0c2..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/agent1-key.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQC+hsCqLGG9GHN0KNDrUFZQieNtPCHcNdYo/rdlubH2Gwopebck -KI54RjNQiYRF8p0KV18IyibiHk0ApHlIm08hSmtG7PPpYthYhqCmG2+BvNaL56pJ -hNog1W/BsN66zOM3mdGXRZ4zLAGWnPIevguLAf6UvQYjDqOqk5deUUJXCQIDAQAB -AoGANu/CBA+SCyVOvRK70u4yRTzNMAUjukxnuSBhH1rg/pajYnwvG6T6F6IeT72n -P0gKkh3JUE6B0bds+p9yPUZTFUXghxjcF33wlIY44H6gFE4K5WutsFJ9c450wtuu -8rXZTsIg7lAXWjTFVmdtOEPetcGlO2Hpi1O7ZzkzHgB2w9ECQQDksCCYx78or1zY -ZSokm8jmpIjG3VLKdvI9HAoJRN40ldnwFoigrFa1AHwsFtWNe8bKyVRPDoLDUjpB -dkPWgweVAkEA1UfgqguQ2KIkbtp9nDBionu3QaajksrRHwIa8vdfRfLxszfHk2fh -NGY3dkRZF8HUAbzYLrd9poVhCBAEjWekpQJASOM6AHfpnXYHCZF01SYx6hEW5wsz -kARJQODm8f1ZNTlttO/5q/xBxn7ZFNRSTD3fJlL05B2j380ddC/Vf1FT4QJAP1BC -GliqnBSuGhZUWYxni3KMeTm9rzL0F29pjpzutHYlWB2D6ndY/FQnvL0XcZ0Bka58 -womIDGnl3x3aLBwLXQJBAJv6h5CHbXHx7VyDJAcNfppAqZGcEaiVg8yf2F33iWy2 -FLthhJucx7df7SO2aw5h06bRDRAhb9br0R9/3mLr7RE= ------END RSA PRIVATE KEY----- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/ca1-cert.pem b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/ca1-cert.pem deleted file mode 100644 index 1d0c0d68..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/ca1-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICazCCAdQCCQC9/g69HtxXRzANBgkqhkiG9w0BAQUFADB6MQswCQYDVQQGEwJV -UzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQKEwZKb3llbnQxEDAO -BgNVBAsTB05vZGUuanMxDDAKBgNVBAMTA2NhMTEgMB4GCSqGSIb3DQEJARYRcnlA -dGlueWNsb3Vkcy5vcmcwHhcNMTMwMzA4MDAzMDIyWhcNNDAwNzIzMDAzMDIyWjB6 -MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQK -EwZKb3llbnQxEDAOBgNVBAsTB05vZGUuanMxDDAKBgNVBAMTA2NhMTEgMB4GCSqG -SIb3DQEJARYRcnlAdGlueWNsb3Vkcy5vcmcwgZ8wDQYJKoZIhvcNAQEBBQADgY0A -MIGJAoGBAKxr1mARUcv7zaqx5y4AxJPK6c1jdbSg7StcL4vg8klaPAlfNO6o+/Cl -w5CdQD3ukaVUwUOJ4T/+b3Xf7785XcWBC33GdjVQkfbHATJYcka7j7JDw3qev5Jk -1rAbRw48hF6rYlSGcx1mccAjoLoa3I8jgxCNAYHIjUQXgdmU893rAgMBAAEwDQYJ -KoZIhvcNAQEFBQADgYEAis05yxjCtJRuv8uX/DK6TX/j9C9Lzp1rKDNFTaTZ0iRw -KCw1EcNx4OXSj9gNblW4PWxpDvygrt1AmH9h2cb8K859NSHa9JOBFw6MA5C2A4Sj -NQfNATqUl4T6cdORlcDEZwHtT8b6D4A6Er31G/eJF4Sen0TUFpjdjd+l9RBjHlo= ------END CERTIFICATE----- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/ca1-key.pem b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/ca1-key.pem deleted file mode 100644 index df149508..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/ca1-key.pem +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN ENCRYPTED PRIVATE KEY----- -MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIFeWxJE1BrRECAggA -MBQGCCqGSIb3DQMHBAgu9PlMSQ+BOASCAoDEZN2tX0xWo/N+Jg+PrvCrFDk3P+3x -5xG/PEDjtMCAWPBEwbnaYHDzYmhNcAmxzGqEHGMDiWYs46LbO560VS3uMvFbEWPo -KYYVb13vkxl2poXdonCb5cHZA5GUYzTIVVJFptl4LHwBczHoMHtA4FqAhKlYvlWw -EOrdLB8XcwMmGPFabbbGxno0+EWWM27uNjlogfoxj35mQqSW4rOlhZ460XjOB1Zx -LjXMuZeONojkGYQRG5EUMchBoctQpCOM6cAi9r1B9BvtFCBpDV1c1zEZBzTEUd8o -kLn6tjLmY+QpTdylFjEWc7U3ppLY/pkoTBv4r85a2sEMWqkhSJboLaTboWzDJcU3 -Ke61pMpovt/3yCUd3TKgwduVwwQtDVTlBe0p66aN9QVj3CrFy/bKAGO3vxlli24H -aIjZf+OVoBY21ESlW3jLvNlBf7Ezf///2E7j4SCDLyZSFMTpFoAG/jDRyvi+wTKX -Kh485Bptnip6DCSuoH4u2SkOqwz3gJS/6s02YKe4m311QT4Pzne5/FwOFaS/HhQg -Xvyh2/d00OgJ0Y0PYQsHILPRgTUCKUXvj1O58opn3fxSacsPxIXwj6Z4FYAjUTaV -2B85k1lpant/JJEilDqMjqzx4pHZ/Z3Uto1lSM1JZs9SNL/0UR+6F0TXZTULVU9V -w8jYzz4sPr7LEyrrTbzmjQgnQFVbhAN/eKgRZK/SpLjxpmBV5MfpbPKsPUZqT4UC -4nXa8a/NYUQ9e+QKK8enq9E599c2W442W7Z1uFRZTWReMx/lF8wwA6G8zOPG0bdj -d+T5Gegzd5mvRiXMBklCo8RLxOOvgxun1n3PY4a63aH6mqBhdfhiLp5j ------END ENCRYPTED PRIVATE KEY----- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/certificate.pem b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/certificate.pem deleted file mode 100644 index 0efc2ef5..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/certificate.pem +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICATCCAWoCCQDPufXH86n2QzANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJu -bzETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0 -cyBQdHkgTHRkMB4XDTEyMDEwMTE0NDQwMFoXDTIwMDMxOTE0NDQwMFowRTELMAkG -A1UEBhMCbm8xEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0 -IFdpZGdpdHMgUHR5IEx0ZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtrQ7 -+r//2iV/B6F+4boH0XqFn7alcV9lpjvAmwRXNKnxAoa0f97AjYPGNLKrjpkNXXhB -JROIdbRbZnCNeC5fzX1a+JCo7KStzBXuGSZr27TtFmcV4H+9gIRIcNHtZmJLnxbJ -sIhkGR8yVYdmJZe4eT5ldk1zoB1adgPF1hZhCBMCAwEAATANBgkqhkiG9w0BAQUF -AAOBgQCeWBEHYJ4mCB5McwSSUox0T+/mJ4W48L/ZUE4LtRhHasU9hiW92xZkTa7E -QLcoJKQiWfiLX2ysAro0NX4+V8iqLziMqvswnPzz5nezaOLE/9U/QvH3l8qqNkXu -rNbsW1h/IO6FV8avWFYVFoutUwOaZ809k7iMh2F2JMgXQ5EymQ== ------END CERTIFICATE----- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/key.pem b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/key.pem deleted file mode 100644 index 176fe320..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/key.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQC2tDv6v//aJX8HoX7hugfReoWftqVxX2WmO8CbBFc0qfEChrR/ -3sCNg8Y0squOmQ1deEElE4h1tFtmcI14Ll/NfVr4kKjspK3MFe4ZJmvbtO0WZxXg -f72AhEhw0e1mYkufFsmwiGQZHzJVh2Yll7h5PmV2TXOgHVp2A8XWFmEIEwIDAQAB -AoGAAlVY8sHi/aE+9xT77twWX3mGHV0SzdjfDnly40fx6S1Gc7bOtVdd9DC7pk6l -3ENeJVR02IlgU8iC5lMHq4JEHPE272jtPrLlrpWLTGmHEqoVFv9AITPqUDLhB9Kk -Hjl7h8NYBKbr2JHKICr3DIPKOT+RnXVb1PD4EORbJ3ooYmkCQQDfknUnVxPgxUGs -ouABw1WJIOVgcCY/IFt4Ihf6VWTsxBgzTJKxn3HtgvE0oqTH7V480XoH0QxHhjLq -DrgobWU9AkEA0TRJ8/ouXGnFEPAXjWr9GdPQRZ1Use2MrFjneH2+Sxc0CmYtwwqL -Kr5kS6mqJrxprJeluSjBd+3/ElxURrEXjwJAUvmlN1OPEhXDmRHd92mKnlkyKEeX -OkiFCiIFKih1S5Y/sRJTQ0781nyJjtJqO7UyC3pnQu1oFEePL+UEniRztQJAMfav -AtnpYKDSM+1jcp7uu9BemYGtzKDTTAYfoiNF42EzSJiGrWJDQn4eLgPjY0T0aAf/ -yGz3Z9ErbhMm/Ysl+QJBAL4kBxRT8gM4ByJw4sdOvSeCCANFq8fhbgm8pGWlCPb5 -JGmX3/GHFM8x2tbWMGpyZP1DLtiNEFz7eCGktWK5rqE= ------END RSA PRIVATE KEY----- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/request.pem b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/request.pem deleted file mode 100644 index 51bc7f62..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/request.pem +++ /dev/null @@ -1,11 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIBhDCB7gIBADBFMQswCQYDVQQGEwJubzETMBEGA1UECAwKU29tZS1TdGF0ZTEh -MB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQC2tDv6v//aJX8HoX7hugfReoWftqVxX2WmO8CbBFc0qfEC -hrR/3sCNg8Y0squOmQ1deEElE4h1tFtmcI14Ll/NfVr4kKjspK3MFe4ZJmvbtO0W -ZxXgf72AhEhw0e1mYkufFsmwiGQZHzJVh2Yll7h5PmV2TXOgHVp2A8XWFmEIEwID -AQABoAAwDQYJKoZIhvcNAQEFBQADgYEAjsUXEARgfxZNkMjuUcudgU2w4JXS0gGI -JQ0U1LmU0vMDSKwqndMlvCbKzEgPbJnGJDI8D4MeINCJHa5Ceyb8c+jaJYUcCabl -lQW5Psn3+eWp8ncKlIycDRj1Qk615XuXtV0fhkrgQM2ZCm9LaQ1O1Gd/CzLihLjF -W0MmgMKMMRk= ------END CERTIFICATE REQUEST----- diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/textfile b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/textfile deleted file mode 100644 index a10483b0..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/fixtures/textfile +++ /dev/null @@ -1,9 +0,0 @@ -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam egestas, massa at aliquam luctus, sapien erat viverra elit, nec pulvinar turpis eros sagittis urna. Pellentesque imperdiet tempor varius. Pellentesque blandit, ipsum in imperdiet venenatis, mi elit faucibus odio, id condimentum ante enim sed lectus. Aliquam et odio non odio pellentesque pulvinar. Vestibulum a erat dolor. Integer pretium risus sit amet nisl volutpat nec venenatis magna egestas. Ut bibendum felis eu tellus laoreet eleifend. Nam pulvinar auctor tortor, eu iaculis leo vestibulum quis. In euismod risus ac purus vehicula et fermentum ligula consectetur. Vivamus condimentum tempus lacinia. - -Curabitur sodales condimentum urna id dictum. Sed quis justo sit amet quam ultrices tincidunt vel laoreet nulla. Nullam quis ipsum sed nisi mollis bibendum at sit amet nisi. Donec laoreet consequat velit sit amet mollis. Nam sed sapien a massa iaculis dapibus. Sed dui nunc, ultricies et pellentesque ullamcorper, aliquet vitae ligula. Integer eu velit in neque iaculis venenatis. Ut rhoncus cursus est, ac dignissim leo vehicula a. Nulla ullamcorper vulputate mauris id blandit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque eleifend, nisi a tempor sollicitudin, odio massa pretium urna, quis congue sapien elit at tortor. Curabitur ipsum orci, vehicula non commodo molestie, laoreet id enim. Pellentesque convallis ultrices congue. Pellentesque nec iaculis lorem. In sagittis pharetra ipsum eget sodales. - -Fusce id nulla odio. Nunc nibh justo, placerat vel tincidunt sed, ornare et enim. Nulla vel urna vel ante commodo bibendum in vitae metus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Duis erat nunc, semper eget sagittis sit amet, ullamcorper eget lacus. Donec hendrerit ipsum vitae eros vestibulum eu gravida neque tincidunt. Ut molestie lacinia nulla. Donec mattis odio at magna egestas at pellentesque eros accumsan. Praesent interdum sem sit amet nibh commodo dignissim. Duis laoreet, enim ultricies fringilla suscipit, enim libero cursus nulla, sollicitudin adipiscing erat velit ut dui. Nulla eleifend mauris at velit fringilla a molestie lorem venenatis. - -Donec sit amet scelerisque metus. Cras ac felis a nulla venenatis vulputate. Duis porttitor eros ac neque rhoncus eget aliquet neque egestas. Quisque sed nunc est, vitae dapibus quam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In vehicula, est vitae posuere ultricies, diam purus pretium sapien, nec rhoncus dolor nisl eget arcu. Aliquam et nisi vitae risus tincidunt auctor. In vehicula, erat a cursus adipiscing, lorem orci congue est, nec ultricies elit dui in nunc. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Lorem ipsum dolor sit amet, consectetur adipiscing elit. - -Duis congue tempus elit sit amet auctor. Duis dignissim, risus ut sollicitudin ultricies, dolor ligula gravida odio, nec congue orci purus ut ligula. Fusce pretium dictum lectus at volutpat. Sed non auctor mauris. Etiam placerat vestibulum massa id blandit. Quisque consequat lacus ut nulla euismod facilisis. Sed aliquet ipsum nec mi imperdiet viverra. Pellentesque ullamcorper, lectus nec varius gravida, odio justo cursus risus, eu sagittis metus arcu quis felis. Phasellus consectetur vehicula libero, at condimentum orci euismod vel. Nunc purus tortor, suscipit nec fringilla nec, vulputate et nibh. Nam porta vehicula neque. Praesent porttitor, sapien eu auctor euismod, arcu quam elementum urna, sed hendrerit magna augue sed quam. \ No newline at end of file diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/hybi-common.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/hybi-common.js deleted file mode 100644 index 006f9c69..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/hybi-common.js +++ /dev/null @@ -1,99 +0,0 @@ -/** - * Returns a Buffer from a "ff 00 ff"-type hex string. - */ - -getBufferFromHexString = function(byteStr) { - var bytes = byteStr.split(' '); - var buf = new Buffer(bytes.length); - for (var i = 0; i < bytes.length; ++i) { - buf[i] = parseInt(bytes[i], 16); - } - return buf; -} - -/** - * Returns a hex string from a Buffer. - */ - -getHexStringFromBuffer = function(data) { - var s = ''; - for (var i = 0; i < data.length; ++i) { - s += padl(data[i].toString(16), 2, '0') + ' '; - } - return s.trim(); -} - -/** - * Splits a buffer in two parts. - */ - -splitBuffer = function(buffer) { - var b1 = new Buffer(Math.ceil(buffer.length / 2)); - buffer.copy(b1, 0, 0, b1.length); - var b2 = new Buffer(Math.floor(buffer.length / 2)); - buffer.copy(b2, 0, b1.length, b1.length + b2.length); - return [b1, b2]; -} - -/** - * Performs hybi07+ type masking on a hex string or buffer. - */ - -mask = function(buf, maskString) { - if (typeof buf == 'string') buf = new Buffer(buf); - var mask = getBufferFromHexString(maskString || '34 83 a8 68'); - for (var i = 0; i < buf.length; ++i) { - buf[i] ^= mask[i % 4]; - } - return buf; -} - -/** - * Returns a hex string representing the length of a message - */ - -getHybiLengthAsHexString = function(len, masked) { - if (len < 126) { - var buf = new Buffer(1); - buf[0] = (masked ? 0x80 : 0) | len; - } - else if (len < 65536) { - var buf = new Buffer(3); - buf[0] = (masked ? 0x80 : 0) | 126; - getBufferFromHexString(pack(4, len)).copy(buf, 1); - } - else { - var buf = new Buffer(9); - buf[0] = (masked ? 0x80 : 0) | 127; - getBufferFromHexString(pack(16, len)).copy(buf, 1); - } - return getHexStringFromBuffer(buf); -} - -/** - * Unpacks a Buffer into a number. - */ - -unpack = function(buffer) { - var n = 0; - for (var i = 0; i < buffer.length; ++i) { - n = (i == 0) ? buffer[i] : (n * 256) + buffer[i]; - } - return n; -} - -/** - * Returns a hex string, representing a specific byte count 'length', from a number. - */ - -pack = function(length, number) { - return padl(number.toString(16), length, '0').replace(/([0-9a-f][0-9a-f])/gi, '$1 ').trim(); -} - -/** - * Left pads the string 's' to a total length of 'n' with char 'c'. - */ - -padl = function(s, n, c) { - return new Array(1 + n - s.length).join(c) + s; -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/testserver.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/testserver.js deleted file mode 100644 index 3e7a9667..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/ws/test/testserver.js +++ /dev/null @@ -1,180 +0,0 @@ -var http = require('http') - , util = require('util') - , crypto = require('crypto') - , events = require('events') - , Sender = require('../lib/Sender') - , Receiver = require('../lib/Receiver'); - -module.exports = { - handlers: { - valid: validServer, - invalidKey: invalidRequestHandler, - closeAfterConnect: closeAfterConnectHandler, - return401: return401 - }, - createServer: function(port, handler, cb) { - if (handler && !cb) { - cb = handler; - handler = null; - } - var webServer = http.createServer(function (req, res) { - res.writeHead(200, {'Content-Type': 'text/plain'}); - res.end('okay'); - }); - var srv = new Server(webServer); - webServer.on('upgrade', function(req, socket) { - webServer._socket = socket; - (handler || validServer)(srv, req, socket); - }); - webServer.listen(port, '127.0.0.1', function() { cb(srv); }); - } -}; - -/** - * Test strategies - */ - -function validServer(server, req, socket) { - if (typeof req.headers.upgrade === 'undefined' || - req.headers.upgrade.toLowerCase() !== 'websocket') { - throw new Error('invalid headers'); - return; - } - - if (!req.headers['sec-websocket-key']) { - socket.end(); - throw new Error('websocket key is missing'); - } - - // calc key - var key = req.headers['sec-websocket-key']; - var shasum = crypto.createHash('sha1'); - shasum.update(key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"); - key = shasum.digest('base64'); - - var headers = [ - 'HTTP/1.1 101 Switching Protocols' - , 'Upgrade: websocket' - , 'Connection: Upgrade' - , 'Sec-WebSocket-Accept: ' + key - ]; - - socket.write(headers.concat('', '').join('\r\n')); - socket.setTimeout(0); - socket.setNoDelay(true); - - var sender = new Sender(socket); - var receiver = new Receiver(); - receiver.ontext = function (message, flags) { - server.emit('message', message, flags); - sender.send(message); - }; - receiver.onbinary = function (message, flags) { - flags = flags || {}; - flags.binary = true; - server.emit('message', message, flags); - sender.send(message, {binary: true}); - }; - receiver.onping = function (message, flags) { - flags = flags || {}; - server.emit('ping', message, flags); - }; - receiver.onpong = function (message, flags) { - flags = flags || {}; - server.emit('pong', message, flags); - }; - receiver.onclose = function (code, message, flags) { - flags = flags || {}; - server.emit('close', code, message, flags); - }; - socket.on('data', function (data) { - receiver.add(data); - }); - socket.on('end', function() { - socket.end(); - }); -} - -function invalidRequestHandler(server, req, socket) { - if (typeof req.headers.upgrade === 'undefined' || - req.headers.upgrade.toLowerCase() !== 'websocket') { - throw new Error('invalid headers'); - return; - } - - if (!req.headers['sec-websocket-key']) { - socket.end(); - throw new Error('websocket key is missing'); - } - - // calc key - var key = req.headers['sec-websocket-key']; - var shasum = crypto.createHash('sha1'); - shasum.update(key + "bogus"); - key = shasum.digest('base64'); - - var headers = [ - 'HTTP/1.1 101 Switching Protocols' - , 'Upgrade: websocket' - , 'Connection: Upgrade' - , 'Sec-WebSocket-Accept: ' + key - ]; - - socket.write(headers.concat('', '').join('\r\n')); - socket.end(); -} - -function closeAfterConnectHandler(server, req, socket) { - if (typeof req.headers.upgrade === 'undefined' || - req.headers.upgrade.toLowerCase() !== 'websocket') { - throw new Error('invalid headers'); - return; - } - - if (!req.headers['sec-websocket-key']) { - socket.end(); - throw new Error('websocket key is missing'); - } - - // calc key - var key = req.headers['sec-websocket-key']; - var shasum = crypto.createHash('sha1'); - shasum.update(key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"); - key = shasum.digest('base64'); - - var headers = [ - 'HTTP/1.1 101 Switching Protocols' - , 'Upgrade: websocket' - , 'Connection: Upgrade' - , 'Sec-WebSocket-Accept: ' + key - ]; - - socket.write(headers.concat('', '').join('\r\n')); - socket.end(); -} - - -function return401(server, req, socket) { - var headers = [ - 'HTTP/1.1 401 Unauthorized' - , 'Content-type: text/html' - ]; - - socket.write(headers.concat('', '').join('\r\n')); - socket.end(); -} - -/** - * Server object, which will do the actual emitting - */ - -function Server(webServer) { - this.webServer = webServer; -} - -util.inherits(Server, events.EventEmitter); - -Server.prototype.close = function() { - this.webServer.close(); - if (this._socket) this._socket.end(); -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/.npmignore b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/.npmignore new file mode 100644 index 00000000..dd4173ac --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/.npmignore @@ -0,0 +1,3 @@ +.idea/ +node_modules/ +*.swp diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/README.md b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/README.md new file mode 100644 index 00000000..bdc21e99 --- /dev/null +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/README.md @@ -0,0 +1,613 @@ +yargs +======== + +Yargs be a node.js library fer hearties tryin' ter parse optstrings against their will where even the boo box be not enough to coerce them. This here module is fer scallywags lookin' ter plunder all the sunken -shipz of their --treasures thru program usage but be tired of optstrings disincling to acquiesce to yer requests. + +With yargs, ye be havin' a map that leads straight to yer treasure! Treasure of course, being a simple option hash. + +[![Build Status](https://travis-ci.org/chevex/yargs.png)](https://travis-ci.org/chevex/yargs) +[![Dependency Status](https://gemnasium.com/chevex/yargs.png)](https://gemnasium.com/chevex/yargs) +[![NPM version](https://badge.fury.io/js/yargs.png)](http://badge.fury.io/js/yargs) + +> NOTE: Yargs is a fork of [optimist](https://github.com/substack/node-optimist) by [substack (James Halliday)](https://github.com/substack). It is obvious that substack is stretched pretty thin maintaining over 300 modules on npm at the time of this writing. So rather than complain in the project issue tracker I thought I'd just pick up the torch and maintain a proper fork. Currently the project is totally backward compatible with optimist but this may change in the future (if it does I will update this notice to inform you of this). For now though, enjoy optimist with about 5 months worth of fixes and updates rolled in, most of them pulled from optimist's own [stale pull requests](https://github.com/substack/node-optimist/pulls). + +examples +======== + +With yargs, the options be just a hash! No optstrings be attached. +------------------------------------------------------------------- + +xup.js: + +````javascript +#!/usr/bin/env node +var argv = require('yargs').argv; + +if (argv.rif - 5 * argv.xup > 7.138) { + console.log('Plunder more riffiwobbles!'); +} +else { + console.log('Drop the xupptumblers!'); +} +```` + +*** + + $ ./xup.js --rif=55 --xup=9.52 + Plunder more riffiwobbles! + + $ ./xup.js --rif 12 --xup 8.1 + Drop the xupptumblers! + +![Joe was one optimistic pirate.](http://i.imgur.com/4WFGVJ9.png) + +But don' walk the plank jus' yet! Ther' be more! Ye can do short options: +------------------------------------------------- + +short.js: + +````javascript +#!/usr/bin/env node +var argv = require('yargs').argv; +console.log('(%d,%d)', argv.x, argv.y); +```` + +*** + + $ ./short.js -x 10 -y 21 + (10,21) + +And gold doubooleans, both long an' short (an' grouped!): +---------------------------------- + +bool.js: + +````javascript +#!/usr/bin/env node +var util = require('util'); +var argv = require('yargs').argv; + +if (argv.s) { + util.print(argv.fr ? 'Le perroquet dit: ' : 'The parrot says: '); +} +console.log( + (argv.fr ? 'couac' : 'squawk') + (argv.p ? '!' : '') +); +```` + +*** + + $ ./bool.js -s + The parrot says: squawk + + $ ./bool.js -sp + The parrot says: squawk! + + $ ./bool.js -sp --fr + Le perroquet dit: couac! + +And non-hyphenated options too! Just use `argv._`! +------------------------------------------------- + +nonopt.js: + +````javascript +#!/usr/bin/env node +var argv = require('yargs').argv; +console.log('(%d,%d)', argv.x, argv.y); +console.log(argv._); +```` + +*** + + $ ./nonopt.js -x 6.82 -y 3.35 rum + (6.82,3.35) + [ 'rum' ] + + $ ./nonopt.js "me hearties" -x 0.54 yo -y 1.12 ho + (0.54,1.12) + [ 'me hearties', 'yo', 'ho' ] + +Yargs even counts yer gold doubooleans! +---------------------------------------------------------------------- + +count.js + +````javascript +#!/usr/bin/env node +var argv = require('yargs') + .count('verbose') + .alias('v', 'verbose') + .argv; + +VERBOSE_LEVEL = argv.verbose; + +function WARN() { VERBOSE_LEVEL >= 0 && console.log.apply(console, arguments); } +function INFO() { VERBOSE_LEVEL >= 1 && console.log.apply(console, arguments); } +function DEBUG() { VERBOSE_LEVEL >= 2 && console.log.apply(console, arguments); } + +WARN("Showing only important stuff"); +INFO("Showing semi-mportant stuff too"); +DEBUG("Extra chatty mode"); +```` + +*** + $ node count.js + Showing only important stuff + + $ node count.js -v + Showing only important stuff + Showing semi-important stuff too + + $ node count.js -vv + Showing only important stuff + Showing semi-important stuff too + Extra chatty mode + + $ node count.js -v --verbose + Showing only important stuff + Showing semi-important stuff too + Extra chatty mode + +Tell yer friends how ter use yer options and make demands from yer enemies. +------------------------------------------------- + +divide.js: + +````javascript +#!/usr/bin/env node +var argv = require('yargs') + .usage('Usage: $0 -x [num] -y [num]') + .demand(['x','y']) + .argv; + +console.log(argv.x / argv.y); +```` + +*** + + $ ./divide.js -x 55 -y 11 + 5 + + $ node ./divide.js -x 4.91 -z 2.51 + Usage: node ./divide.js -x [num] -y [num] + + Options: + -x [required] + -y [required] + + Missing required arguments: y + +After yer demands have been met, demand more! Ask for non-hypenated arguments! +----------------------------------------- + +demand_count.js: + +````javascript +#!/usr/bin/env node +var argv = require('yargs') + .demandCount(2) + .argv; +console.dir(argv) +```` + +*** + + $ ./demand_count.js a + Not enough arguments, expected 2, but only found 1 + $ ./demand_count.js a b + { _: [ 'a', 'b' ], '$0': 'node ./demand_count.js' } + $ ./demand_count.js a b c + { _: [ 'a', 'b', 'c' ], '$0': 'node ./demand_count.js' } + +EVEN MORE SHIVER ME TIMBERS! +------------------ + +default_singles.js: + +````javascript +#!/usr/bin/env node +var argv = require('yargs') + .default('x', 10) + .default('y', 10) + .argv +; +console.log(argv.x + argv.y); +```` + +*** + + $ ./default_singles.js -x 5 + 15 + +default_hash.js: + +````javascript +#!/usr/bin/env node +var argv = require('yargs') + .default({ x : 10, y : 10 }) + .argv +; +console.log(argv.x + argv.y); +```` + +*** + + $ ./default_hash.js -y 7 + 17 + +And if ye really want ter get all descriptive about it... +--------------------------------------------------------- + +boolean_single.js + +````javascript +#!/usr/bin/env node +var argv = require('yargs') + .boolean('v') + .argv +; +console.dir(argv.v); +console.dir(argv._); +```` + +*** + + $ ./boolean_single.js -v "me hearties" yo ho + true + [ 'me hearties', 'yo', 'ho' ] + + +boolean_double.js + +````javascript +#!/usr/bin/env node +var argv = require('yargs') + .boolean(['x','y','z']) + .argv +; +console.dir([ argv.x, argv.y, argv.z ]); +console.dir(argv._); +```` + +*** + + $ ./boolean_double.js -x -z one two three + [ true, false, true ] + [ 'one', 'two', 'three' ] + +Yargs is here ter help ye... +--------------------------- + +Ye can describe parameters fer help messages and set aliases. Yargs figures +out how ter format a handy help string automatically. + +line_count.js + +````javascript +#!/usr/bin/env node +var argv = require('yargs') + .usage('Count the lines in a file.\nUsage: $0') + .example('$0 -f', 'count the lines in the given file') + .demand('f') + .alias('f', 'file') + .describe('f', 'Load a file') + .argv +; + +var fs = require('fs'); +var s = fs.createReadStream(argv.file); + +var lines = 0; +s.on('data', function (buf) { + lines += buf.toString().match(/\n/g).length; +}); + +s.on('end', function () { + console.log(lines); +}); +```` + +*** + + $ node line_count.js + Count the lines in a file. + Usage: node ./line_count.js + + Examples: + node ./line_count.js -f count the lines in the given file + + Options: + -f, --file Load a file [required] + + Missing required arguments: f + + $ node line_count.js --file line_count.js + 20 + + $ node line_count.js -f line_count.js + 20 + +methods +======= + +By itself, + +````javascript +require('yargs').argv +````` + +will use `process.argv` array to construct the `argv` object. + +You can pass in the `process.argv` yourself: + +````javascript +require('yargs')([ '-x', '1', '-y', '2' ]).argv +```` + +or use .parse() to do the same thing: + +````javascript +require('yargs').parse([ '-x', '1', '-y', '2' ]) +```` + +The rest of these methods below come in just before the terminating `.argv`. + +.alias(key, alias) +------------------ + +Set key names as equivalent such that updates to a key will propagate to aliases +and vice-versa. + +Optionally `.alias()` can take an object that maps keys to aliases. +Each key of this object should be the canonical version of the option, and each +value should be a string or an array of strings. + +.default(key, value) +-------------------- + +Set `argv[key]` to `value` if no option was specified on `process.argv`. + +Optionally `.default()` can take an object that maps keys to default values. + +.demand(key, [msg]) +------------ + +If `key` is a string, show the usage information and exit if `key` wasn't +specified in `process.argv`. + +If `key` is a number, demand at least as many non-option arguments, which show +up in `argv._`. + +If `key` is an Array, demand each element. + +If `msg` is supplied, it will be printed when the argument is missing, +instead of the standard error message. This is especially helpful for the non-option arguments in `argv._`. + +.describe(key, desc) +-------------------- + +Describe a `key` for the generated usage information. + +Optionally `.describe()` can take an object that maps keys to descriptions. + +.options(key, opt) +------------------ + +Instead of chaining together `.alias().demand().default()`, you can specify +keys in `opt` for each of the chainable methods. + +For example: + +````javascript +var argv = require('yargs') + .options('f', { + alias : 'file', + default : '/etc/passwd', + }) + .argv +; +```` + +is the same as + +````javascript +var argv = require('yargs') + .alias('f', 'file') + .default('f', '/etc/passwd') + .argv +; +```` + +Optionally `.options()` can take an object that maps keys to `opt` parameters. + +.usage(message) +--------------- + +Set a usage message to show which commands to use. Inside `message`, the string +`$0` will get interpolated to the current script name or node command for the +present script similar to how `$0` works in bash or perl. + +.example(cmd, desc) +------------------- + +Give some example invocations of your program. Inside `cmd`, the string +`$0` will get interpolated to the current script name or node command for the +present script similar to how `$0` works in bash or perl. +Examples will be printed out as part of the help message. + +.check(fn) +---------- + +Check that certain conditions are met in the provided arguments. + +`fn` is called with two arguments, the parsed `argv` hash and an array of options and their aliases. + +If `fn` throws or returns `false`, show the thrown error, usage information, and +exit. + +.boolean(key) +------------- + +Interpret `key` as a boolean. If a non-flag option follows `key` in +`process.argv`, that string won't get set as the value of `key`. + +If `key` never shows up as a flag in `process.arguments`, `argv[key]` will be +`false`. + +If `key` is an Array, interpret all the elements as booleans. + +.string(key) +------------ + +Tell the parser logic not to interpret `key` as a number or boolean. +This can be useful if you need to preserve leading zeros in an input. + +If `key` is an Array, interpret all the elements as strings. + +.config(key) +------------ + +Tells the parser to interpret `key` as a path to a JSON config file. The file +is loaded and parsed, and its properties are set as arguments. + +.wrap(columns) +-------------- + +Format usage output to wrap at `columns` many columns. + +.help() +------- + +Return the generated usage string. + +Example: + +``` +var yargs = require("yargs") + .usage("$0 -operand1 number -operand2 number -operation [add|subtract]"); +console.log(yargs.help()); +``` + +Later on, ```argv``` can be retrived with ```yargs.argv``` + +.showHelp(fn=console.error) +--------------------------- + +Print the usage data using `fn` for printing. + +Example: + +``` +var yargs = require("yargs") + .usage("$0 -operand1 number -operand2 number -operation [add|subtract]"); +yargs.showHelp(); +``` + +Later on, ```argv``` can be retrived with ```yargs.argv``` + +.parse(args) +------------ + +Parse `args` instead of `process.argv`. Returns the `argv` object. + +.argv +----- + +Get the arguments as a plain old object. + +Arguments without a corresponding flag show up in the `argv._` array. + +The script name or node command is available at `argv.$0` similarly to how `$0` +works in bash or perl. + +parsing tricks +============== + +stop parsing +------------ + +Use `--` to stop parsing flags and stuff the remainder into `argv._`. + + $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4 + { _: [ '-c', '3', '-d', '4' ], + '$0': 'node ./examples/reflect.js', + a: 1, + b: 2 } + +negate fields +------------- + +If you want to explicity set a field to false instead of just leaving it +undefined or to override a default you can do `--no-key`. + + $ node examples/reflect.js -a --no-b + { _: [], + '$0': 'node ./examples/reflect.js', + a: true, + b: false } + +numbers +------- + +Every argument that looks like a number (`!isNaN(Number(arg))`) is converted to +one. This way you can just `net.createConnection(argv.port)` and you can add +numbers out of `argv` with `+` without having that mean concatenation, +which is super frustrating. + +duplicates +---------- + +If you specify a flag multiple times it will get turned into an array containing +all the values in order. + + $ node examples/reflect.js -x 5 -x 8 -x 0 + { _: [], + '$0': 'node ./examples/reflect.js', + x: [ 5, 8, 0 ] } + +dot notation +------------ + +When you use dots (`.`s) in argument names, an implicit object path is assumed. +This lets you organize arguments into nested objects. + + $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5 + { _: [], + '$0': 'node ./examples/reflect.js', + foo: { bar: { baz: 33 }, quux: 5 } } + +short numbers +------------- + +Short numeric `head -n5` style argument work too: + + $ node reflect.js -n123 -m456 + { '3': true, + '6': true, + _: [], + '$0': 'node ./reflect.js', + n: 123, + m: 456 } + +installation +============ + +With [npm](http://github.com/isaacs/npm), just do: + + npm install yargs + +or clone this project on github: + + git clone http://github.com/chevex/yargs.git + +To run the tests with [expresso](http://github.com/visionmedia/expresso), +just do: + + expresso + +inspired By +=========== + +This module is loosely inspired by Perl's +[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm). diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/index.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/index.js deleted file mode 100644 index 71fb8305..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/index.js +++ /dev/null @@ -1,187 +0,0 @@ -module.exports = function (args, opts) { - if (!opts) opts = {}; - - var flags = { bools : {}, strings : {} }; - - [].concat(opts['boolean']).filter(Boolean).forEach(function (key) { - flags.bools[key] = true; - }); - - var aliases = {}; - Object.keys(opts.alias || {}).forEach(function (key) { - aliases[key] = [].concat(opts.alias[key]); - aliases[key].forEach(function (x) { - aliases[x] = [key].concat(aliases[key].filter(function (y) { - return x !== y; - })); - }); - }); - - [].concat(opts.string).filter(Boolean).forEach(function (key) { - flags.strings[key] = true; - if (aliases[key]) { - flags.strings[aliases[key]] = true; - } - }); - - var defaults = opts['default'] || {}; - - var argv = { _ : [] }; - Object.keys(flags.bools).forEach(function (key) { - setArg(key, defaults[key] === undefined ? false : defaults[key]); - }); - - var notFlags = []; - - if (args.indexOf('--') !== -1) { - notFlags = args.slice(args.indexOf('--')+1); - args = args.slice(0, args.indexOf('--')); - } - - function setArg (key, val) { - var value = !flags.strings[key] && isNumber(val) - ? Number(val) : val - ; - setKey(argv, key.split('.'), value); - - (aliases[key] || []).forEach(function (x) { - setKey(argv, x.split('.'), value); - }); - } - - for (var i = 0; i < args.length; i++) { - var arg = args[i]; - - if (/^--.+=/.test(arg)) { - // Using [\s\S] instead of . because js doesn't support the - // 'dotall' regex modifier. See: - // http://stackoverflow.com/a/1068308/13216 - var m = arg.match(/^--([^=]+)=([\s\S]*)$/); - setArg(m[1], m[2]); - } - else if (/^--no-.+/.test(arg)) { - var key = arg.match(/^--no-(.+)/)[1]; - setArg(key, false); - } - else if (/^--.+/.test(arg)) { - var key = arg.match(/^--(.+)/)[1]; - var next = args[i + 1]; - if (next !== undefined && !/^-/.test(next) - && !flags.bools[key] - && (aliases[key] ? !flags.bools[aliases[key]] : true)) { - setArg(key, next); - i++; - } - else if (/^(true|false)$/.test(next)) { - setArg(key, next === 'true'); - i++; - } - else { - setArg(key, flags.strings[key] ? '' : true); - } - } - else if (/^-[^-]+/.test(arg)) { - var letters = arg.slice(1,-1).split(''); - - var broken = false; - for (var j = 0; j < letters.length; j++) { - var next = arg.slice(j+2); - - if (next === '-') { - setArg(letters[j], next) - continue; - } - - if (/[A-Za-z]/.test(letters[j]) - && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) { - setArg(letters[j], next); - broken = true; - break; - } - - if (letters[j+1] && letters[j+1].match(/\W/)) { - setArg(letters[j], arg.slice(j+2)); - broken = true; - break; - } - else { - setArg(letters[j], flags.strings[letters[j]] ? '' : true); - } - } - - var key = arg.slice(-1)[0]; - if (!broken && key !== '-') { - if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1]) - && !flags.bools[key] - && (aliases[key] ? !flags.bools[aliases[key]] : true)) { - setArg(key, args[i+1]); - i++; - } - else if (args[i+1] && /true|false/.test(args[i+1])) { - setArg(key, args[i+1] === 'true'); - i++; - } - else { - setArg(key, flags.strings[key] ? '' : true); - } - } - } - else { - argv._.push( - flags.strings['_'] || !isNumber(arg) ? arg : Number(arg) - ); - } - } - - Object.keys(defaults).forEach(function (key) { - if (!hasKey(argv, key.split('.'))) { - setKey(argv, key.split('.'), defaults[key]); - - (aliases[key] || []).forEach(function (x) { - setKey(argv, x.split('.'), defaults[key]); - }); - } - }); - - notFlags.forEach(function(key) { - argv._.push(key); - }); - - return argv; -}; - -function hasKey (obj, keys) { - var o = obj; - keys.slice(0,-1).forEach(function (key) { - o = (o[key] || {}); - }); - - var key = keys[keys.length - 1]; - return key in o; -} - -function setKey (obj, keys, value) { - var o = obj; - keys.slice(0,-1).forEach(function (key) { - if (o[key] === undefined) o[key] = {}; - o = o[key]; - }); - - var key = keys[keys.length - 1]; - if (o[key] === undefined || typeof o[key] === 'boolean') { - o[key] = value; - } - else if (Array.isArray(o[key])) { - o[key].push(value); - } - else { - o[key] = [ o[key], value ]; - } -} - -function isNumber (x) { - if (typeof x === 'number') return true; - if (/^0x[0-9a-f]+$/i.test(x)) return true; - return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); -} - diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/package.json deleted file mode 100644 index 2ec47f6b..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/package.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "minimist", - "version": "0.0.10", - "description": "parse argument options", - "main": "index.js", - "devDependencies": { - "tape": "~1.0.4", - "tap": "~0.4.0" - }, - "scripts": { - "test": "tap test/*.js" - }, - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/6..latest", - "ff/5", - "firefox/latest", - "chrome/10", - "chrome/latest", - "safari/5.1", - "safari/latest", - "opera/12" - ] - }, - "repository": { - "type": "git", - "url": "git://github.com/substack/minimist.git" - }, - "homepage": "https://github.com/substack/minimist", - "keywords": [ - "argv", - "getopt", - "parser", - "optimist" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT", - "readme": "# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n x: 3,\n y: 4,\n n: 5,\n a: true,\n b: true,\n c: true,\n beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n", - "readmeFilename": "readme.markdown", - "bugs": { - "url": "https://github.com/substack/minimist/issues" - }, - "_id": "minimist@0.0.10", - "_shasum": "de3f98543dbf96082be48ad1a0c7cda836301dcf", - "_from": "minimist@~0.0.1", - "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" -} diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/bool.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/bool.js deleted file mode 100644 index 749e083c..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/bool.js +++ /dev/null @@ -1,119 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -test('flag boolean default false', function (t) { - var argv = parse(['moo'], { - boolean: ['t', 'verbose'], - default: { verbose: false, t: false } - }); - - t.deepEqual(argv, { - verbose: false, - t: false, - _: ['moo'] - }); - - t.deepEqual(typeof argv.verbose, 'boolean'); - t.deepEqual(typeof argv.t, 'boolean'); - t.end(); - -}); - -test('boolean groups', function (t) { - var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], { - boolean: ['x','y','z'] - }); - - t.deepEqual(argv, { - x : true, - y : false, - z : true, - _ : [ 'one', 'two', 'three' ] - }); - - t.deepEqual(typeof argv.x, 'boolean'); - t.deepEqual(typeof argv.y, 'boolean'); - t.deepEqual(typeof argv.z, 'boolean'); - t.end(); -}); -test('boolean and alias with chainable api', function (t) { - var aliased = [ '-h', 'derp' ]; - var regular = [ '--herp', 'derp' ]; - var opts = { - herp: { alias: 'h', boolean: true } - }; - var aliasedArgv = parse(aliased, { - boolean: 'herp', - alias: { h: 'herp' } - }); - var propertyArgv = parse(regular, { - boolean: 'herp', - alias: { h: 'herp' } - }); - var expected = { - herp: true, - h: true, - '_': [ 'derp' ] - }; - - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - t.end(); -}); - -test('boolean and alias with options hash', function (t) { - var aliased = [ '-h', 'derp' ]; - var regular = [ '--herp', 'derp' ]; - var opts = { - alias: { 'h': 'herp' }, - boolean: 'herp' - }; - var aliasedArgv = parse(aliased, opts); - var propertyArgv = parse(regular, opts); - var expected = { - herp: true, - h: true, - '_': [ 'derp' ] - }; - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - t.end(); -}); - -test('boolean and alias using explicit true', function (t) { - var aliased = [ '-h', 'true' ]; - var regular = [ '--herp', 'true' ]; - var opts = { - alias: { h: 'herp' }, - boolean: 'h' - }; - var aliasedArgv = parse(aliased, opts); - var propertyArgv = parse(regular, opts); - var expected = { - herp: true, - h: true, - '_': [ ] - }; - - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - t.end(); -}); - -// regression, see https://github.com/substack/node-optimist/issues/71 -test('boolean and --x=true', function(t) { - var parsed = parse(['--boool', '--other=true'], { - boolean: 'boool' - }); - - t.same(parsed.boool, true); - t.same(parsed.other, 'true'); - - parsed = parse(['--boool', '--other=false'], { - boolean: 'boool' - }); - - t.same(parsed.boool, true); - t.same(parsed.other, 'false'); - t.end(); -}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/num.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/num.js deleted file mode 100644 index 2cc77f4d..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/num.js +++ /dev/null @@ -1,36 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -test('nums', function (t) { - var argv = parse([ - '-x', '1234', - '-y', '5.67', - '-z', '1e7', - '-w', '10f', - '--hex', '0xdeadbeef', - '789' - ]); - t.deepEqual(argv, { - x : 1234, - y : 5.67, - z : 1e7, - w : '10f', - hex : 0xdeadbeef, - _ : [ 789 ] - }); - t.deepEqual(typeof argv.x, 'number'); - t.deepEqual(typeof argv.y, 'number'); - t.deepEqual(typeof argv.z, 'number'); - t.deepEqual(typeof argv.w, 'string'); - t.deepEqual(typeof argv.hex, 'number'); - t.deepEqual(typeof argv._[0], 'number'); - t.end(); -}); - -test('already a number', function (t) { - var argv = parse([ '-x', 1234, 789 ]); - t.deepEqual(argv, { x : 1234, _ : [ 789 ] }); - t.deepEqual(typeof argv.x, 'number'); - t.deepEqual(typeof argv._[0], 'number'); - t.end(); -}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/parse.js b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/parse.js deleted file mode 100644 index 7b4a2a17..00000000 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/node_modules/minimist/test/parse.js +++ /dev/null @@ -1,197 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -test('parse args', function (t) { - t.deepEqual( - parse([ '--no-moo' ]), - { moo : false, _ : [] }, - 'no' - ); - t.deepEqual( - parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]), - { v : ['a','b','c'], _ : [] }, - 'multi' - ); - t.end(); -}); - -test('comprehensive', function (t) { - t.deepEqual( - parse([ - '--name=meowmers', 'bare', '-cats', 'woo', - '-h', 'awesome', '--multi=quux', - '--key', 'value', - '-b', '--bool', '--no-meep', '--multi=baz', - '--', '--not-a-flag', 'eek' - ]), - { - c : true, - a : true, - t : true, - s : 'woo', - h : 'awesome', - b : true, - bool : true, - key : 'value', - multi : [ 'quux', 'baz' ], - meep : false, - name : 'meowmers', - _ : [ 'bare', '--not-a-flag', 'eek' ] - } - ); - t.end(); -}); - -test('flag boolean', function (t) { - var argv = parse([ '-t', 'moo' ], { boolean: 't' }); - t.deepEqual(argv, { t : true, _ : [ 'moo' ] }); - t.deepEqual(typeof argv.t, 'boolean'); - t.end(); -}); - -test('flag boolean value', function (t) { - var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], { - boolean: [ 't', 'verbose' ], - default: { verbose: true } - }); - - t.deepEqual(argv, { - verbose: false, - t: true, - _: ['moo'] - }); - - t.deepEqual(typeof argv.verbose, 'boolean'); - t.deepEqual(typeof argv.t, 'boolean'); - t.end(); -}); - -test('newlines in params' , function (t) { - var args = parse([ '-s', "X\nX" ]) - t.deepEqual(args, { _ : [], s : "X\nX" }); - - // reproduce in bash: - // VALUE="new - // line" - // node program.js --s="$VALUE" - args = parse([ "--s=X\nX" ]) - t.deepEqual(args, { _ : [], s : "X\nX" }); - t.end(); -}); - -test('strings' , function (t) { - var s = parse([ '-s', '0001234' ], { string: 's' }).s; - t.equal(s, '0001234'); - t.equal(typeof s, 'string'); - - var x = parse([ '-x', '56' ], { string: 'x' }).x; - t.equal(x, '56'); - t.equal(typeof x, 'string'); - t.end(); -}); - -test('stringArgs', function (t) { - var s = parse([ ' ', ' ' ], { string: '_' })._; - t.same(s.length, 2); - t.same(typeof s[0], 'string'); - t.same(s[0], ' '); - t.same(typeof s[1], 'string'); - t.same(s[1], ' '); - t.end(); -}); - -test('empty strings', function(t) { - var s = parse([ '-s' ], { string: 's' }).s; - t.equal(s, ''); - t.equal(typeof s, 'string'); - - var str = parse([ '--str' ], { string: 'str' }).str; - t.equal(str, ''); - t.equal(typeof str, 'string'); - - var letters = parse([ '-art' ], { - string: [ 'a', 't' ] - }); - - t.equal(letters.a, ''); - t.equal(letters.r, true); - t.equal(letters.t, ''); - - t.end(); -}); - - -test('string and alias', function(t) { - var x = parse([ '--str', '000123' ], { - string: 's', - alias: { s: 'str' } - }); - - t.equal(x.str, '000123'); - t.equal(typeof x.str, 'string'); - t.equal(x.s, '000123'); - t.equal(typeof x.s, 'string'); - - var y = parse([ '-s', '000123' ], { - string: 'str', - alias: { str: 's' } - }); - - t.equal(y.str, '000123'); - t.equal(typeof y.str, 'string'); - t.equal(y.s, '000123'); - t.equal(typeof y.s, 'string'); - t.end(); -}); - -test('slashBreak', function (t) { - t.same( - parse([ '-I/foo/bar/baz' ]), - { I : '/foo/bar/baz', _ : [] } - ); - t.same( - parse([ '-xyz/foo/bar/baz' ]), - { x : true, y : true, z : '/foo/bar/baz', _ : [] } - ); - t.end(); -}); - -test('alias', function (t) { - var argv = parse([ '-f', '11', '--zoom', '55' ], { - alias: { z: 'zoom' } - }); - t.equal(argv.zoom, 55); - t.equal(argv.z, argv.zoom); - t.equal(argv.f, 11); - t.end(); -}); - -test('multiAlias', function (t) { - var argv = parse([ '-f', '11', '--zoom', '55' ], { - alias: { z: [ 'zm', 'zoom' ] } - }); - t.equal(argv.zoom, 55); - t.equal(argv.z, argv.zoom); - t.equal(argv.z, argv.zm); - t.equal(argv.f, 11); - t.end(); -}); - -test('nested dotted objects', function (t) { - var argv = parse([ - '--foo.bar', '3', '--foo.baz', '4', - '--foo.quux.quibble', '5', '--foo.quux.o_O', - '--beep.boop' - ]); - - t.same(argv.foo, { - bar : 3, - baz : 4, - quux : { - quibble : 5, - o_O : true - } - }); - t.same(argv.beep, { boop : true }); - t.end(); -}); diff --git a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/package.json b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/package.json index 5a476d15..14c0fd23 100644 --- a/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/package.json +++ b/src/iisnode/node-inspector-0.7.3/node_modules/node-inspector/node_modules/yargs/package.json @@ -1,23 +1,63 @@ { - "name": "yargs", - "version": "1.1.3", - "description": "Light-weight option parsing with an argv hash. No optstrings attached.", - "main": "./index.js", + "_args": [ + [ + "yargs@~1.1.2", + "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector" + ] + ], + "_from": "yargs@>=1.1.2 <1.2.0", + "_id": "yargs@1.1.3", + "_inCache": true, + "_installable": true, + "_location": "/yargs", + "_npmUser": { + "email": "alex.ford@codetunnel.com", + "name": "chevex" + }, + "_npmVersion": "1.3.26", + "_phantomChildren": {}, + "_requested": { + "name": "yargs", + "raw": "yargs@~1.1.2", + "rawSpec": "~1.1.2", + "scope": null, + "spec": ">=1.1.2 <1.2.0", + "type": "range" + }, + "_requiredBy": [ + "/" + ], + "_resolved": "https://registry.npmjs.org/yargs/-/yargs-1.1.3.tgz", + "_shasum": "c44ed2bb9c86d55b557f2179fea7c7013fe4c42a", + "_shrinkwrap": null, + "_spec": "yargs@~1.1.2", + "_where": "D:\\iisnode\\iisnode\\src\\iisnode\\node-inspector-0.7.3\\node_modules\\node-inspector", + "author": { + "email": "Alex.Ford@CodeTunnel.com", + "name": "Alex Ford", + "url": "http://CodeTunnel.com" + }, + "bugs": { + "url": "https://github.com/chevex/yargs/issues" + }, "dependencies": { "minimist": "~0.0.1" }, + "description": "Light-weight option parsing with an argv hash. No optstrings attached.", "devDependencies": { + "chai": "*", "hashish": "*", - "mocha": "*", - "chai": "*" + "mocha": "*" }, - "scripts": { - "test": "mocha -R nyan" + "directories": {}, + "dist": { + "shasum": "c44ed2bb9c86d55b557f2179fea7c7013fe4c42a", + "tarball": "https://registry.npmjs.org/yargs/-/yargs-1.1.3.tgz" }, - "repository": { - "type": "git", - "url": "http://github.com/chevex/yargs.git" + "engine": { + "node": ">=0.4" }, + "homepage": "https://github.com/chevex/yargs", "keywords": [ "argument", "args", @@ -27,23 +67,23 @@ "cli", "command" ], - "author": { - "name": "Alex Ford", - "email": "Alex.Ford@CodeTunnel.com", - "url": "http://CodeTunnel.com" - }, "license": "MIT/X11", - "engine": { - "node": ">=0.4" + "main": "./index.js", + "maintainers": [ + { + "email": "alex.ford@codetunnel.com", + "name": "chevex" + } + ], + "name": "yargs", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/chevex/yargs.git" }, - "readme": "yargs\n========\n\nYargs be a node.js library fer hearties tryin' ter parse optstrings against their will where even the boo box be not enough to coerce them. This here module is fer scallywags lookin' ter plunder all the sunken -shipz of their --treasures thru program usage but be tired of optstrings disincling to acquiesce to yer requests.\n\nWith yargs, ye be havin' a map that leads straight to yer treasure! Treasure of course, being a simple option hash.\n\n[![Build Status](https://travis-ci.org/chevex/yargs.png)](https://travis-ci.org/chevex/yargs)\n[![Dependency Status](https://gemnasium.com/chevex/yargs.png)](https://gemnasium.com/chevex/yargs)\n[![NPM version](https://badge.fury.io/js/yargs.png)](http://badge.fury.io/js/yargs)\n\n> NOTE: Yargs is a fork of [optimist](https://github.com/substack/node-optimist) by [substack (James Halliday)](https://github.com/substack). It is obvious that substack is stretched pretty thin maintaining over 300 modules on npm at the time of this writing. So rather than complain in the project issue tracker I thought I'd just pick up the torch and maintain a proper fork. Currently the project is totally backward compatible with optimist but this may change in the future (if it does I will update this notice to inform you of this). For now though, enjoy optimist with about 5 months worth of fixes and updates rolled in, most of them pulled from optimist's own [stale pull requests](https://github.com/substack/node-optimist/pulls).\n\nexamples\n========\n\nWith yargs, the options be just a hash! No optstrings be attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('yargs').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Plunder more riffiwobbles!');\n}\nelse {\n console.log('Drop the xupptumblers!');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Plunder more riffiwobbles!\n \n $ ./xup.js --rif 12 --xup 8.1\n Drop the xupptumblers!\n\n![Joe was one optimistic pirate.](http://i.imgur.com/4WFGVJ9.png)\n\nBut don' walk the plank jus' yet! Ther' be more! Ye can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('yargs').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd gold doubooleans, both long an' short (an' grouped!):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('yargs').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le perroquet dit: ' : 'The parrot says: ');\n}\nconsole.log(\n (argv.fr ? 'couac' : 'squawk') + (argv.p ? '!' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The parrot says: squawk\n \n $ ./bool.js -sp\n The parrot says: squawk!\n\n $ ./bool.js -sp --fr\n Le perroquet dit: couac!\n\nAnd non-hyphenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('yargs').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 rum\n (6.82,3.35)\n [ 'rum' ]\n \n $ ./nonopt.js \"me hearties\" -x 0.54 yo -y 1.12 ho\n (0.54,1.12)\n [ 'me hearties', 'yo', 'ho' ]\n\nYargs even counts yer gold doubooleans!\n----------------------------------------------------------------------\n\ncount.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('yargs')\n .count('verbose')\n .alias('v', 'verbose')\n .argv;\n\nVERBOSE_LEVEL = argv.verbose;\n\nfunction WARN() { VERBOSE_LEVEL >= 0 && console.log.apply(console, arguments); }\nfunction INFO() { VERBOSE_LEVEL >= 1 && console.log.apply(console, arguments); }\nfunction DEBUG() { VERBOSE_LEVEL >= 2 && console.log.apply(console, arguments); }\n\nWARN(\"Showing only important stuff\");\nINFO(\"Showing semi-mportant stuff too\");\nDEBUG(\"Extra chatty mode\");\n````\n\n***\n $ node count.js\n Showing only important stuff\n\n $ node count.js -v\n Showing only important stuff\n Showing semi-important stuff too\n\n $ node count.js -vv\n Showing only important stuff\n Showing semi-important stuff too\n Extra chatty mode\n\n $ node count.js -v --verbose\n Showing only important stuff\n Showing semi-important stuff too\n Extra chatty mode\n\nTell yer friends how ter use yer options and make demands from yer enemies.\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('yargs')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nAfter yer demands have been met, demand more! Ask for non-hypenated arguments!\n-----------------------------------------\n\ndemand_count.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('yargs')\n .demandCount(2)\n .argv;\nconsole.dir(argv)\n````\n\n***\n\n\t$ ./demand_count.js a\n\tNot enough arguments, expected 2, but only found 1\n\t$ ./demand_count.js a b\n\t{ _: [ 'a', 'b' ], '$0': 'node ./demand_count.js' }\n\t$ ./demand_count.js a b c\n\t{ _: [ 'a', 'b', 'c' ], '$0': 'node ./demand_count.js' }\n\nEVEN MORE SHIVER ME TIMBERS!\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('yargs')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('yargs')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if ye really want ter get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('yargs')\n .boolean('v')\n .argv\n;\nconsole.dir(argv.v);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_single.js -v \"me hearties\" yo ho\n true\n [ 'me hearties', 'yo', 'ho' ]\n \n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('yargs')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nYargs is here ter help ye...\n---------------------------\n\nYe can describe parameters fer help messages and set aliases. Yargs figures\nout how ter format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('yargs')\n .usage('Count the lines in a file.\\nUsage: $0')\n .example('$0 -f', 'count the lines in the given file')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Examples:\n node ./line_count.js -f count the lines in the given file\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('yargs').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('yargs')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('yargs').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\nEach key of this object should be the canonical version of the option, and each\nvalue should be a string or an array of strings.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key, [msg])\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\nIf `msg` is supplied, it will be printed when the argument is missing,\ninstead of the standard error message. This is especially helpful for the non-option arguments in `argv._`.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('yargs')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('yargs')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.example(cmd, desc)\n-------------------\n\nGive some example invocations of your program. Inside `cmd`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\nExamples will be printed out as part of the help message.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\n`fn` is called with two arguments, the parsed `argv` hash and an array of options and their aliases.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.config(key)\n------------\n\nTells the parser to interpret `key` as a path to a JSON config file. The file\nis loaded and parsed, and its properties are set as arguments.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\nExample:\n\n```\nvar yargs = require(\"yargs\")\n .usage(\"$0 -operand1 number -operand2 number -operation [add|subtract]\");\nconsole.log(yargs.help());\n```\n\nLater on, ```argv``` can be retrived with ```yargs.argv```\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\nExample:\n\n```\nvar yargs = require(\"yargs\")\n .usage(\"$0 -operand1 number -operand2 number -operation [add|subtract]\");\nyargs.showHelp();\n```\n\nLater on, ```argv``` can be retrived with ```yargs.argv```\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n '$0': 'node ./examples/reflect.js',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\nshort numbers\n-------------\n\nShort numeric `head -n5` style argument work too:\n\n $ node reflect.js -n123 -m456\n { '3': true,\n '6': true,\n _: [],\n '$0': 'node ./reflect.js',\n n: 123,\n m: 456 }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n\n npm install yargs\n \nor clone this project on github:\n\n git clone http://github.com/chevex/yargs.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/chevex/yargs/issues" + "scripts": { + "test": "mocha -R nyan" }, - "homepage": "https://github.com/chevex/yargs", - "_id": "yargs@1.1.3", - "_shasum": "c44ed2bb9c86d55b557f2179fea7c7013fe4c42a", - "_from": "yargs@~1.1.2", - "_resolved": "https://registry.npmjs.org/yargs/-/yargs-1.1.3.tgz" + "version": "1.1.3" } diff --git a/src/version.txt b/src/version.txt index 08cde363..d88290b2 100644 --- a/src/version.txt +++ b/src/version.txt @@ -1 +1 @@ -0.2.18 +0.2.21