您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
Wandelt ISBNs in Links auf den Katalog der UBA um und ermittelt, ob die Bücher in der Bibliothek vorhanden sind.
当前为
// ==UserScript== // @name AutoLink UBA // @namespace http://www.tempelb.de/ // @author Bernhard Tempel // @description Wandelt ISBNs in Links auf den Katalog der UBA um und ermittelt, ob die Bücher in der Bibliothek vorhanden sind. // @grant GM_getValue // @grant GM_setValue // @grant GM_deleteValue // @grant GM_registerMenuCommand // @grant GM_xmlhttpRequest // @grant GM_openInTab // @include * // @include file://* // @include http://* // @include https://* // @exclude http://opac.bibliothek.uni-augsburg.de/* // @exclude https://opac.bibliothek.uni-augsburg.de/* // @version 0.25.201608290902 // ==/UserScript== /* Compiled by Bernhard Tempel (bernhard.tempel//at//freenet.de). adapted by UB Augsburg 2016-08-29 / 0.25beta Inspired by and based on following scripts: * Autolink by Jesse Ruderman (http://www.squarefree.com/2005/05/22/autolink/) * isbnjs - An ISBN JavaScript Library by hetappi.pm (code completely included) * Edward Vielmetti's Greasemonkey script for inserting library holdings information into Google Book Search (http://vielmetti.typepad.com/superpatron/2006/02/inserting_libra.html) and derived scripts * http://userscripts.org/scripts/review/20145 */ // Anzahl der ISBNs auf einer Seite, die ohne Rückfrage am Katalog geprüft werden var maxisbns = 50; /* Auswahl der Bibliothek per Menü ermöglichen Default ist: TIB. */ if (GM_getValue("libraryName") == undefined){ GM_setValue("libraryName", "UBA"); } if (GM_getValue("libraryName") == "TIB"){ GM_setValue("libraryName", "UBA"); } /* Zur Anpassung des Skripts für Kataloge weiterer Bibliothek, ist der folgende Block anzupassen (Menüregistrierung und Variablen) */ function registerTIBUB() { GM_setValue("libraryName", "TIB"); alert(GM_getValue("libraryName") + " ausgewählt"); } GM_registerMenuCommand( "TIB", registerTIBUB); function registerUBA() { GM_setValue("libraryName", "UBA"); alert(GM_getValue("libraryName") + " ausgewählt"); } GM_registerMenuCommand( "UBA", registerUBA); switch(GM_getValue("libraryName")) { case 'TIB': //// Für Abfrage im Picaplus-Format (Parsing der Signatur einfacher) //libraryUrlPatternA = "http://opac.tib.eu/DB=1/LNG=DU/CMD?ACT=SRCHA&PRS=PP%7F&TRM=(not+lcd+eblpda)+and+num+"; // Für Einfügen des Links auf den Katalog //libraryUrlPatternB = "http://opac.tib.eu/DB=1/LNG=DU/CMD?ACT=SRCHA&IKT=1016&SRT=YOP&TRM=num+"; // Name der Bibliothek (möglichst kurz, wird u.a. hinter ISBNs in die Webseiten geschrieben // libraryName = GM_getValue("libraryName"); // String zum Erkennen einer Kurzliste als Ergebnis der Abfrage (in diesem Fall wird keine Signatur ausgelesen); // libraryAvailability = /\d+ von \d+/; // String zum Parsen der Signatur //libraryShelfmark = /<TD>209A\/\d\d<\/TD><TD>.*?\$a([^$<]*)/i; // String zum Parsen des Standorts //libraryLocation = /<TD>209A\/\d\d<\/TD><TD>.*?\$f([^$<]*)/i; // String zum Erkennen eines Nulltreffer-Ergebnisses // notFound = /Es wurde nichts gefunden/; //break; case 'UBA': libraryUrlPatternA = "https://opac.bibliothek.uni-augsburg.de/TouchPoint/start.do?View=uba&Language=de&MediaQuery=490=%22"; libraryUrlPatternA2 = "%22%20IN%20[2]"; libraryUrlPatternB = "https://opac.bibliothek.uni-augsburg.de/TouchPoint/start.do?View=uba&Language=de&MediaQuery=490=%22"; libraryUrlPatternB2 = "%22%20IN%20[2]"; libraryName = GM_getValue("libraryName"); libraryAvailability = /UB Augsburg \(\d+(\/\d+)?\)/; libraryShelfmark = /\/cgi-bin\/uba-cgi\/lageplan\/sto\?SIGN=(.*?)"/i; libraryLocation = /\/qrcode\/\?size=150x150&data=.*?\|(.*?)\|/i; notFound = /Ihre Suche erzielte keine Treffer/; break; } // Linkersetzung // // Da Autolink keine Links verarbeitet, muessen Links, // die eine ISBN enthalten, zunaechst durch ihren Linktext // ersetzt werden. Pruefung auf Validitaet der ISBN kann an // dieser Stelle noch unterbleiben. // Regexp zur Ermittlung moeglicher ISBN-Kandidaten // (zuerst Prüfung auf ISBN13 anschließend auf ISBN10 var patternISBN = /(97[89][\- ]?[\d\- ]{9,11}[\- ]?[\dxX]|[\d][\- \d]{8,10}[\- ]?[\- ]?[\dxX])/; var allLinks = document.getElementsByTagName("a"); // alert(allLinks.length); // Fuer Debugging: Ausgabe Anzahl Links var link = ""; for (var i = allLinks.length - 1; i >=0; i--) { link = allLinks[i]; if (patternISBN.exec(link.textContent)){ // Linkersetzung link.parentNode.replaceChild(document.createTextNode(link.textContent), link); // // Alternativ zur Linkersetzung: Einfügen eines zusätzlichen Links // link.parentNode.appendChild(document.createTextNode(link.textContent), link); } } // // Ende vorsorgliche Linkersetzung // var page = ''; var counter = 0; const timeBefore = new Date(); /*********************************** * Filters * ***********************************/ // This functions takes a string containing // a candidate for ISBN (ISBN-10 or ISBN-13) and returns // true if it's valid or false if it's invalid. function validateISBN(isbn) { var isbnTest = ISBN.parse(isbn); if (isbnTest == null){ return false; } if (isbnTest.isIsbn10()){ return true; } else if (isbnTest.isIsbn13()){ return true; } return false; } // No change of Autolink algorithm although only one filter needed const filters = [ { name: "ISBN --> TIB", regexp: /\b(97[89][\- ]?[\d\- ]{9,11}[\- ]?[\dxX]|[\d][\- \d]{8,10}[\- ]?[\- ]?[\dxX])/g, href: function(match) { var isbx = alphanumerics(match[1]); if (validateISBN(isbx) == true) { if (libraryName == "ULB Muenster" || libraryName == "UBA") { return libraryUrlPatternB + ISBN.asIsbn13(alphanumerics(match[1])) + libraryUrlPatternB2; } else { return libraryUrlPatternB + ISBN.asIsbn13(alphanumerics(match[1])) + "+or+" + ISBN.asIsbn10(alphanumerics(match[1])) + "&sourceid=autolink_tibub_tempelb"; } } } } ]; /*********************************** * Helper function for filters * ***********************************/ function alphanumerics(s) { return s.replace(/[^0-9a-z]/ig, ""); } /*********************************** * Link styling * ***********************************/ /* You can make links generated by AutoLink look different from normal links by editing styleLink below and/or by setting up user style sheet rules. Example: on squarefree.com, make autolinked plain text links orange. (Firefox trunk only.) @-moz-document domain(squarefree.com) { .autolink-plain-text-link { color: orange ! important; } } */ function styleLink(a, filter, color) { a.style.border = "1px solid " + color; a.style.padding ="1px"; a.target = "_blank"; } /*********************************** * Fix filters * ***********************************/ function fixFilters() { var i, r; for (i = 0; r = filters[i]; ++i) { // lowercase, and replace each run of non-alphanumerics with a single hyphen r.classNamePart = r.name.toLowerCase().replace(/[^0-9a-z]+/ig, "-"); if(!r.regexp.global) alert("AutoLink-Filter " + r.name + " ist nicht als global definiert! Das gibt Probleme!!!"); } } fixFilters(); /*********************************** * When and where to run * ***********************************/ var moddingDOM = false; window.addEventListener("load", init, false); function init(rightaway) { document.addEventListener("DOMNodeInserted", nodeInserted, false); if (rightaway) go(document.body); else window.setTimeout(go, 100, document.body); } // This makes it work at Gmail. // 20% performance penalty on a plain text file with a link on almost every line. // Tiny performance penalty on pages with few automatically added links. function nodeInserted(e) { // our own modifications should not trigger this. // (we don't want our regular expression objects getting confused) // (we want better control over when we recurse) //GM_log("Inserted: " + e.target); if (!moddingDOM && e.target.nodeType != 3) go(e.target); } /*********************************** * DOM traversal * ***********************************/ /* This script uses manual DOM traversal, in an iterative way without a stack! Advantages of snapshot XPath: * Much less code * 20-40% faster * May be possible to get another speed boost by including the regexp in the XPath expression - http://www.developer.com/xml/article.php/10929_3344421_3 * All the cool people are using it Advantages of manual DOM traversal: * Lets us stop+continue (snapshot xpath doesn't let us) * Lets us modify DOM in strange ways without worrying. * Easier to control which elements we recurse into. */ // Ignore all children of these elements. const skippedElements = { a: true, // keeps us from screwing with existing links. keeps us from recursing to death :) noscript: true, // noscript has uninterpreted, unshown text children; don't waste time+sanity there. head: true, script: true, style: true, textarea: true, label: true, select: true, button: true }; const gmail = (window.location.host == "gmail.google.com"); function skipChildren(node) { if (node.tagName) // ! { if (skippedElements[node.tagName.toLowerCase()]) { return true; } if (gmail) { if (node.className == "ac") // gmail autocomplete (fake dropdown) return true; if (node.className == "ilc sxs") // invite foo to gmail (fake link/button) return true; } } return false; } function go(traversalRoot) { /* some documents don't have document.body - such as XML documents */ /* if (traversalRoot == null) return; */ var m; // Ensure we're not already in a forbidden element. for (m = traversalRoot; m != undefined; m = m.parentNode) { if (!m || skipChildren(m)) { return; } } // work around bug, or in case previous user scripts did crazy stuff traversalRoot.normalize(); function cont(n, didChildren) { var k = 0; // split work into chunks so Firefox doesn't freeze var q; while (n && k < 100) { ++k; // Do stuff at this node if (!didChildren && n.nodeType == 3) { if((q = runFiltersOnTextNode(n))) { n = q[0]; // if there were changes, run filters again on the new text node that's here if (q[1]) continue; } } // Traverse to the "next" node in depth-first order if (!n.firstChild) didChildren = true; if (didChildren && n == traversalRoot) break; else if (!didChildren && n.firstChild && !skipChildren(n)) { n = n.firstChild; // didChildren is already false and should stay false } else { if (n.nextSibling) { n = n.nextSibling; didChildren = false; } else { n = n.parentNode; didChildren = true; } } } // end while if (!n) { //GM_log("Odd. traversalRoot was " + traversalRoot); } else if (n == traversalRoot) { //GM_log("Done"); //alert("AutoLink time: " + (new Date() - timeBefore)) } else { // Continue after 10ms. //GM_log("will have to continue"); setTimeout(cont, 10, n, didChildren); } } // end function cont cont(traversalRoot, false); } /*********************************** * Running filters * ***********************************/ // runFiltersOnTextNode // Return: node at which to continue traversal, or |null| to mean no changes were made. function runFiltersOnTextNode(node) { function genLink(filter, match) { try { return filter.href(match); } catch(er) { return "data:text/plain,Error running AutoLink function for filter: " + encodeURIComponent(filter.name) + "%0A%0A" + encodeURIComponent(er); } } // Too many variables. Good hint that I need to split this function up :P var source, j, regexp, match, lastLastIndex, k, filter, href, anyChanges; // things var used, unused, firstUnused, lastUnused, a, parent, nextSibling; // nodes source = node.data; anyChanges = false; // runFiltersOnTextNode has its own do-too-much-at-once avoider thingie. // assumption: if there is one text node with a lot of matches, // it's more important to finish quickly than be transparent. // (e.g. plain text file FULL of links) // assumption: 40 * 100 = 140. k=0; for (j = 0; filter = filters[j]; ++j) { regexp = filter.regexp; if (regexp.test(source)) { parent = node.parentNode; nextSibling = node.nextSibling; regexp.lastIndex = 0; firstUnused = null; // Optimization from the linkify that came with Greasemonkey(?): // instead of splitting a text node multiple times, take advantage // of global regexps and substring. for (match = null, lastLastIndex = 0; k < 40 && (match = regexp.exec(source)); ) { href = genLink(filter, match); if (href != null && href != location.href) { ++k; unused = document.createTextNode(source.substring(lastLastIndex, match.index)); if (!anyChanges) { anyChanges = true; parent.removeChild(node); firstUnused = unused; moddingDOM = true; } parent.insertBefore(unused, nextSibling); // Abfrage am Katalog der TIB var isbnx = alphanumerics(match[0]); counter++; if (counter == maxisbns +1){ var check = confirm("Die Seite scheint viele ISBNs zu enthalten.\nEs werden " + maxisbns + " ISBNs am Katalog geprüft.\nBestätigen Sie mit \"ok\", wenn das Skript\nohne Beschränkung weiterlaufen soll."); if (!check){ exit(); } } libraryUrlLookup = libraryUrlPatternA + "(" + ISBN.asIsbn10(isbnx) + "+OR+" + ISBN.asIsbn13(isbnx) + ")"; if (libraryName == "ULB Muenster" || libraryName == "UBA") { libraryUrlLookup = libraryUrlPatternA + ISBN.asIsbn13(isbnx) + libraryUrlPatternA2; } GM_xmlhttpRequest ({ method:'GET', url: libraryUrlLookup, onload:function(results) { var page = results.responseText; var location, signatur, sst; if ( notFound.test(page) ) { used = document.createTextNode(isbnx + ' FEHLT ' + libraryName); a = document.createElement("a"); a.href = href; a.title = "Link eingesetzt von Autolink_TIB/UB"; a.className = "autolink autolink-" + filter.classNamePart; styleLink(a, filter, "red"); a.appendChild(used); parent.insertBefore(a, nextSibling); } else if ( libraryAvailability.test(page) ) { if (libraryLocation == "") { } else { location = libraryLocation.exec(page); } signatur = libraryShelfmark.exec(page); if (signatur) { if (location) { sst = location[1] + " "; } else { sst = ""; } shelfmark = libraryName + "+ " + sst + signatur[1]; } else { shelfmark = libraryName + "+"; } used = document.createTextNode(isbnx + ' ' + shelfmark); a = document.createElement("a"); a.href = href; a.title = "Link eingesetzt von Autolink_TIB/UB"; a.className = "autolink autolink-" + filter.classNamePart; styleLink(a, filter, "blue"); a.appendChild(used); parent.insertBefore(a, nextSibling); } else { alert(isbnx + "Sonstiger Fehler?!"); } } }); lastLastIndex = regexp.lastIndex; if (anyChanges) { lastUnused = document.createTextNode(source.substring(lastLastIndex)); parent.insertBefore(lastUnused, nextSibling); moddingDOM = false; return [firstUnused, true]; } return [node, false]; } } } } return null; } // // isbn.js // // The MIT License // Copyright (c) 2007, 2010 hetappi <hetappi.pm (a) gmail.com> // var ISBN; (function () { ISBN = { VERSION: '0.01', GROUPS: { '0': { 'name': 'English speaking area', 'ranges': [['00', '19'], ['200', '699'], ['7000', '8499'], ['85000', '89999'], ['900000', '949999'], ['9500000', '9999999']] }, '1': { 'name': 'English speaking area', 'ranges': [['00', '09'], ['100', '399'], ['4000', '5499'], ['55000', '86979'], ['869800', '998999']] }, '4': { 'name': 'Japan', 'ranges': [['00','19'], ['200','699'], ['7000','8499'], ['85000','89999'], ['900000','949999'], ['9500000','9999999']] } }, isbn: function () { this.initialize.apply(this, arguments); }, parse: function(val, groups) { var me = new ISBN.isbn(val, groups ? groups : ISBN.GROUPS); return me.isValid() ? me : null; }, hyphenate: function(val) { var me = ISBN.parse(val); return me ? me.isIsbn13() ? me.asIsbn13(true) : me.asIsbn10(true) : null; }, asIsbn13: function(val, hyphen) { var me = ISBN.parse(val); return me ? me.asIsbn13(hyphen) : null; }, asIsbn10: function(val, hyphen) { var me = ISBN.parse(val); return me ? me.asIsbn10(hyphen) : null; } }; ISBN.isbn.prototype = { isValid: function() { return this.codes && this.codes.isValid; }, isIsbn13: function() { return this.isValid() && this.codes.isIsbn13; }, isIsbn10: function() { return this.isValid() && this.codes.isIsbn10; }, asIsbn10: function(hyphen) { return this.isValid() ? hyphen ? this.codes.isbn10h : this.codes.isbn10 : null; }, asIsbn13: function(hyphen) { return this.isValid() ? hyphen ? this.codes.isbn13h : this.codes.isbn13 : null; }, initialize: function(val, groups) { this.groups = groups; this.codes = this.parse(val); }, merge: function(lobj, robj) { var key; if (!lobj || !robj) { return null; } for (key in robj) { if (robj.hasOwnProperty(key)) { lobj[key] = robj[key]; } } return lobj; }, parse: function(val) { var ret; // correct for misplaced hyphens // val = val.replace(/ -/,''); ret = val.match(/^\d{9}[\dX]$/) ? this.fill( this.merge({source: val, isValid: true, isIsbn10: true, isIsbn13: false}, this.split(val))) : val.length === 13 && val.match(/^(\d+)-(\d+)-(\d+)-([\dX])$/) ? this.fill({ source: val, isValid: true, isIsbn10: true, isIsbn13: false, group: RegExp.$1, publisher: RegExp.$2, article: RegExp.$3, check: RegExp.$4}) : val.match(/^(978|979)(\d{9}[\dX]$)/) ? this.fill( this.merge({source: val, isValid: true, isIsbn10: false, isIsbn13: true, prefix: RegExp.$1}, this.split(RegExp.$2))) : val.length === 17 && val.match(/^(978|979)-(\d+)-(\d+)-(\d+)-([\dX])$/) ? this.fill({ source: val, isValid: true, isIsbn10: false, isIsbn13: true, prefix: RegExp.$1, group: RegExp.$2, publisher: RegExp.$3, article: RegExp.$4, check: RegExp.$5}) : null; if (!ret) { return {source: val, isValid: false}; } return this.merge(ret, {isValid: ret.check === (ret.isIsbn13 ? ret.check13 : ret.check10)}); }, split: function(isbn) { return ( !isbn ? null : isbn.length === 13 ? this.merge(this.split(isbn.substr(3)), {prefix: isbn.substr(0, 3)}) : isbn.length === 10 ? this.splitToObject(isbn) : null); }, splitToArray: function(isbn10) { var rec, key, rest, i, m; rec = this.getGroupRecord(isbn10); if (!rec) { return null; } for (key, i = 0, m = rec.record.ranges.length; i < m; i += 1) { key = rec.rest.substr(0, rec.record.ranges[i][0].length); if (rec.record.ranges[i][0] <= key && rec.record.ranges[i][1] >= key) { rest = rec.rest.substr(key.length); return [rec.group, key, rest.substr(0, rest.length - 1), rest.charAt(rest.length - 1)]; } } return null; }, splitToObject: function(isbn10) { var a = this.splitToArray(isbn10); if (!a || a.length !== 4) { return null; } return {group: a[0], publisher: a[1], article: a[2], check: a[3]}; }, fill: function(codes) { var rec, prefix, ck10, ck13, parts13, parts10; if (!codes) { return null; } rec = this.groups[codes.group]; if (!rec) { return null; } prefix = codes.prefix ? codes.prefix : '978'; ck10 = this.calcCheckDigit([ codes.group, codes.publisher, codes.article].join('')); if (!ck10) { return null; } ck13 = this.calcCheckDigit([prefix, codes.group, codes.publisher, codes.article].join('')); if (!ck13) { return null; } parts13 = [prefix, codes.group, codes.publisher, codes.article, ck13]; this.merge(codes, { isbn13: parts13.join(''), isbn13h: parts13.join('-'), check10: ck10, check13: ck13, groupname: rec.name }); if (prefix === '978') { parts10 = [codes.group, codes.publisher, codes.article, ck10]; this.merge(codes, {isbn10: parts10.join(''), isbn10h: parts10.join('-')}); } return codes; }, getGroupRecord: function(isbn10) { var key; for (key in this.groups) { if (isbn10.match('^' + key + '(.+)')) { return {group: key, record: this.groups[key], rest: RegExp.$1}; } } return null; }, calcCheckDigit: function(isbn) { var c, n; if (isbn.match(/^\d{9}[\dX]?$/)) { c = 0; for (n = 0; n < 9; n += 1) { c += (10 - n) * isbn.charAt(n); } c = (11 - c % 11) % 11; return c === 10 ? 'X' : String(c); } else if (isbn.match(/(?:978|979)\d{9}[\dX]?/)) { c = 0; for (n = 0; n < 12; n += 2) { c += Number(isbn.charAt(n)) + 3 * isbn.charAt(n + 1); } return String((10 - c % 10) % 10); } return null; } }; }()); // referred: http://www.isbn-international.org/converter/ranges.htm // frequently, you need to update the following table. what a nice specification! // isbn-groups.js // generated by mkgroups.pl var ISBN = ISBN || {}; (function () { // referred: http://www.isbn-international.org/converter/ranges.htm // frequently, you need to update the following table. what a nice specification! ISBN.GROUPS_VERSION = '20090504'; ISBN.GROUPS = { "0": { "name": "English speaking area", "ranges": [["00", "19"], ["200", "699"], ["7000", "8499"], ["85000", "89999"], ["900000", "949999"], ["9500000", "9999999"]] }, "1": { "name": "English speaking area", "ranges": [["00", "09"], ["100", "399"], ["4000", "5499"], ["55000", "86979"], ["869800", "998999"]] }, "2": { "name": "French speaking area", "ranges": [["00", "19"], ["200", "349"], ["35000", "39999"], ["400", "699"], ["7000", "8399"], ["84000", "89999"], ["900000", "949999"], ["9500000", "9999999"]] }, "3": { "name": "German speaking area", "ranges": [["00", "02"], ["030", "033"], ["0340", "0369"], ["03700", "03999"], ["04", "19"], ["200", "699"], ["7000", "8499"], ["85000", "89999"], ["900000", "949999"], ["9500000", "9539999"], ["95400", "96999"], ["9700000", "9899999"], ["99000", "99499"], ["99500", "99999"]] }, "4": { "name": "Japan", "ranges": [["00", "19"], ["200", "699"], ["7000", "8499"], ["85000", "89999"], ["900000", "949999"], ["9500000", "9999999"]] }, "5": { "name": "Russian Federation", "ranges": [["00", "19"], ["200", "420"], ["4210", "4299"], ["430", "430"], ["4310", "4399"], ["440", "440"], ["4410", "4499"], ["450", "699"], ["7000", "8499"], ["85000", "89999"], ["900000", "909999"], ["91000", "91999"], ["9200", "9299"], ["93000", "94999"], ["9500", "9799"], ["98000", "98999"], ["9900000", "9909999"], ["9910", "9999"]] }, "600": { "name": "Iran", "ranges": [["00", "09"], ["100", "499"], ["5000", "8999"], ["90000", "99999"]] }, "601": { "name": "Kazakhstan", "ranges": [["00", "19"], ["200", "699"], ["7000", "7999"], ["80000", "84999"], ["85", "99"]] }, "602": { "name": "Indonesia", "ranges": [["00", "19"], ["200", "799"], ["8000", "9499"], ["95000", "99999"]] }, "603": { "name": "Saudi Arabia", "ranges": [["00", "04"], ["500", "799"], ["8000", "8999"], ["90000", "99999"]] }, "604": { "name": "Vietnam", "ranges": [["0", "4"], ["50", "89"], ["900", "979"], ["9800", "9999"]] }, "605": { "name": "Turkey", "ranges": [["00", "09"], ["100", "399"], ["4000", "5999"], ["60000", "89999"]] }, "606": { "name": "Romania", "ranges": [["0", "0"], ["10", "49"], ["500", "799"], ["8000", "9199"], ["92000", "99999"]] }, "607": { "name": "Mexico", "ranges": [["00", "39"], ["400", "749"], ["7500", "9499"], ["95000", "99999"]] }, "608": { "name": "Macedonia", "ranges": [["0", "0"], ["10", "19"], ["200", "449"], ["4500", "6499"], ["65000", "69999"], ["7", "9"]] }, "609": { "name": "Lithuania", "ranges": [["00", "39"], ["400", "799"], ["8000", "9499"], ["95000", "99999"]] }, "610": { "name": "Thailand", "ranges": [["00", "19"], ["200", "699"], ["7000", "8999"], ["90000", "99999"]] }, "611": { "name": "Ukraine", "ranges": [["00", "49"], ["500", "699"], ["7000", "8999"], ["90000", "99999"]] }, "612": { "name": "Peru", "ranges": [["00", "29"], ["300", "399"], ["4000", "4499"], ["45000", "49999"], ["50", "99"]] }, "613": { "name": "Mauritius", "ranges": [["0", "9"]] }, "614": { "name": "Lebanon", "ranges": [["00", "39"], ["400", "799"], ["8000", "9499"], ["95000", "99999"]] }, "615": { "name": "Hungary", "ranges": [["00", "09"], ["100", "499"], ["5000", "7999"], ["80000", "89999"]] }, "7": { "name": "China, People's Republic", "ranges": [["00", "09"], ["100", "499"], ["5000", "7999"], ["80000", "89999"], ["900000", "999999"]] }, "80": { "name": "Czech Republic; Slovakia", "ranges": [["00", "19"], ["200", "699"], ["7000", "8499"], ["85000", "89999"], ["900000", "999999"]] }, "81": { "name": "India", "ranges": [["00", "19"], ["200", "699"], ["7000", "8499"], ["85000", "89999"], ["900000", "999999"]] }, "82": { "name": "Norway", "ranges": [["00", "19"], ["200", "699"], ["7000", "8999"], ["90000", "98999"], ["990000", "999999"]] }, "83": { "name": "Poland", "ranges": [["00", "19"], ["200", "599"], ["60000", "69999"], ["7000", "8499"], ["85000", "89999"], ["900000", "999999"]] }, "84": { "name": "Spain", "ranges": [["00", "19"], ["200", "699"], ["7000", "8499"], ["85000", "89999"], ["9000", "9199"], ["920000", "923999"], ["92400", "92999"], ["930000", "949999"], ["95000", "96999"], ["9700", "9999"]] }, "85": { "name": "Brazil", "ranges": [["00", "19"], ["200", "599"], ["60000", "69999"], ["7000", "8499"], ["85000", "89999"], ["900000", "979999"], ["98000", "99999"]] }, "86": { "name": "Serbia and Montenegro", "ranges": [["00", "29"], ["300", "599"], ["6000", "7999"], ["80000", "89999"], ["900000", "999999"]] }, "87": { "name": "Denmark", "ranges": [["00", "29"], ["400", "649"], ["7000", "7999"], ["85000", "94999"], ["970000", "999999"]] }, "88": { "name": "Italian speaking area", "ranges": [["00", "19"], ["200", "599"], ["6000", "8499"], ["85000", "89999"], ["900000", "949999"], ["95000", "99999"]] }, "89": { "name": "Korea", "ranges": [["00", "24"], ["250", "549"], ["5500", "8499"], ["85000", "94999"], ["950000", "999999"]] }, "90": { "name": "Netherlands, Belgium (Flemish)", "ranges": [["00", "19"], ["200", "499"], ["5000", "6999"], ["70000", "79999"], ["800000", "849999"], ["8500", "8999"], ["900000", "909999"], ["940000", "949999"]] }, "91": { "name": "Sweden", "ranges": [["0", "1"], ["20", "49"], ["500", "649"], ["7000", "7999"], ["85000", "94999"], ["970000", "999999"]] }, "92": { "name": "International Publishers (Unesco, EU), European Community Organizations", "ranges": [["0", "5"], ["60", "79"], ["800", "899"], ["9000", "9499"], ["95000", "98999"], ["990000", "999999"]] }, "93": { "name": "India", "ranges": [["00", "09"], ["100", "499"], ["5000", "7999"], ["80000", "94999"], ["950000", "999999"]] }, "94": { "name": "Netherlands", "ranges": [["000", "599"], ["6000", "8999"], ["90000", "99999"]] }, "950": { "name": "Argentina", "ranges": [["00", "49"], ["500", "899"], ["9000", "9899"], ["99000", "99999"]] }, "951": { "name": "Finland", "ranges": [["0", "1"], ["20", "54"], ["550", "889"], ["8900", "9499"], ["95000", "99999"]] }, "952": { "name": "Finland", "ranges": [["00", "19"], ["200", "499"], ["5000", "5999"], ["60", "65"], ["6600", "6699"], ["67000", "69999"], ["7000", "7999"], ["80", "94"], ["9500", "9899"], ["99000", "99999"]] }, "953": { "name": "Croatia", "ranges": [["0", "0"], ["10", "14"], ["150", "549"], ["55000", "59999"], ["6000", "9499"], ["95000", "99999"]] }, "954": { "name": "Bulgaria", "ranges": [["00", "29"], ["300", "799"], ["8000", "8999"], ["90000", "92999"], ["9300", "9999"]] }, "955": { "name": "Sri Lanka", "ranges": [["0000", "0999"], ["1000", "1999"], ["20", "54"], ["550", "799"], ["8000", "9499"], ["95000", "99999"]] }, "956": { "name": "Chile", "ranges": [["00", "19"], ["200", "699"], ["7000", "9999"]] }, "957": { "name": "Taiwan, China", "ranges": [["00", "02"], ["0300", "0499"], ["05", "19"], ["2000", "2099"], ["21", "27"], ["28000", "30999"], ["31", "43"], ["440", "819"], ["8200", "9699"], ["97000", "99999"]] }, "958": { "name": "Colombia", "ranges": [["00", "56"], ["57000", "59999"], ["600", "799"], ["8000", "9499"], ["95000", "99999"]] }, "959": { "name": "Cuba", "ranges": [["00", "19"], ["200", "699"], ["7000", "8499"]] }, "960": { "name": "Greece", "ranges": [["00", "19"], ["200", "659"], ["6600", "6899"], ["690", "699"], ["7000", "8499"], ["85000", "99999"]] }, "961": { "name": "Slovenia", "ranges": [["00", "19"], ["200", "599"], ["6000", "8999"], ["90000", "94999"]] }, "962": { "name": "Hong Kong", "ranges": [["00", "19"], ["200", "699"], ["7000", "8499"], ["85000", "86999"], ["8700", "8999"], ["900", "999"]] }, "963": { "name": "Hungary", "ranges": [["00", "19"], ["200", "699"], ["7000", "8499"], ["85000", "89999"], ["9000", "9999"]] }, "964": { "name": "Iran", "ranges": [["00", "14"], ["150", "249"], ["2500", "2999"], ["300", "549"], ["5500", "8999"], ["90000", "96999"], ["970", "989"], ["9900", "9999"]] }, "965": { "name": "Israel", "ranges": [["00", "19"], ["200", "599"], ["7000", "7999"], ["90000", "99999"]] }, "966": { "name": "Ukraine", "ranges": [["00", "14"], ["1500", "1699"], ["170", "199"], ["2000", "2999"], ["300", "699"], ["7000", "8999"], ["90000", "99999"]] }, "967": { "name": "Malaysia", "ranges": [["00", "29"], ["300", "499"], ["5000", "5999"], ["60", "89"], ["900", "989"], ["9900", "9989"], ["99900", "99999"]] }, "968": { "name": "Mexico", "ranges": [["01", "39"], ["400", "499"], ["5000", "7999"], ["800", "899"], ["9000", "9999"]] }, "969": { "name": "Pakistan", "ranges": [["0", "1"], ["20", "39"], ["400", "799"], ["8000", "9999"]] }, "970": { "name": "Mexico", "ranges": [["01", "59"], ["600", "899"], ["9000", "9099"], ["91000", "96999"], ["9700", "9999"]] }, "971": { "name": "Philippines", "ranges": [["000", "019"], ["02", "02"], ["0300", "0599"], ["06", "09"], ["10", "49"], ["500", "849"], ["8500", "9099"], ["91000", "99999"]] }, "972": { "name": "Portugal", "ranges": [["0", "1"], ["20", "54"], ["550", "799"], ["8000", "9499"], ["95000", "99999"]] }, "973": { "name": "Romania", "ranges": [["0", "0"], ["100", "169"], ["1700", "1999"], ["20", "54"], ["550", "759"], ["7600", "8499"], ["85000", "88999"], ["8900", "9499"], ["95000", "99999"]] }, "974": { "name": "Thailand", "ranges": [["00", "19"], ["200", "699"], ["7000", "8499"], ["85000", "89999"], ["90000", "94999"], ["9500", "9999"]] }, "975": { "name": "Turkey", "ranges": [["00000", "00999"], ["01", "24"], ["250", "599"], ["6000", "9199"], ["92000", "98999"], ["990", "999"]] }, "976": { "name": "Caribbean Community", "ranges": [["0", "3"], ["40", "59"], ["600", "799"], ["8000", "9499"], ["95000", "99999"]] }, "977": { "name": "Egypr", "ranges": [["00", "19"], ["200", "499"], ["5000", "6999"], ["700", "999"]] }, "978": { "name": "Nigeria", "ranges": [["000", "199"], ["2000", "2999"], ["30000", "79999"], ["8000", "8999"], ["900", "999"]] }, "979": { "name": "Indonesia", "ranges": [["000", "099"], ["1000", "1499"], ["15000", "19999"], ["20", "29"], ["3000", "3999"], ["400", "799"], ["8000", "9499"], ["95000", "99999"]] }, "980": { "name": "Venezuela", "ranges": [["00", "19"], ["200", "599"], ["6000", "9999"]] }, "981": { "name": "Singapore", "ranges": [["00", "11"], ["1200", "1999"], ["200", "289"], ["2900", "9999"]] }, "982": { "name": "South Pacific", "ranges": [["00", "09"], ["100", "699"], ["70", "89"], ["9000", "9999"]] }, "983": { "name": "Malaysia", "ranges": [["00", "01"], ["020", "199"], ["2000", "3999"], ["40000", "44999"], ["45", "49"], ["50", "79"], ["800", "899"], ["9000", "9899"], ["99000", "99999"]] }, "984": { "name": "Bangladesh", "ranges": [["00", "39"], ["400", "799"], ["8000", "8999"], ["90000", "99999"]] }, "985": { "name": "Belarus", "ranges": [["00", "39"], ["400", "599"], ["6000", "8999"], ["90000", "99999"]] }, "986": { "name": "Taiwan, China", "ranges": [["00", "11"], ["120", "559"], ["5600", "7999"], ["80000", "99999"]] }, "987": { "name": "Argentina", "ranges": [["00", "09"], ["1000", "1999"], ["20000", "29999"], ["30", "49"], ["500", "899"], ["9000", "9499"], ["95000", "99999"]] }, "988": { "name": "Hongkong", "ranges": [["00", "16"], ["17000", "19999"], ["200", "799"], ["8000", "9699"], ["97000", "99999"]] }, "989": { "name": "Portugal", "ranges": [["0", "1"], ["20", "54"], ["550", "799"], ["8000", "9499"], ["95000", "99999"]] }, "9933": { "name": "Syria", "ranges": [["0", "0"], ["10", "39"], ["400", "899"], ["9000", "9999"]] }, "9934": { "name": "Latvia", "ranges": [["0", "0"], ["10", "49"], ["500", "799"], ["8000", "9999"]] }, "9935": { "name": "Iceland", "ranges": [["0", "0"], ["10", "39"], ["400", "899"], ["9000", "9999"]] }, "9936": { "name": "Afghanistan", "ranges": [["0", "1"], ["20", "39"], ["400", "799"], ["8000", "9999"]] }, "9937": { "name": "Nepal", "ranges": [["0", "2"], ["30", "49"], ["500", "799"], ["8000", "9999"]] }, "9938": { "name": "Tunisia", "ranges": [["00", "79"], ["800", "949"], ["9500", "9999"]] }, "9939": { "name": "Armenia", "ranges": [["0", "4"], ["50", "79"], ["800", "899"], ["9000", "9999"]] }, "9940": { "name": "Montenegro", "ranges": [["0", "1"], ["20", "49"], ["500", "899"], ["9000", "9999"]] }, "9941": { "name": "Georgia", "ranges": [["0", "0"], ["10", "39"], ["400", "899"], ["9000", "9999"]] }, "9942": { "name": "Ecuador", "ranges": [["00", "89"], ["900", "994"], ["9950", "9999"]] }, "9943": { "name": "Uzbekistan", "ranges": [["00", "29"], ["300", "399"], ["4000", "9999"]] }, "9944": { "name": "Turkey", "ranges": [["0", "2"], ["300", "499"], ["5000", "5999"], ["60", "89"], ["900", "999"]] }, "9945": { "name": "Dominican Republic", "ranges": [["00", "00"], ["010", "079"], ["08", "39"], ["400", "569"], ["57", "57"], ["580", "849"], ["8500", "9999"]] }, "9946": { "name": "Korea, P.D.R.", "ranges": [["0", "1"], ["20", "39"], ["400", "899"], ["9000", "9999"]] }, "9947": { "name": "Algeria", "ranges": [["0", "1"], ["20", "79"], ["800", "999"]] }, "9948": { "name": "United Arab Emirates", "ranges": [["00", "39"], ["400", "849"], ["8500", "9999"]] }, "9949": { "name": "Estonia", "ranges": [["0", "0"], ["10", "39"], ["400", "899"], ["9000", "9999"]] }, "9950": { "name": "Palestine", "ranges": [["00", "29"], ["300", "840"], ["8500", "9999"]] }, "9951": { "name": "Kosova", "ranges": [["00", "39"], ["400", "849"], ["8500", "9999"]] }, "9952": { "name": "Azerbaijan", "ranges": [["0", "1"], ["20", "39"], ["400", "799"], ["8000", "9999"]] }, "9953": { "name": "Lebanon", "ranges": [["0", "0"], ["10", "39"], ["400", "599"], ["60", "89"], ["9000", "9999"]] }, "9954": { "name": "Morocco", "ranges": [["0", "1"], ["20", "39"], ["400", "799"], ["8000", "9999"]] }, "9955": { "name": "Lithuania", "ranges": [["00", "39"], ["400", "929"], ["9300", "9999"]] }, "9956": { "name": "Cameroon", "ranges": [["0", "0"], ["10", "39"], ["400", "899"], ["9000", "9999"]] }, "9957": { "name": "Jordan", "ranges": [["00", "39"], ["400", "699"], ["70", "84"], ["8500", "9999"]] }, "9958": { "name": "Bosnia and Herzegovina", "ranges": [["0", "0"], ["10", "49"], ["500", "899"], ["9000", "9999"]] }, "9959": { "name": "Libya", "ranges": [["0", "1"], ["20", "79"], ["800", "949"], ["9500", "9999"]] }, "9960": { "name": "Saudi Arabia", "ranges": [["00", "59"], ["600", "899"], ["9000", "9999"]] }, "9961": { "name": "Algeria", "ranges": [["0", "2"], ["30", "69"], ["700", "949"], ["9500", "9999"]] }, "9962": { "name": "Panama", "ranges": [["00", "54"], ["5500", "5599"], ["56", "59"], ["600", "849"], ["8500", "9999"]] }, "9963": { "name": "Cyprus", "ranges": [["0", "2"], ["30", "54"], ["550", "749"], ["7500", "9999"]] }, "9964": { "name": "Ghana", "ranges": [["0", "6"], ["70", "94"], ["950", "999"]] }, "9965": { "name": "Kazakhstan", "ranges": [["00", "39"], ["400", "899"], ["9000", "9999"]] }, "9966": { "name": "Kenya", "ranges": [["000", "199"], ["20", "69"], ["7000", "7499"], ["750", "959"], ["9600", "9999"]] }, "9967": { "name": "Kyrgyzstan", "ranges": [["00", "39"], ["400", "899"], ["9000", "9999"]] }, "9968": { "name": "Costa Rica", "ranges": [["00", "49"], ["500", "939"], ["9400", "9999"]] }, "9970": { "name": "Uganda", "ranges": [["00", "39"], ["400", "899"], ["9000", "9999"]] }, "9971": { "name": "Singapore", "ranges": [["0", "5"], ["60", "89"], ["900", "989"], ["9900", "9999"]] }, "9972": { "name": "Peru", "ranges": [["00", "09"], ["1"], ["200", "249"], ["2500", "2999"], ["30", "59"], ["600", "899"], ["9000", "9999"]] }, "9973": { "name": "Tunisia", "ranges": [["00", "05"], ["060", "089"], ["0900", "0999"], ["10", "69"], ["700", "969"], ["9700", "9999"]] }, "9974": { "name": "Uruguay", "ranges": [["0", "2"], ["30", "54"], ["550", "749"], ["7500", "9499"], ["95", "99"]] }, "9975": { "name": "Moldova", "ranges": [["0", "0"], ["100", "399"], ["4000", "4499"], ["45", "89"], ["900", "949"], ["9500", "9999"]] }, "9976": { "name": "Tanzania", "ranges": [["0", "5"], ["60", "89"], ["900", "989"], ["9990", "9999"]] }, "9977": { "name": "Costa Rica", "ranges": [["00", "89"], ["900", "989"], ["9900", "9999"]] }, "9978": { "name": "Ecuador", "ranges": [["00", "29"], ["300", "399"], ["40", "94"], ["950", "989"], ["9900", "9999"]] }, "9979": { "name": "Iceland", "ranges": [["0", "4"], ["50", "64"], ["650", "659"], ["66", "75"], ["760", "899"], ["9000", "9999"]] }, "9980": { "name": "Papua New Guinea", "ranges": [["0", "3"], ["40", "89"], ["900", "989"], ["9900", "9999"]] }, "9981": { "name": "Morocco", "ranges": [["00", "09"], ["100", "159"], ["1600", "1999"], ["20", "79"], ["800", "949"], ["9500", "9999"]] }, "9982": { "name": "Zambia", "ranges": [["00", "79"], ["800", "989"], ["9900", "9999"]] }, "9983": { "name": "Gambia", "ranges": [["80", "94"], ["950", "989"], ["9900", "9999"]] }, "9984": { "name": "Latvia", "ranges": [["00", "49"], ["500", "899"], ["9000", "9999"]] }, "9985": { "name": "Estonia", "ranges": [["0", "4"], ["50", "79"], ["800", "899"], ["9000", "9999"]] }, "9986": { "name": "Lithuania", "ranges": [["00", "39"], ["400", "899"], ["9000", "9399"], ["940", "969"], ["97", "99"]] }, "9987": { "name": "Tanzania", "ranges": [["00", "39"], ["400", "879"], ["8800", "9999"]] }, "9988": { "name": "Ghana", "ranges": [["0", "2"], ["30", "54"], ["550", "749"], ["7500", "9999"]] }, "9989": { "name": "Macedonia", "ranges": [["0", "0"], ["100", "199"], ["2000", "2999"], ["30", "59"], ["600", "949"], ["9500", "9999"]] }, "99901": { "name": "Bahrain", "ranges": [["00", "49"], ["500", "799"], ["80", "99"]] }, "99902": { "name": "Gabon - no ranges fixed yet", "ranges": [] }, "99903": { "name": "Mauritius", "ranges": [["0", "1"], ["20", "89"], ["900", "999"]] }, "99904": { "name": "Netherlands Antilles; Aruba, Neth. Ant", "ranges": [["0", "5"], ["60", "89"], ["900", "999"]] }, "99905": { "name": "Bolivia", "ranges": [["0", "3"], ["40", "79"], ["800", "999"]] }, "99906": { "name": "Kuwait", "ranges": [["0", "2"], ["30", "59"], ["600", "699"], ["70", "89"], ["9", "9"]] }, "99908": { "name": "Malawi", "ranges": [["0", "0"], ["10", "89"], ["900", "999"]] }, "99909": { "name": "Malta", "ranges": [["0", "3"], ["40", "94"], ["950", "999"]] }, "99910": { "name": "Sierra Leone", "ranges": [["0", "2"], ["30", "89"], ["900", "999"]] }, "99911": { "name": "Lesotho", "ranges": [["00", "59"], ["600", "999"]] }, "99912": { "name": "Botswana", "ranges": [["0", "3"], ["400", "599"], ["60", "89"], ["900", "999"]] }, "99913": { "name": "Andorra", "ranges": [["0", "2"], ["30", "35"], ["600", "604"]] }, "99914": { "name": "Suriname", "ranges": [["0", "4"], ["50", "89"], ["900", "949"]] }, "99915": { "name": "Maldives", "ranges": [["0", "4"], ["50", "79"], ["800", "999"]] }, "99916": { "name": "Namibia", "ranges": [["0", "2"], ["30", "69"], ["700", "999"]] }, "99917": { "name": "Brunei Darussalam", "ranges": [["0", "2"], ["30", "89"], ["900", "999"]] }, "99918": { "name": "Faroe Islands", "ranges": [["0", "3"], ["40", "79"], ["800", "999"]] }, "99919": { "name": "Benin", "ranges": [["0", "2"], ["300", "399"], ["40", "69"], ["900", "999"]] }, "99920": { "name": "Andorra", "ranges": [["0", "4"], ["50", "89"], ["900", "999"]] }, "99921": { "name": "Qatar", "ranges": [["0", "1"], ["20", "69"], ["700", "799"], ["8", "8"], ["90", "99"]] }, "99922": { "name": "Guatemala", "ranges": [["0", "3"], ["40", "69"], ["700", "999"]] }, "99923": { "name": "El Salvador", "ranges": [["0", "1"], ["20", "79"], ["800", "999"]] }, "99924": { "name": "Nicaragua", "ranges": [["0", "1"], ["20", "79"], ["800", "999"]] }, "99925": { "name": "Paraguay", "ranges": [["0", "3"], ["40", "79"], ["800", "999"]] }, "99926": { "name": "Honduras", "ranges": [["0", "0"], ["10", "59"], ["600", "999"]] }, "99927": { "name": "Albania", "ranges": [["0", "2"], ["30", "59"], ["600", "999"]] }, "99928": { "name": "Georgia", "ranges": [["0", "0"], ["10", "79"], ["800", "999"]] }, "99929": { "name": "Mongolia", "ranges": [["0", "4"], ["50", "79"], ["800", "999"]] }, "99930": { "name": "Armenia", "ranges": [["0", "4"], ["50", "79"], ["800", "999"]] }, "99931": { "name": "Seychelles", "ranges": [["0", "4"], ["50", "79"], ["800", "999"]] }, "99932": { "name": "Malta", "ranges": [["0", "0"], ["10", "59"], ["600", "699"], ["7", "7"], ["80", "99"]] }, "99933": { "name": "Nepal", "ranges": [["0", "2"], ["30", "59"], ["600", "999"]] }, "99934": { "name": "Dominican Republic", "ranges": [["0", "1"], ["20", "79"], ["800", "999"]] }, "99935": { "name": "Haiti", "ranges": [["0", "2"], ["7", "8"], ["30", "59"], ["600", "699"], ["90", "99"]] }, "99936": { "name": "Bhutan", "ranges": [["0", "0"], ["10", "59"], ["600", "999"]] }, "99937": { "name": "Macau", "ranges": [["0", "1"], ["20", "59"], ["600", "999"]] }, "99938": { "name": "Srpska", "ranges": [["0", "1"], ["20", "59"], ["600", "899"], ["90", "99"]] }, "99939": { "name": "Guatemala", "ranges": [["0", "5"], ["60", "89"], ["900", "999"]] }, "99940": { "name": "Georgia", "ranges": [["0", "0"], ["10", "69"], ["700", "999"]] }, "99941": { "name": "Armenia", "ranges": [["0", "2"], ["30", "79"], ["800", "999"]] }, "99942": { "name": "Sudan", "ranges": [["0", "4"], ["50", "79"], ["800", "999"]] }, "99943": { "name": "Alsbania", "ranges": [["0", "2"], ["30", "59"], ["600", "999"]] }, "99944": { "name": "Ethiopia", "ranges": [["0", "4"], ["50", "79"], ["800", "999"]] }, "99945": { "name": "Namibia", "ranges": [["0", "5"], ["60", "89"], ["900", "999"]] }, "99946": { "name": "Nepal", "ranges": [["0", "2"], ["30", "59"], ["600", "999"]] }, "99947": { "name": "Tajikistan", "ranges": [["0", "2"], ["30", "69"], ["700", "999"]] }, "99948": { "name": "Eritrea", "ranges": [["0", "4"], ["50", "79"], ["800", "999"]] }, "99949": { "name": "Mauritius", "ranges": [["0", "1"], ["20", "89"], ["900", "999"]] }, "99950": { "name": "Cambodia", "ranges": [["0", "4"], ["50", "79"], ["800", "999"]] }, "99951": { "name": "Congo - no ranges fixed yet", "ranges": [] }, "99952": { "name": "Mali", "ranges": [["0", "4"], ["50", "79"], ["800", "999"]] }, "99953": { "name": "Paraguay", "ranges": [["0", "2"], ["30", "79"], ["800", "999"]] }, "99954": { "name": "Bolivia", "ranges": [["0", "2"], ["30", "69"], ["700", "999"]] }, "99955": { "name": "Srpska", "ranges": [["0", "1"], ["20", "59"], ["600", "899"], ["90", "99"]] }, "99956": { "name": "Albania", "ranges": [["00", "59"], ["600", "999"]] }, "99957": { "name": "Malta", "ranges": [["0", "1"], ["20", "79"], ["800", "999"]] }, "99958": { "name": "Bahrain", "ranges": [["0", "4"], ["50", "94"], ["950", "999"]] }, "99959": { "name": "Luxembourg", "ranges": [["0", "2"], ["30", "59"], ["600", "999"]] }, "99960": { "name": "Malawi", "ranges": [["0", "0"], ["10", "94"], ["950", "999"]] }, "99961": { "name": "El Salvador", "ranges": [["0", "3"], ["40", "89"], ["900", "999"]] }, "99962": { "name": "Mongolia", "ranges": [["0", "4"], ["50", "79"], ["800", "999"]] }, "99963": { "name": "Cambodia", "ranges": [["00", "49"], ["500", "999"]] } }; }()); // // Ende importiertes isbn.js //