diff --git a/isbnlib/_data/data4info.py b/isbnlib/_data/data4info.py index 5afc9db..a27d239 100644 --- a/isbnlib/_data/data4info.py +++ b/isbnlib/_data/data4info.py @@ -1,9 +1,8 @@ -# -*- coding: utf-8 -*- # flake8:noqa # pylint:skip-file # isort:skip_file # fmt:off -# Produced by 'isbntools-dev'@'2023-01-28T09:01:00+00:00' +# Produced by 'generate.py'@'2023-01-29T21:28:28+00:00' # WARNING # THIS FILE WAS PRODUCED BY TOOLS THAT AUTOMATICALLY @@ -13,4 +12,4 @@ countries={'978-0':'English language','978-1':'English language','978-2':'French language','978-3':'German language','978-4':'Japan','978-5':'former U.S.S.R','978-600':'Iran','978-601':'Kazakhstan','978-602':'Indonesia','978-603':'Saudi Arabia','978-604':'Vietnam','978-605':'Turkey','978-606':'Romania','978-607':'Mexico','978-608':'North Macedonia','978-609':'Lithuania','978-611':'Thailand','978-612':'Peru','978-613':'Mauritius','978-614':'Lebanon','978-615':'Hungary','978-616':'Thailand','978-617':'Ukraine','978-618':'Greece','978-619':'Bulgaria','978-620':'Mauritius','978-621':'Philippines','978-622':'Iran','978-623':'Indonesia','978-624':'Sri Lanka','978-625':'Turkey','978-626':'Taiwan','978-627':'Pakistan','978-628':'Colombia','978-629':'Malaysia','978-630':'Romania','978-631':'Argentina','978-65':'Brazil','978-7': "China, People's Republic", '978-80':'former Czechoslovakia','978-81':'India','978-82':'Norway','978-83':'Poland','978-84':'Spain','978-85':'Brazil','978-86':'former Yugoslavia','978-87':'Denmark','978-88':'Italy','978-89':'Korea, Republic','978-90':'Netherlands','978-91':'Sweden','978-92':'International NGO Publishers and EU Organizations','978-93':'India','978-94':'Netherlands','978-950':'Argentina','978-951':'Finland','978-952':'Finland','978-953':'Croatia','978-954':'Bulgaria','978-955':'Sri Lanka','978-956':'Chile','978-957':'Taiwan','978-958':'Colombia','978-959':'Cuba','978-960':'Greece','978-961':'Slovenia','978-962':'Hong Kong, China','978-963':'Hungary','978-964':'Iran','978-965':'Israel','978-966':'Ukraine','978-967':'Malaysia','978-968':'Mexico','978-969':'Pakistan','978-970':'Mexico','978-971':'Philippines','978-972':'Portugal','978-973':'Romania','978-974':'Thailand','978-975':'Turkey','978-976':'Caribbean Community','978-977':'Egypt','978-978':'Nigeria','978-979':'Indonesia','978-980':'Venezuela','978-981':'Singapore','978-982':'South Pacific','978-983':'Malaysia','978-984':'Bangladesh','978-985':'Belarus','978-986':'Taiwan','978-987':'Argentina','978-988':'Hong Kong, China','978-989':'Portugal','978-9911':'Montenegro','978-9912':'Tanzania','978-9913':'Uganda','978-9914':'Kenya','978-9915':'Uruguay','978-9916':'Estonia','978-9917':'Bolivia','978-9918':'Malta','978-9919':'Mongolia','978-9920':'Morocco','978-9921':'Kuwait','978-9922':'Iraq','978-9923':'Jordan','978-9924':'Cambodia','978-9925':'Cyprus','978-9926':'Bosnia and Herzegovina','978-9927':'Qatar','978-9928':'Albania','978-9929':'Guatemala','978-9930':'Costa Rica','978-9931':'Algeria','978-9932': "Lao People's Democratic Republic", '978-9933':'Syria','978-9934':'Latvia','978-9935':'Iceland','978-9936':'Afghanistan','978-9937':'Nepal','978-9938':'Tunisia','978-9939':'Armenia','978-9940':'Montenegro','978-9941':'Georgia','978-9942':'Ecuador','978-9943':'Uzbekistan','978-9944':'Turkey','978-9945':'Dominican Republic','978-9946':'Korea, P.D.R.','978-9947':'Algeria','978-9948':'United Arab Emirates','978-9949':'Estonia','978-9950':'Palestine','978-9951':'Kosova','978-9952':'Azerbaijan','978-9953':'Lebanon','978-9954':'Morocco','978-9955':'Lithuania','978-9956':'Cameroon','978-9957':'Jordan','978-9958':'Bosnia and Herzegovina','978-9959':'Libya','978-9960':'Saudi Arabia','978-9961':'Algeria','978-9962':'Panama','978-9963':'Cyprus','978-9964':'Ghana','978-9965':'Kazakhstan','978-9966':'Kenya','978-9967':'Kyrgyz Republic','978-9968':'Costa Rica','978-9969':'Algeria','978-9970':'Uganda','978-9971':'Singapore','978-9972':'Peru','978-9973':'Tunisia','978-9974':'Uruguay','978-9975':'Moldova','978-9976':'Tanzania','978-9977':'Costa Rica','978-9978':'Ecuador','978-9979':'Iceland','978-9980':'Papua New Guinea','978-9981':'Morocco','978-9982':'Zambia','978-9983':'Gambia','978-9984':'Latvia','978-9985':'Estonia','978-9986':'Lithuania','978-9987':'Tanzania','978-9988':'Ghana','978-9989':'North Macedonia','978-99901':'Bahrain','978-99902':'Reserved Agency','978-99903':'Mauritius','978-99904':'CuraƧao','978-99905':'Bolivia','978-99906':'Kuwait','978-99908':'Malawi','978-99909':'Malta','978-99910':'Sierra Leone','978-99911':'Lesotho','978-99912':'Botswana','978-99913':'Andorra','978-99914':'International NGO Publishers','978-99915':'Maldives','978-99916':'Namibia','978-99917':'Brunei Darussalam','978-99918':'Faroe Islands','978-99919':'Benin','978-99920':'Andorra','978-99921':'Qatar','978-99922':'Guatemala','978-99923':'El Salvador','978-99924':'Nicaragua','978-99925':'Paraguay','978-99926':'Honduras','978-99927':'Albania','978-99928':'Georgia','978-99929':'Mongolia','978-99930':'Armenia','978-99931':'Seychelles','978-99932':'Malta','978-99933':'Nepal','978-99934':'Dominican Republic','978-99935':'Haiti','978-99936':'Bhutan','978-99937':'Macau','978-99938':'Srpska, Republic of','978-99939':'Guatemala','978-99940':'Georgia','978-99941':'Armenia','978-99942':'Sudan','978-99943':'Albania','978-99944':'Ethiopia','978-99945':'Namibia','978-99946':'Nepal','978-99947':'Tajikistan','978-99948':'Eritrea','978-99949':'Mauritius','978-99950':'Cambodia','978-99951':'Reserved Agency','978-99952':'Mali','978-99953':'Paraguay','978-99954':'Bolivia','978-99955':'Srpska, Republic of','978-99956':'Albania','978-99957':'Malta','978-99958':'Bahrain','978-99959':'Luxembourg','978-99960':'Malawi','978-99961':'El Salvador','978-99962':'Mongolia','978-99963':'Cambodia','978-99964':'Nicaragua','978-99965':'Macau','978-99966':'Kuwait','978-99967':'Paraguay','978-99968':'Botswana','978-99969':'Oman','978-99970':'Haiti','978-99971':'Myanmar','978-99972':'Faroe Islands','978-99973':'Mongolia','978-99974':'Bolivia','978-99975':'Tajikistan','978-99976':'Srpska, Republic of','978-99977':'Rwanda','978-99978':'Mongolia','978-99979':'Honduras','978-99980':'Bhutan','978-99981':'Macau','978-99982':'Benin','978-99983':'El Salvador','978-99985':'Tajikistan','978-99986':'Myanmar','978-99987':'Luxembourg','978-99988':'Sudan','978-99989':'Paraguay','978-99990':'Ethiopia','979-10':'France','979-11':'Korea, Republic','979-12':'Italy','979-8':'United States'} identifiers=(('978-0','978-1','978-2','978-3','978-4','978-5','978-7','979-8'),('978-65','978-80','978-81','978-82','978-83','978-84','978-85','978-86','978-87','978-88','978-89','978-90','978-91','978-92','978-93','978-94','979-10','979-11','979-12'),('978-600','978-601','978-602','978-603','978-604','978-605','978-606','978-607','978-608','978-609','978-611','978-612','978-613','978-614','978-615','978-616','978-617','978-618','978-619','978-620','978-621','978-622','978-623','978-624','978-625','978-626','978-627','978-628','978-629','978-630','978-631','978-950','978-951','978-952','978-953','978-954','978-955','978-956','978-957','978-958','978-959','978-960','978-961','978-962','978-963','978-964','978-965','978-966','978-967','978-968','978-969','978-970','978-971','978-972','978-973','978-974','978-975','978-976','978-977','978-978','978-979','978-980','978-981','978-982','978-983','978-984','978-985','978-986','978-987','978-988','978-989'),('978-9911','978-9912','978-9913','978-9914','978-9915','978-9916','978-9917','978-9918','978-9919','978-9920','978-9921','978-9922','978-9923','978-9924','978-9925','978-9926','978-9927','978-9928','978-9929','978-9930','978-9931','978-9932','978-9933','978-9934','978-9935','978-9936','978-9937','978-9938','978-9939','978-9940','978-9941','978-9942','978-9943','978-9944','978-9945','978-9946','978-9947','978-9948','978-9949','978-9950','978-9951','978-9952','978-9953','978-9954','978-9955','978-9956','978-9957','978-9958','978-9959','978-9960','978-9961','978-9962','978-9963','978-9964','978-9965','978-9966','978-9967','978-9968','978-9969','978-9970','978-9971','978-9972','978-9973','978-9974','978-9975','978-9976','978-9977','978-9978','978-9979','978-9980','978-9981','978-9982','978-9983','978-9984','978-9985','978-9986','978-9987','978-9988','978-9989'),('978-99901','978-99902','978-99903','978-99904','978-99905','978-99906','978-99908','978-99909','978-99910','978-99911','978-99912','978-99913','978-99914','978-99915','978-99916','978-99917','978-99918','978-99919','978-99920','978-99921','978-99922','978-99923','978-99924','978-99925','978-99926','978-99927','978-99928','978-99929','978-99930','978-99931','978-99932','978-99933','978-99934','978-99935','978-99936','978-99937','978-99938','978-99939','978-99940','978-99941','978-99942','978-99943','978-99944','978-99945','978-99946','978-99947','978-99948','978-99949','978-99950','978-99951','978-99952','978-99953','978-99954','978-99955','978-99956','978-99957','978-99958','978-99959','978-99960','978-99961','978-99962','978-99963','978-99964','978-99965','978-99966','978-99967','978-99968','978-99969','978-99970','978-99971','978-99972','978-99973','978-99974','978-99975','978-99976','978-99977','978-99978','978-99979','978-99980','978-99981','978-99982','978-99983','978-99985','978-99986','978-99987','978-99988','978-99989','978-99990')) -RDDATE='20230128' +RDDATE='20230129' diff --git a/isbnlib/_data/data4mask.py b/isbnlib/_data/data4mask.py index fad43f9..dc82343 100644 --- a/isbnlib/_data/data4mask.py +++ b/isbnlib/_data/data4mask.py @@ -1,9 +1,8 @@ -# -*- coding: utf-8 -*- # flake8:noqa # pylint:skip-file # isort:skip_file # fmt:off -# Produced by 'isbntools-dev'@'2023-01-28T09:01:00+00:00' +# Produced by 'generate.py'@'2023-01-29T21:28:28+00:00' # WARNING # THIS FILE WAS PRODUCED BY TOOLS THAT AUTOMATICALLY @@ -12,4 +11,4 @@ ranges={'978-0': ((0, 1999999, 2),(2000000, 2279999, 3),(2280000, 2289999, 4),(2290000, 3689999, 3),(3690000, 3699999, 4),(3700000, 6389999, 3),(6390000, 6397999, 4),(6398000, 6399999, 7),(6400000, 6449999, 3),(6450000, 6459999, 7),(6460000, 6479999, 3),(6480000, 6489999, 7),(6490000, 6549999, 3),(6550000, 6559999, 4),(6560000, 6999999, 3),(7000000, 8499999, 4),(8500000, 8999999, 5),(9000000, 9499999, 6),(9500000, 9999999, 7)), '978-1': ((0, 99999, 3),(100000, 299999, 2),(300000, 349999, 3),(350000, 399999, 4),(400000, 699999, 2),(700000, 999999, 4),(1000000, 3979999, 3),(3980000, 5499999, 4),(5500000, 6499999, 5),(6500000, 6799999, 4),(6800000, 6859999, 5),(6860000, 7139999, 4),(7140000, 7169999, 3),(7170000, 7319999, 4),(7320000, 7399999, 7),(7400000, 7749999, 5),(7750000, 7753999, 7),(7754000, 7763999, 5),(7764000, 7764999, 7),(7765000, 7769999, 5),(7770000, 7782999, 7),(7783000, 7899999, 5),(7900000, 7999999, 4),(8000000, 8004999, 5),(8005000, 8049999, 5),(8050000, 8379999, 5),(8380000, 8384999, 7),(8385000, 8671999, 5),(8672000, 8675999, 4),(8676000, 8697999, 5),(8698000, 9159999, 6),(9160000, 9165059, 7),(9165060, 9168699, 6),(9168700, 9169079, 7),(9169080, 9195999, 6),(9196000, 9196549, 7),(9196550, 9729999, 6),(9730000, 9877999, 4),(9878000, 9911499, 6),(9911500, 9911999, 7),(9912000, 9989899, 6),(9989900, 9999999, 7)), '978-2': ((0, 1999999, 2),(2000000, 3499999, 3),(3500000, 3999999, 5),(4000000, 4899999, 3),(4900000, 4949999, 6),(4950000, 4959999, 3),(4960000, 4966999, 4),(4967000, 4969999, 5),(4970000, 6999999, 3),(7000000, 8399999, 4),(8400000, 8999999, 5),(9000000, 9197999, 6),(9198000, 9198099, 5),(9198100, 9199429, 6),(9199430, 9199689, 7),(9199690, 9499999, 6),(9500000, 9999999, 7)), '978-3': ((0, 299999, 2),(300000, 339999, 3),(340000, 369999, 4),(370000, 399999, 5),(400000, 1999999, 2),(2000000, 6999999, 3),(7000000, 8499999, 4),(8500000, 8999999, 5),(9000000, 9499999, 6),(9500000, 9539999, 7),(9540000, 9699999, 5),(9700000, 9849999, 7),(9850000, 9999999, 5)), '978-4': ((0, 1999999, 2),(2000000, 6999999, 3),(7000000, 8499999, 4),(8500000, 8999999, 5),(9000000, 9499999, 6),(9500000, 9999999, 7)), '978-5': ((0, 49999, 5),(50000, 99999, 4),(100000, 1999999, 2),(2000000, 3619999, 3),(3620000, 3623999, 4),(3624000, 3629999, 5),(3630000, 4209999, 3),(4210000, 4299999, 4),(4300000, 4309999, 3),(4310000, 4399999, 4),(4400000, 4409999, 3),(4410000, 4499999, 4),(4500000, 6039999, 3),(6040000, 6049999, 7),(6050000, 6999999, 3),(7000000, 8499999, 4),(8500000, 8999999, 5),(9000000, 9099999, 6),(9100000, 9199999, 5),(9200000, 9299999, 4),(9300000, 9499999, 5),(9500000, 9500999, 7),(9501000, 9799999, 4),(9800000, 9899999, 5),(9900000, 9909999, 7),(9910000, 9999999, 4)), '978-600': ((0, 999999, 2),(1000000, 4999999, 3),(5000000, 8999999, 4),(9000000, 9867999, 5),(9868000, 9929999, 4),(9930000, 9959999, 3),(9960000, 9999999, 5)), '978-601': ((0, 1999999, 2),(2000000, 6999999, 3),(7000000, 7999999, 4),(8000000, 8499999, 5),(8500000, 9999999, 2)), '978-602': ((0, 699999, 2),(700000, 1399999, 4),(1400000, 1499999, 5),(1500000, 1699999, 4),(1700000, 1999999, 5),(2000000, 4999999, 3),(5000000, 5399999, 5),(5400000, 5999999, 4),(6000000, 6199999, 5),(6200000, 6999999, 4),(7000000, 7499999, 5),(7500000, 9499999, 4),(9500000, 9999999, 5)), '978-603': ((0, 499999, 2),(500000, 4999999, 2),(5000000, 7999999, 3),(8000000, 8999999, 4),(9000000, 9999999, 5)), '978-604': ((0, 4999999, 1),(5000000, 8999999, 2),(9000000, 9799999, 3),(9800000, 9999999, 4)), '978-605': ((0, 299999, 2),(300000, 399999, 3),(400000, 599999, 2),(600000, 699999, 5),(700000, 999999, 2),(1000000, 1999999, 3),(2000000, 2399999, 4),(2400000, 3999999, 3),(4000000, 5999999, 4),(6000000, 7499999, 5),(7500000, 7999999, 4),(8000000, 8999999, 5),(9000000, 9999999, 4)), '978-606': ((0, 999999, 3),(1000000, 4999999, 2),(5000000, 7999999, 3),(8000000, 9099999, 4),(9100000, 9199999, 3),(9200000, 9599999, 5),(9600000, 9749999, 4),(9750000, 9999999, 3)), '978-607': ((0, 3999999, 2),(4000000, 5929999, 3),(5930000, 5999999, 5),(6000000, 7499999, 3),(7500000, 9499999, 4),(9500000, 9999999, 5)), '978-608': ((0, 999999, 1),(1000000, 1999999, 2),(2000000, 4499999, 3),(4500000, 6499999, 4),(6500000, 6999999, 5),(7000000, 9999999, 1)), '978-609': ((0, 3999999, 2),(4000000, 7999999, 3),(8000000, 9499999, 4),(9500000, 9999999, 5)), '978-611': ((0, 9999999, 0),), '978-612': ((0, 2999999, 2),(3000000, 3999999, 3),(4000000, 4499999, 4),(4500000, 4999999, 5),(5000000, 5149999, 4),(5150000, 9999999, 0)), '978-613': ((0, 9999999, 1),), '978-614': ((0, 3999999, 2),(4000000, 7999999, 3),(8000000, 9499999, 4),(9500000, 9999999, 5)), '978-615': ((0, 999999, 2),(1000000, 4999999, 3),(5000000, 7999999, 4),(8000000, 8999999, 5),(9000000, 9999999, 0)), '978-616': ((0, 1999999, 2),(2000000, 6999999, 3),(7000000, 8999999, 4),(9000000, 9999999, 5)), '978-617': ((0, 4999999, 2),(5000000, 6999999, 3),(7000000, 8999999, 4),(9000000, 9999999, 5)), '978-618': ((0, 1999999, 2),(2000000, 4999999, 3),(5000000, 7999999, 4),(8000000, 9999999, 5)), '978-619': ((0, 1499999, 2),(1500000, 6999999, 3),(7000000, 8999999, 4),(9000000, 9999999, 5)), '978-620': ((0, 9999999, 1),), '978-621': ((0, 2999999, 2),(3000000, 3999999, 0),(4000000, 5999999, 3),(6000000, 7999999, 0),(8000000, 8999999, 4),(9000000, 9499999, 0),(9500000, 9999999, 5)), '978-622': ((0, 1099999, 2),(1100000, 1999999, 0),(2000000, 3749999, 3),(3750000, 5199999, 0),(5200000, 7999999, 4),(8000000, 9249999, 0),(9250000, 9999999, 5)), '978-623': ((0, 999999, 2),(1000000, 1299999, 0),(1300000, 4999999, 3),(5000000, 5249999, 0),(5250000, 8799999, 4),(8800000, 9999999, 5)), '978-624': ((0, 499999, 2),(500000, 1999999, 0),(2000000, 2499999, 3),(2500000, 4999999, 0),(5000000, 6449999, 4),(6450000, 9449999, 0),(9450000, 9999999, 5)), '978-625': ((0, 99999, 2),(100000, 3649999, 0),(3650000, 4429999, 3),(4430000, 4449999, 5),(4450000, 4499999, 3),(4500000, 6349999, 0),(6350000, 7793999, 4),(7794000, 7794999, 5),(7795000, 8499999, 4),(8500000, 9999999, 0)), '978-626': ((0, 499999, 2),(500000, 2999999, 0),(3000000, 4999999, 3),(5000000, 6999999, 0),(7000000, 7999999, 4),(8000000, 9499999, 0),(9500000, 9999999, 5)), '978-627': ((0, 2999999, 0),(3000000, 3199999, 2),(3200000, 4999999, 0),(5000000, 5249999, 3),(5250000, 7499999, 0),(7500000, 7999999, 4),(8000000, 9999999, 0)), '978-628': ((0, 999999, 2),(1000000, 4999999, 0),(5000000, 5499999, 3),(5500000, 7499999, 0),(7500000, 8499999, 4),(8500000, 9499999, 0),(9500000, 9999999, 5)), '978-629': ((0, 299999, 2),(300000, 4699999, 0),(4700000, 4999999, 3),(5000000, 7499999, 0),(7500000, 7999999, 4),(8000000, 9649999, 0),(9650000, 9999999, 5)), '978-630': ((0, 2999999, 0),(3000000, 3499999, 3),(3500000, 6499999, 0),(6500000, 6849999, 4),(6850000, 9999999, 0)), '978-631': ((0, 999999, 2),(1000000, 2999999, 0),(3000000, 3999999, 3),(4000000, 6499999, 0),(6500000, 7499999, 4),(7500000, 8999999, 0),(9000000, 9999999, 5)), '978-65': ((0, 199999, 2),(200000, 2499999, 0),(2500000, 2999999, 3),(3000000, 3029999, 3),(3030000, 4999999, 0),(5000000, 5129999, 4),(5130000, 5349999, 0),(5350000, 6149999, 4),(6150000, 7999999, 0),(8000000, 8182499, 5),(8182500, 8449999, 0),(8450000, 8999999, 5),(9000000, 9024499, 6),(9024500, 9899999, 0),(9900000, 9999999, 6)), '978-7': ((0, 999999, 2),(1000000, 4999999, 3),(5000000, 7999999, 4),(8000000, 8999999, 5),(9000000, 9999999, 6)), '978-80': ((0, 1999999, 2),(2000000, 6899999, 3),(6900000, 6999999, 5),(7000000, 8499999, 4),(8500000, 8999999, 5),(9000000, 9989999, 6),(9990000, 9999999, 5)), '978-81': ((0, 1899999, 2),(1900000, 1999999, 5),(2000000, 6999999, 3),(7000000, 8499999, 4),(8500000, 8999999, 5),(9000000, 9999999, 6)), '978-82': ((0, 1999999, 2),(2000000, 6899999, 3),(6900000, 6999999, 6),(7000000, 8999999, 4),(9000000, 9899999, 5),(9900000, 9999999, 6)), '978-83': ((0, 1999999, 2),(2000000, 5999999, 3),(6000000, 6999999, 5),(7000000, 8499999, 4),(8500000, 8999999, 5),(9000000, 9999999, 6)), '978-84': ((0, 999999, 2),(1000000, 1049999, 5),(1050000, 1199999, 4),(1200000, 1299999, 6),(1300000, 1399999, 4),(1400000, 1499999, 3),(1500000, 1999999, 5),(2000000, 6999999, 3),(7000000, 8499999, 4),(8500000, 8999999, 5),(9000000, 9199999, 4),(9200000, 9239999, 6),(9240000, 9299999, 5),(9300000, 9499999, 6),(9500000, 9699999, 5),(9700000, 9999999, 4)), '978-85': ((0, 1999999, 2),(2000000, 4549999, 3),(4550000, 4552999, 6),(4553000, 4559999, 5),(4560000, 5289999, 3),(5290000, 5319999, 5),(5320000, 5339999, 4),(5340000, 5399999, 3),(5400000, 5402999, 5),(5403000, 5403999, 5),(5404000, 5404999, 6),(5405000, 5408999, 5),(5409000, 5409999, 6),(5410000, 5439999, 5),(5440000, 5479999, 4),(5480000, 5499999, 5),(5500000, 5999999, 4),(6000000, 6999999, 5),(7000000, 8499999, 4),(8500000, 8999999, 5),(9000000, 9249999, 6),(9250000, 9449999, 5),(9450000, 9599999, 4),(9600000, 9799999, 2),(9800000, 9999999, 5)), '978-86': ((0, 2999999, 2),(3000000, 5999999, 3),(6000000, 7999999, 4),(8000000, 8999999, 5),(9000000, 9999999, 6)), '978-87': ((0, 2999999, 2),(3000000, 3999999, 0),(4000000, 6499999, 3),(6500000, 6999999, 0),(7000000, 7999999, 4),(8000000, 8499999, 0),(8500000, 9499999, 5),(9500000, 9699999, 0),(9700000, 9999999, 6)), '978-88': ((0, 1999999, 2),(2000000, 3119999, 3),(3120000, 3149999, 5),(3150000, 3189999, 3),(3190000, 3229999, 5),(3230000, 3269999, 3),(3270000, 3389999, 4),(3390000, 3609999, 3),(3610000, 3629999, 4),(3630000, 5489999, 3),(5490000, 5549999, 4),(5550000, 5999999, 3),(6000000, 8499999, 4),(8500000, 8999999, 5),(9000000, 9099999, 6),(9100000, 9269999, 3),(9270000, 9399999, 4),(9400000, 9479999, 6),(9480000, 9999999, 5)), '978-89': ((0, 2499999, 2),(2500000, 5499999, 3),(5500000, 8499999, 4),(8500000, 9499999, 5),(9500000, 9699999, 6),(9700000, 9899999, 5),(9900000, 9999999, 3)), '978-90': ((0, 1999999, 2),(2000000, 4999999, 3),(5000000, 6999999, 4),(7000000, 7999999, 5),(8000000, 8499999, 6),(8500000, 8999999, 4),(9000000, 9099999, 2),(9100000, 9399999, 0),(9400000, 9499999, 2),(9500000, 9999999, 0)), '978-91': ((0, 1999999, 1),(2000000, 4999999, 2),(5000000, 6499999, 3),(6500000, 6999999, 0),(7000000, 8199999, 4),(8200000, 8499999, 0),(8500000, 9499999, 5),(9500000, 9699999, 0),(9700000, 9999999, 6)), '978-92': ((0, 5999999, 1),(6000000, 7999999, 2),(8000000, 8999999, 3),(9000000, 9499999, 4),(9500000, 9899999, 5),(9900000, 9999999, 6)), '978-93': ((0, 999999, 2),(1000000, 4999999, 3),(5000000, 7999999, 4),(8000000, 9599999, 5),(9600000, 9999999, 6)), '978-94': ((0, 5999999, 3),(6000000, 8999999, 4),(9000000, 9999999, 5)), '978-950': ((0, 4999999, 2),(5000000, 8999999, 3),(9000000, 9899999, 4),(9900000, 9999999, 5)), '978-951': ((0, 1999999, 1),(2000000, 5499999, 2),(5500000, 8899999, 3),(8900000, 9499999, 4),(9500000, 9999999, 5)), '978-952': ((0, 1999999, 2),(2000000, 4999999, 3),(5000000, 5999999, 4),(6000000, 6499999, 2),(6500000, 6599999, 5),(6600000, 6699999, 4),(6700000, 6999999, 5),(7000000, 7999999, 4),(8000000, 9499999, 2),(9500000, 9899999, 4),(9900000, 9999999, 5)), '978-953': ((0, 999999, 1),(1000000, 1499999, 2),(1500000, 4799999, 3),(4800000, 4999999, 5),(5000000, 5009999, 3),(5010000, 5099999, 5),(5100000, 5499999, 2),(5500000, 5999999, 5),(6000000, 9499999, 4),(9500000, 9999999, 5)), '978-954': ((0, 2899999, 2),(2900000, 2999999, 4),(3000000, 7999999, 3),(8000000, 8999999, 4),(9000000, 9299999, 5),(9300000, 9999999, 4)), '978-955': ((0, 1999999, 4),(2000000, 3399999, 2),(3400000, 3549999, 4),(3550000, 3599999, 5),(3600000, 3799999, 4),(3800000, 3899999, 5),(3900000, 4099999, 4),(4100000, 4499999, 5),(4500000, 4999999, 4),(5000000, 5499999, 5),(5500000, 7109999, 3),(7110000, 7149999, 5),(7150000, 9499999, 4),(9500000, 9999999, 5)), '978-956': ((0, 899999, 2),(900000, 999999, 5),(1000000, 1999999, 2),(2000000, 5999999, 3),(6000000, 6999999, 4),(7000000, 9999999, 4)), '978-957': ((0, 299999, 2),(300000, 499999, 4),(500000, 1999999, 2),(2000000, 2099999, 4),(2100000, 2799999, 2),(2800000, 3099999, 5),(3100000, 4399999, 2),(4400000, 8199999, 3),(8200000, 9699999, 4),(9700000, 9999999, 5)), '978-958': ((0, 4999999, 2),(5000000, 5099999, 3),(5100000, 5199999, 4),(5200000, 5399999, 5),(5400000, 5599999, 4),(5600000, 5999999, 5),(6000000, 7999999, 3),(8000000, 9499999, 4),(9500000, 9999999, 5)), '978-959': ((0, 1999999, 2),(2000000, 6999999, 3),(7000000, 8499999, 4),(8500000, 9999999, 5)), '978-960': ((0, 1999999, 2),(2000000, 6599999, 3),(6600000, 6899999, 4),(6900000, 6999999, 3),(7000000, 8499999, 4),(8500000, 9299999, 5),(9300000, 9399999, 2),(9400000, 9799999, 4),(9800000, 9999999, 5)), '978-961': ((0, 1999999, 2),(2000000, 5999999, 3),(6000000, 8999999, 4),(9000000, 9799999, 5),(9800000, 9999999, 0)), '978-962': ((0, 1999999, 2),(2000000, 6999999, 3),(7000000, 8499999, 4),(8500000, 8699999, 5),(8700000, 8999999, 4),(9000000, 9999999, 3)), '978-963': ((0, 1999999, 2),(2000000, 6999999, 3),(7000000, 8499999, 4),(8500000, 8999999, 5),(9000000, 9999999, 4)), '978-964': ((0, 1499999, 2),(1500000, 2499999, 3),(2500000, 2999999, 4),(3000000, 5499999, 3),(5500000, 8999999, 4),(9000000, 9699999, 5),(9700000, 9899999, 3),(9900000, 9999999, 4)), '978-965': ((0, 1999999, 2),(2000000, 5999999, 3),(6000000, 6999999, 0),(7000000, 7999999, 4),(8000000, 8999999, 0),(9000000, 9999999, 5)), '978-966': ((0, 1299999, 2),(1300000, 1399999, 3),(1400000, 1499999, 2),(1500000, 1699999, 4),(1700000, 1999999, 3),(2000000, 2789999, 4),(2790000, 2899999, 3),(2900000, 2999999, 4),(3000000, 6999999, 3),(7000000, 8999999, 4),(9000000, 9099999, 5),(9100000, 9499999, 3),(9500000, 9799999, 5),(9800000, 9999999, 3)), '978-967': ((0, 999999, 4),(1000000, 1999999, 5),(2000000, 2499999, 4),(2500000, 2549999, 3),(2550000, 2699999, 5),(2700000, 2799999, 4),(2800000, 2999999, 4),(3000000, 4999999, 3),(5000000, 5999999, 4),(6000000, 8999999, 2),(9000000, 9899999, 3),(9900000, 9989999, 4),(9990000, 9999999, 5)), '978-968': ((100000, 3999999, 2),(4000000, 4999999, 3),(5000000, 7999999, 4),(8000000, 8999999, 3),(9000000, 9999999, 4)), '978-969': ((0, 1999999, 1),(2000000, 2099999, 2),(2100000, 2199999, 3),(2200000, 2299999, 4),(2300000, 2399999, 5),(2400000, 3999999, 2),(4000000, 7499999, 3),(7500000, 9999999, 4)), '978-970': ((100000, 5999999, 2),(6000000, 8999999, 3),(9000000, 9099999, 4),(9100000, 9699999, 5),(9700000, 9999999, 4)), '978-971': ((0, 159999, 3),(160000, 199999, 4),(200000, 299999, 2),(300000, 599999, 4),(600000, 4999999, 2),(5000000, 8499999, 3),(8500000, 9099999, 4),(9100000, 9599999, 5),(9600000, 9699999, 4),(9700000, 9899999, 2),(9900000, 9999999, 4)), '978-972': ((0, 1999999, 1),(2000000, 5499999, 2),(5500000, 7999999, 3),(8000000, 9499999, 4),(9500000, 9999999, 5)), '978-973': ((0, 999999, 1),(1000000, 1699999, 3),(1700000, 1999999, 4),(2000000, 5499999, 2),(5500000, 7599999, 3),(7600000, 8499999, 4),(8500000, 8899999, 5),(8900000, 9499999, 4),(9500000, 9999999, 5)), '978-974': ((0, 1999999, 2),(2000000, 6999999, 3),(7000000, 8499999, 4),(8500000, 8999999, 5),(9000000, 9499999, 5),(9500000, 9999999, 4)), '978-975': ((0, 199999, 5),(200000, 2399999, 2),(2400000, 2499999, 4),(2500000, 5999999, 3),(6000000, 9199999, 4),(9200000, 9899999, 5),(9900000, 9999999, 3)), '978-976': ((0, 3999999, 1),(4000000, 5999999, 2),(6000000, 7999999, 3),(8000000, 9499999, 4),(9500000, 9999999, 5)), '978-977': ((0, 1999999, 2),(2000000, 4999999, 3),(5000000, 6999999, 4),(7000000, 8499999, 3),(8500000, 8929999, 5),(8930000, 8949999, 3),(8950000, 8999999, 4),(9000000, 9899999, 2),(9900000, 9999999, 3)), '978-978': ((0, 1999999, 3),(2000000, 2999999, 4),(3000000, 7899999, 5),(7900000, 7999999, 3),(8000000, 8999999, 4),(9000000, 9999999, 3)), '978-979': ((0, 999999, 3),(1000000, 1499999, 4),(1500000, 1999999, 5),(2000000, 2999999, 2),(3000000, 3999999, 4),(4000000, 7999999, 3),(8000000, 9499999, 4),(9500000, 9999999, 5)), '978-980': ((0, 1999999, 2),(2000000, 5999999, 3),(6000000, 9999999, 4)), '978-981': ((0, 1699999, 2),(1700000, 1799999, 5),(1800000, 1999999, 2),(2000000, 2999999, 3),(3000000, 3099999, 4),(3100000, 3999999, 3),(4000000, 9499999, 4),(9500000, 9899999, 0),(9900000, 9999999, 2)), '978-982': ((0, 999999, 2),(1000000, 6999999, 3),(7000000, 8999999, 2),(9000000, 9799999, 4),(9800000, 9999999, 5)), '978-983': ((0, 199999, 2),(200000, 1999999, 3),(2000000, 3999999, 4),(4000000, 4499999, 5),(4500000, 4999999, 2),(5000000, 7999999, 2),(8000000, 8999999, 3),(9000000, 9899999, 4),(9900000, 9999999, 5)), '978-984': ((0, 3999999, 2),(4000000, 7999999, 3),(8000000, 8999999, 4),(9000000, 9999999, 5)), '978-985': ((0, 3999999, 2),(4000000, 5999999, 3),(6000000, 8799999, 4),(8800000, 8999999, 3),(9000000, 9999999, 5)), '978-986': ((0, 599999, 2),(600000, 699999, 5),(700000, 799999, 4),(800000, 1199999, 2),(1200000, 5399999, 3),(5400000, 7999999, 4),(8000000, 9999999, 5)), '978-987': ((0, 999999, 2),(1000000, 1999999, 4),(2000000, 2999999, 5),(3000000, 3599999, 2),(3600000, 4199999, 4),(4200000, 4399999, 2),(4400000, 4499999, 4),(4500000, 4899999, 5),(4900000, 4999999, 4),(5000000, 8249999, 3),(8250000, 8279999, 4),(8280000, 8299999, 5),(8300000, 8499999, 4),(8500000, 8899999, 2),(8900000, 9499999, 4),(9500000, 9999999, 5)), '978-988': ((0, 1199999, 2),(1200000, 1999999, 5),(2000000, 7399999, 3),(7400000, 7699999, 5),(7700000, 7999999, 5),(8000000, 9699999, 4),(9700000, 9999999, 5)), '978-989': ((0, 1999999, 1),(2000000, 3499999, 2),(3500000, 3699999, 5),(3700000, 5299999, 2),(5300000, 5499999, 5),(5500000, 7999999, 3),(8000000, 9499999, 4),(9500000, 9999999, 5)), '978-9911': ((0, 1999999, 0),(2000000, 2499999, 2),(2500000, 5499999, 0),(5500000, 7499999, 3),(7500000, 9999999, 0)), '978-9912': ((0, 3999999, 0),(4000000, 4499999, 2),(4500000, 7499999, 0),(7500000, 7999999, 3),(8000000, 9799999, 0),(9800000, 9999999, 4)), '978-9913': ((0, 499999, 2),(500000, 5999999, 0),(6000000, 6499999, 3),(6500000, 9799999, 0),(9800000, 9999999, 4)), '978-9914': ((0, 3999999, 0),(4000000, 4999999, 2),(5000000, 6999999, 0),(7000000, 7499999, 3),(7500000, 9599999, 0),(9600000, 9999999, 4)), '978-9915': ((0, 3999999, 0),(4000000, 5999999, 2),(6000000, 6499999, 0),(6500000, 7999999, 3),(8000000, 9299999, 0),(9300000, 9999999, 4)), '978-9916': ((0, 999999, 1),(1000000, 3999999, 2),(4000000, 5999999, 1),(6000000, 7499999, 3),(7500000, 9499999, 0),(9500000, 9999999, 4)), '978-9917': ((0, 999999, 1),(1000000, 2999999, 0),(3000000, 3499999, 2),(3500000, 5999999, 0),(6000000, 6999999, 3),(7000000, 9799999, 0),(9800000, 9999999, 4)), '978-9918': ((0, 999999, 1),(1000000, 1999999, 0),(2000000, 2999999, 2),(3000000, 5999999, 0),(6000000, 7999999, 3),(8000000, 9499999, 0),(9500000, 9999999, 4)), '978-9919': ((0, 999999, 1),(1000000, 1999999, 0),(2000000, 2999999, 2),(3000000, 4999999, 0),(5000000, 5999999, 3),(6000000, 9499999, 0),(9500000, 9999999, 4)), '978-9920': ((0, 2999999, 0),(3000000, 4199999, 2),(4200000, 4999999, 0),(5000000, 7999999, 3),(8000000, 8749999, 0),(8750000, 9999999, 4)), '978-9921': ((0, 999999, 1),(1000000, 2999999, 0),(3000000, 3999999, 2),(4000000, 6999999, 0),(7000000, 8999999, 3),(9000000, 9699999, 0),(9700000, 9999999, 4)), '978-9922': ((0, 1999999, 0),(2000000, 2999999, 2),(3000000, 5999999, 0),(6000000, 7999999, 3),(8000000, 8499999, 0),(8500000, 9999999, 4)), '978-9923': ((0, 999999, 1),(1000000, 5999999, 2),(6000000, 6999999, 0),(7000000, 8999999, 3),(9000000, 9699999, 0),(9700000, 9999999, 4)), '978-9924': ((0, 2999999, 0),(3000000, 3999999, 2),(4000000, 4999999, 0),(5000000, 6499999, 3),(6500000, 8999999, 0),(9000000, 9999999, 4)), '978-9925': ((0, 2999999, 1),(3000000, 5499999, 2),(5500000, 7349999, 3),(7350000, 9999999, 4)), '978-9926': ((0, 1999999, 1),(2000000, 3999999, 2),(4000000, 7999999, 3),(8000000, 9999999, 4)), '978-9927': ((0, 999999, 2),(1000000, 3999999, 3),(4000000, 4999999, 4),(5000000, 9999999, 0)), '978-9928': ((0, 999999, 2),(1000000, 3999999, 3),(4000000, 4999999, 4),(5000000, 7999999, 0),(8000000, 8999999, 3),(9000000, 9999999, 2)), '978-9929': ((0, 3999999, 1),(4000000, 5499999, 2),(5500000, 7999999, 3),(8000000, 9999999, 4)), '978-9930': ((0, 4999999, 2),(5000000, 9399999, 3),(9400000, 9999999, 4)), '978-9931': ((0, 2399999, 2),(2400000, 8999999, 3),(9000000, 9999999, 4)), '978-9932': ((0, 3999999, 2),(4000000, 8499999, 3),(8500000, 9999999, 4)), '978-9933': ((0, 999999, 1),(1000000, 3999999, 2),(4000000, 8999999, 3),(9000000, 9999999, 4)), '978-9934': ((0, 999999, 1),(1000000, 4999999, 2),(5000000, 7999999, 3),(8000000, 9999999, 4)), '978-9935': ((0, 999999, 1),(1000000, 3999999, 2),(4000000, 8999999, 3),(9000000, 9999999, 4)), '978-9936': ((0, 1999999, 1),(2000000, 3999999, 2),(4000000, 7999999, 3),(8000000, 9999999, 4)), '978-9937': ((0, 2999999, 1),(3000000, 4999999, 2),(5000000, 7999999, 3),(8000000, 9999999, 4)), '978-9938': ((0, 7999999, 2),(8000000, 9499999, 3),(9500000, 9749999, 4),(9750000, 9909999, 3),(9910000, 9999999, 4)), '978-9939': ((0, 4999999, 1),(5000000, 7999999, 2),(8000000, 8999999, 3),(9000000, 9599999, 4),(9600000, 9799999, 3),(9800000, 9999999, 2)), '978-9940': ((0, 1999999, 1),(2000000, 4999999, 2),(5000000, 8399999, 3),(8400000, 8699999, 2),(8700000, 9999999, 4)), '978-9941': ((0, 999999, 1),(1000000, 3999999, 2),(4000000, 7999999, 3),(8000000, 8999999, 1),(9000000, 9999999, 4)), '978-9942': ((0, 5999999, 2),(6000000, 6999999, 3),(7000000, 7499999, 4),(7500000, 8499999, 3),(8500000, 8999999, 4),(9000000, 9849999, 3),(9850000, 9999999, 4)), '978-9943': ((0, 2999999, 2),(3000000, 3999999, 3),(4000000, 9749999, 4),(9750000, 9999999, 3)), '978-9944': ((0, 999999, 4),(1000000, 4999999, 3),(5000000, 5999999, 4),(6000000, 6999999, 2),(7000000, 7999999, 3),(8000000, 8999999, 2),(9000000, 9999999, 3)), '978-9945': ((0, 99999, 2),(100000, 799999, 3),(800000, 3999999, 2),(4000000, 5699999, 3),(5700000, 5799999, 2),(5800000, 7999999, 3),(8000000, 8099999, 2),(8100000, 8499999, 3),(8500000, 9999999, 4)), '978-9946': ((0, 1999999, 1),(2000000, 3999999, 2),(4000000, 8999999, 3),(9000000, 9999999, 4)), '978-9947': ((0, 1999999, 1),(2000000, 7999999, 2),(8000000, 9999999, 3)), '978-9948': ((0, 3999999, 2),(4000000, 8499999, 3),(8500000, 9999999, 4)), '978-9949': ((0, 899999, 2),(900000, 999999, 3),(1000000, 3999999, 2),(4000000, 6999999, 3),(7000000, 7199999, 2),(7200000, 7499999, 4),(7500000, 8999999, 2),(9000000, 9999999, 4)), '978-9950': ((0, 2999999, 2),(3000000, 8499999, 3),(8500000, 9999999, 4)), '978-9951': ((0, 3999999, 2),(4000000, 8499999, 3),(8500000, 9999999, 4)), '978-9952': ((0, 1999999, 1),(2000000, 3999999, 2),(4000000, 7999999, 3),(8000000, 9999999, 4)), '978-9953': ((0, 999999, 1),(1000000, 3999999, 2),(4000000, 5999999, 3),(6000000, 8999999, 2),(9000000, 9299999, 4),(9300000, 9699999, 2),(9700000, 9999999, 3)), '978-9954': ((0, 1999999, 1),(2000000, 3999999, 2),(4000000, 7999999, 3),(8000000, 9899999, 4),(9900000, 9999999, 2)), '978-9955': ((0, 3999999, 2),(4000000, 9299999, 3),(9300000, 9999999, 4)), '978-9956': ((0, 999999, 1),(1000000, 3999999, 2),(4000000, 8999999, 3),(9000000, 9999999, 4)), '978-9957': ((0, 3999999, 2),(4000000, 6499999, 3),(6500000, 6799999, 2),(6800000, 6999999, 3),(7000000, 8499999, 2),(8500000, 8799999, 4),(8800000, 9999999, 2)), '978-9958': ((0, 199999, 2),(200000, 299999, 3),(300000, 399999, 4),(400000, 899999, 3),(900000, 999999, 4),(1000000, 1899999, 2),(1900000, 1999999, 4),(2000000, 4999999, 2),(5000000, 8999999, 3),(9000000, 9999999, 4)), '978-9959': ((0, 1999999, 1),(2000000, 7999999, 2),(8000000, 9499999, 3),(9500000, 9699999, 4),(9700000, 9799999, 3),(9800000, 9999999, 2)), '978-9960': ((0, 5999999, 2),(6000000, 8999999, 3),(9000000, 9999999, 4)), '978-9961': ((0, 2999999, 1),(3000000, 6999999, 2),(7000000, 9499999, 3),(9500000, 9999999, 4)), '978-9962': ((0, 5499999, 2),(5500000, 5599999, 4),(5600000, 5999999, 2),(6000000, 8499999, 3),(8500000, 9999999, 4)), '978-9963': ((0, 1999999, 1),(2000000, 2499999, 4),(2500000, 2799999, 3),(2800000, 2999999, 4),(3000000, 5499999, 2),(5500000, 7349999, 3),(7350000, 7499999, 4),(7500000, 9999999, 4)), '978-9964': ((0, 6999999, 1),(7000000, 9499999, 2),(9500000, 9999999, 3)), '978-9965': ((0, 3999999, 2),(4000000, 8999999, 3),(9000000, 9999999, 4)), '978-9966': ((0, 1399999, 3),(1400000, 1499999, 2),(1500000, 1999999, 4),(2000000, 6999999, 2),(7000000, 7499999, 4),(7500000, 8209999, 3),(8210000, 8249999, 4),(8250000, 8259999, 3),(8260000, 8289999, 4),(8290000, 9599999, 3),(9600000, 9999999, 4)), '978-9967': ((0, 3999999, 2),(4000000, 8999999, 3),(9000000, 9999999, 4)), '978-9968': ((0, 4999999, 2),(5000000, 9399999, 3),(9400000, 9999999, 4)), '978-9969': ((0, 699999, 2),(700000, 4999999, 0),(5000000, 6499999, 3),(6500000, 9699999, 0),(9700000, 9999999, 4)), '978-9970': ((0, 3999999, 2),(4000000, 8999999, 3),(9000000, 9999999, 4)), '978-9971': ((0, 5999999, 1),(6000000, 8999999, 2),(9000000, 9899999, 3),(9900000, 9999999, 4)), '978-9972': ((0, 999999, 2),(1000000, 1999999, 1),(2000000, 2499999, 3),(2500000, 2999999, 4),(3000000, 5999999, 2),(6000000, 8999999, 3),(9000000, 9999999, 4)), '978-9973': ((0, 599999, 2),(600000, 899999, 3),(900000, 999999, 4),(1000000, 6999999, 2),(7000000, 9699999, 3),(9700000, 9999999, 4)), '978-9974': ((0, 2999999, 1),(3000000, 5499999, 2),(5500000, 7499999, 3),(7500000, 8799999, 4),(8800000, 9099999, 3),(9100000, 9499999, 2),(9500000, 9999999, 2)), '978-9975': ((0, 999999, 1),(1000000, 2999999, 3),(3000000, 3999999, 4),(4000000, 4499999, 4),(4500000, 8999999, 2),(9000000, 9499999, 3),(9500000, 9999999, 4)), '978-9976': ((0, 4999999, 1),(5000000, 5799999, 4),(5800000, 5899999, 3),(5900000, 8999999, 2),(9000000, 9899999, 3),(9900000, 9999999, 4)), '978-9977': ((0, 8999999, 2),(9000000, 9899999, 3),(9900000, 9999999, 4)), '978-9978': ((0, 2999999, 2),(3000000, 3999999, 3),(4000000, 9499999, 2),(9500000, 9899999, 3),(9900000, 9999999, 4)), '978-9979': ((0, 4999999, 1),(5000000, 6499999, 2),(6500000, 6599999, 3),(6600000, 7599999, 2),(7600000, 8999999, 3),(9000000, 9999999, 4)), '978-9980': ((0, 3999999, 1),(4000000, 8999999, 2),(9000000, 9899999, 3),(9900000, 9999999, 4)), '978-9981': ((0, 999999, 2),(1000000, 1599999, 3),(1600000, 1999999, 4),(2000000, 7999999, 2),(8000000, 9499999, 3),(9500000, 9999999, 4)), '978-9982': ((0, 7999999, 2),(8000000, 9899999, 3),(9900000, 9999999, 4)), '978-9983': ((0, 7999999, 0),(8000000, 9499999, 2),(9500000, 9899999, 3),(9900000, 9999999, 4)), '978-9984': ((0, 4999999, 2),(5000000, 8999999, 3),(9000000, 9999999, 4)), '978-9985': ((0, 4999999, 1),(5000000, 7999999, 2),(8000000, 8999999, 3),(9000000, 9999999, 4)), '978-9986': ((0, 3999999, 2),(4000000, 8999999, 3),(9000000, 9399999, 4),(9400000, 9699999, 3),(9700000, 9999999, 2)), '978-9987': ((0, 3999999, 2),(4000000, 8799999, 3),(8800000, 9999999, 4)), '978-9988': ((0, 3999999, 1),(4000000, 5499999, 2),(5500000, 7499999, 3),(7500000, 9999999, 4)), '978-9989': ((0, 999999, 1),(1000000, 1999999, 3),(2000000, 2999999, 4),(3000000, 5999999, 2),(6000000, 9499999, 3),(9500000, 9999999, 4)), '978-99901': ((0, 4999999, 2),(5000000, 7999999, 3),(8000000, 9999999, 2)), '978-99902': ((0, 9999999, 0),), '978-99903': ((0, 1999999, 1),(2000000, 8999999, 2),(9000000, 9999999, 3)), '978-99904': ((0, 5999999, 1),(6000000, 8999999, 2),(9000000, 9999999, 3)), '978-99905': ((0, 3999999, 1),(4000000, 7999999, 2),(8000000, 9999999, 3)), '978-99906': ((0, 2999999, 1),(3000000, 5999999, 2),(6000000, 6999999, 3),(7000000, 8999999, 2),(9000000, 9499999, 2),(9500000, 9999999, 3)), '978-99908': ((0, 999999, 1),(1000000, 8999999, 2),(9000000, 9999999, 3)), '978-99909': ((0, 3999999, 1),(4000000, 9499999, 2),(9500000, 9999999, 3)), '978-99910': ((0, 2999999, 1),(3000000, 8999999, 2),(9000000, 9999999, 3)), '978-99911': ((0, 5999999, 2),(6000000, 9999999, 3)), '978-99912': ((0, 3999999, 1),(4000000, 5999999, 3),(6000000, 8999999, 2),(9000000, 9999999, 3)), '978-99913': ((0, 2999999, 1),(3000000, 3599999, 2),(3600000, 5999999, 0),(6000000, 6049999, 3),(6050000, 9999999, 0)), '978-99914': ((0, 4999999, 1),(5000000, 6999999, 2),(7000000, 7999999, 1),(8000000, 8999999, 2),(9000000, 9999999, 3)), '978-99915': ((0, 4999999, 1),(5000000, 7999999, 2),(8000000, 9999999, 3)), '978-99916': ((0, 2999999, 1),(3000000, 6999999, 2),(7000000, 9999999, 3)), '978-99917': ((0, 2999999, 1),(3000000, 8899999, 2),(8900000, 9999999, 3)), '978-99918': ((0, 3999999, 1),(4000000, 7999999, 2),(8000000, 9999999, 3)), '978-99919': ((0, 2999999, 1),(3000000, 3999999, 3),(4000000, 7999999, 2),(8000000, 9999999, 3)), '978-99920': ((0, 4999999, 1),(5000000, 8999999, 2),(9000000, 9999999, 3)), '978-99921': ((0, 1999999, 1),(2000000, 6999999, 2),(7000000, 7999999, 3),(8000000, 8999999, 1),(9000000, 9999999, 2)), '978-99922': ((0, 3999999, 1),(4000000, 6999999, 2),(7000000, 9999999, 3)), '978-99923': ((0, 1999999, 1),(2000000, 7999999, 2),(8000000, 9999999, 3)), '978-99924': ((0, 1999999, 1),(2000000, 7999999, 2),(8000000, 9999999, 3)), '978-99925': ((0, 999999, 1),(1000000, 1999999, 2),(2000000, 2999999, 3),(3000000, 3999999, 1),(4000000, 7999999, 2),(8000000, 9999999, 3)), '978-99926': ((0, 999999, 1),(1000000, 5999999, 2),(6000000, 8699999, 3),(8700000, 8999999, 2),(9000000, 9999999, 2)), '978-99927': ((0, 2999999, 1),(3000000, 5999999, 2),(6000000, 9999999, 3)), '978-99928': ((0, 999999, 1),(1000000, 7999999, 2),(8000000, 9999999, 3)), '978-99929': ((0, 4999999, 1),(5000000, 7999999, 2),(8000000, 9999999, 3)), '978-99930': ((0, 4999999, 1),(5000000, 7999999, 2),(8000000, 9999999, 3)), '978-99931': ((0, 4999999, 1),(5000000, 7999999, 2),(8000000, 9999999, 3)), '978-99932': ((0, 999999, 1),(1000000, 5999999, 2),(6000000, 6999999, 3),(7000000, 7999999, 1),(8000000, 9999999, 2)), '978-99933': ((0, 2999999, 1),(3000000, 5999999, 2),(6000000, 9999999, 3)), '978-99934': ((0, 1999999, 1),(2000000, 7999999, 2),(8000000, 9999999, 3)), '978-99935': ((0, 2999999, 1),(3000000, 5999999, 2),(6000000, 6999999, 3),(7000000, 8999999, 1),(9000000, 9999999, 2)), '978-99936': ((0, 999999, 1),(1000000, 5999999, 2),(6000000, 9999999, 3)), '978-99937': ((0, 1999999, 1),(2000000, 5999999, 2),(6000000, 9999999, 3)), '978-99938': ((0, 1999999, 1),(2000000, 5999999, 2),(6000000, 8999999, 3),(9000000, 9999999, 2)), '978-99939': ((0, 2999999, 1),(3000000, 5999999, 2),(6000000, 8999999, 2),(9000000, 9999999, 3)), '978-99940': ((0, 999999, 1),(1000000, 6999999, 2),(7000000, 9999999, 3)), '978-99941': ((0, 2999999, 1),(3000000, 7999999, 2),(8000000, 9999999, 3)), '978-99942': ((0, 4999999, 1),(5000000, 7999999, 2),(8000000, 9999999, 3)), '978-99943': ((0, 2999999, 1),(3000000, 5999999, 2),(6000000, 9999999, 3)), '978-99944': ((0, 4999999, 1),(5000000, 7999999, 2),(8000000, 9999999, 3)), '978-99945': ((0, 4999999, 1),(5000000, 8999999, 2),(9000000, 9999999, 3)), '978-99946': ((0, 2999999, 1),(3000000, 5999999, 2),(6000000, 9999999, 3)), '978-99947': ((0, 2999999, 1),(3000000, 6999999, 2),(7000000, 9999999, 3)), '978-99948': ((0, 4999999, 1),(5000000, 7999999, 2),(8000000, 9999999, 3)), '978-99949': ((0, 1999999, 1),(2000000, 7999999, 2),(8000000, 8999999, 1),(9000000, 9899999, 3),(9900000, 9999999, 2)), '978-99950': ((0, 4999999, 1),(5000000, 7999999, 2),(8000000, 9999999, 3)), '978-99951': ((0, 9999999, 0),), '978-99952': ((0, 4999999, 1),(5000000, 7999999, 2),(8000000, 9999999, 3)), '978-99953': ((0, 2999999, 1),(3000000, 7999999, 2),(8000000, 9399999, 3),(9400000, 9999999, 2)), '978-99954': ((0, 2999999, 1),(3000000, 6999999, 2),(7000000, 8799999, 3),(8800000, 9999999, 2)), '978-99955': ((0, 1999999, 1),(2000000, 5999999, 2),(6000000, 7999999, 3),(8000000, 9999999, 2)), '978-99956': ((0, 5999999, 2),(6000000, 8599999, 3),(8600000, 9999999, 2)), '978-99957': ((0, 1999999, 1),(2000000, 7999999, 2),(8000000, 9499999, 3),(9500000, 9999999, 2)), '978-99958': ((0, 4999999, 1),(5000000, 9399999, 2),(9400000, 9499999, 3),(9500000, 9999999, 3)), '978-99959': ((0, 2999999, 1),(3000000, 5999999, 2),(6000000, 9999999, 3)), '978-99960': ((0, 699999, 0),(700000, 999999, 3),(1000000, 9499999, 2),(9500000, 9999999, 3)), '978-99961': ((0, 2999999, 1),(3000000, 3699999, 3),(3700000, 8999999, 2),(9000000, 9999999, 3)), '978-99962': ((0, 4999999, 1),(5000000, 7999999, 2),(8000000, 9999999, 3)), '978-99963': ((0, 4999999, 2),(5000000, 9199999, 3),(9200000, 9999999, 2)), '978-99964': ((0, 1999999, 1),(2000000, 7999999, 2),(8000000, 9999999, 3)), '978-99965': ((0, 2999999, 1),(3000000, 3599999, 3),(3600000, 6299999, 2),(6300000, 9999999, 3)), '978-99966': ((0, 2999999, 1),(3000000, 6999999, 2),(7000000, 7999999, 3),(8000000, 9699999, 2),(9700000, 9999999, 3)), '978-99967': ((0, 999999, 1),(1000000, 5999999, 2),(6000000, 9999999, 3)), '978-99968': ((0, 3999999, 1),(4000000, 5999999, 3),(6000000, 8999999, 2),(9000000, 9999999, 3)), '978-99969': ((0, 4999999, 1),(5000000, 7999999, 2),(8000000, 9499999, 3),(9500000, 9999999, 2)), '978-99970': ((0, 4999999, 1),(5000000, 8999999, 2),(9000000, 9999999, 3)), '978-99971': ((0, 3999999, 1),(4000000, 8499999, 2),(8500000, 9999999, 3)), '978-99972': ((0, 4999999, 1),(5000000, 8999999, 2),(9000000, 9999999, 3)), '978-99973': ((0, 3999999, 1),(4000000, 7999999, 2),(8000000, 9999999, 3)), '978-99974': ((0, 999999, 1),(1000000, 2599999, 2),(2600000, 3999999, 3),(4000000, 6399999, 2),(6400000, 6499999, 3),(6500000, 7999999, 2),(8000000, 9999999, 3)), '978-99975': ((0, 2999999, 1),(3000000, 3999999, 3),(4000000, 7999999, 2),(8000000, 9999999, 3)), '978-99976': ((0, 999999, 1),(1000000, 1599999, 2),(1600000, 1999999, 3),(2000000, 5999999, 2),(6000000, 7999999, 3),(8000000, 8499999, 0),(8500000, 8999999, 2),(9000000, 9999999, 3)), '978-99977': ((0, 1999999, 1),(2000000, 3999999, 0),(4000000, 6999999, 2),(7000000, 7999999, 3),(8000000, 9949999, 0),(9950000, 9999999, 3)), '978-99978': ((0, 4999999, 1),(5000000, 6999999, 2),(7000000, 9999999, 3)), '978-99979': ((0, 4999999, 1),(5000000, 7999999, 2),(8000000, 9999999, 3)), '978-99980': ((0, 999999, 1),(1000000, 2999999, 0),(3000000, 5999999, 2),(6000000, 7499999, 0),(7500000, 9999999, 3)), '978-99981': ((0, 1999999, 1),(2000000, 2699999, 0),(2700000, 7499999, 2),(7500000, 9999999, 3)), '978-99982': ((0, 1999999, 1),(2000000, 4999999, 0),(5000000, 6899999, 2),(6900000, 8999999, 0),(9000000, 9999999, 3)), '978-99983': ((0, 999999, 1),(1000000, 4999999, 0),(5000000, 6999999, 2),(7000000, 9499999, 0),(9500000, 9999999, 3)), '978-99985': ((0, 1999999, 1),(2000000, 3499999, 0),(3500000, 7999999, 2),(8000000, 8499999, 0),(8500000, 9999999, 3)), '978-99986': ((0, 999999, 1),(1000000, 4999999, 0),(5000000, 6999999, 2),(7000000, 9499999, 0),(9500000, 9999999, 3)), '978-99987': ((0, 8499999, 0),(8500000, 9999999, 3)), '978-99988': ((0, 999999, 1),(1000000, 4999999, 0),(5000000, 5499999, 2),(5500000, 7999999, 0),(8000000, 8249999, 3),(8250000, 9999999, 0)), '978-99989': ((0, 999999, 1),(1000000, 4999999, 0),(5000000, 6499999, 2),(6500000, 8999999, 0),(9000000, 9999999, 3)), '978-99990': ((0, 999999, 1),(1000000, 4999999, 0),(5000000, 5499999, 2),(5500000, 9749999, 0),(9750000, 9999999, 3)), '979-10': ((0, 1999999, 2),(2000000, 6999999, 3),(7000000, 8999999, 4),(9000000, 9759999, 5),(9760000, 9999999, 6)), '979-11': ((0, 2499999, 2),(2500000, 5499999, 3),(5500000, 8499999, 4),(8500000, 9499999, 5),(9500000, 9999999, 6)), '979-12': ((0, 1999999, 0),(2000000, 2999999, 3),(3000000, 5449999, 0),(5450000, 5999999, 4),(6000000, 7999999, 0),(8000000, 8499999, 5),(8500000, 9999999, 0)), '979-8': ((0, 1999999, 0),(2000000, 2299999, 3),(2300000, 3499999, 0),(3500000, 3999999, 4),(4000000, 8499999, 4),(8500000, 8849999, 4),(8850000, 8999999, 5),(9000000, 9849999, 0),(9850000, 9899999, 7),(9900000, 9999999, 0))} -RDDATE='20230128' +RDDATE='20230129' diff --git a/isbnlib/_data/generate.py b/isbnlib/_data/generate.py new file mode 100755 index 0000000..ffe9ba5 --- /dev/null +++ b/isbnlib/_data/generate.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 + +import requests +from datetime import datetime, timezone +from xml.dom import minidom + +RANGEFILEURL = 'https://www.isbn-international.org/export_rangemessage.xml' +M_DATE_FMT = '%a, %d %b %Y %H:%M:%S %Z' +MASKFILE = 'data4mask.py' +INFOFILE = 'data4info.py' + + +HEADER = """# flake8:noqa +# pylint:skip-file +# isort:skip_file +# fmt:off +# Produced by 'generate.py'@'{generatetime}' + +# WARNING +# THIS FILE WAS PRODUCED BY TOOLS THAT AUTOMATICALLY +# GATHER THE RELEVANT INFORMATION FROM SEVERAL SOURCES +# DON'T EDIT IT MANUALLY! + +""" + + +MASKBODY = """ +ranges={ranges} +RDDATE='{rddate}' +""" + + +INFOBODY = """ +countries={countries} +identifiers={identifiers} +RDDATE='{rddate}' +""" + + +def ruletriples(node): + rules = [] + for rule in node: + start, end = rule.getElementsByTagName('Range')[0].firstChild.nodeValue.split('-') + length = rule.getElementsByTagName('Length')[0].firstChild.nodeValue + rules.append(tuple(map(int, [start, end, length]))) + return tuple(rules) + + +def group_identifiers(identifiers): + """Group indentifier prefixes by length.""" + groups = {} + for k in identifiers: + _, group = k.split('-') + if len(group) in groups: + groups[len(group)].append(k) + else: + groups[len(group)] = [k] + keys = list(groups.keys()) + keys.sort() + return tuple([tuple(groups[k]) for k in keys]) + + +def clean(s, style='mask'): + """Perform formatting to match isbntools-dev ouput.""" + # This isn't strictly necessary, but makes it easy to diff the output + s = s.replace("', '", "','").replace('), (', '),(') + if style == 'info': + s = s.replace("': '", "':'") + return s + + +def main(): + generatetime = datetime.now(timezone.utc).replace(microsecond=0).isoformat() + r = requests.get(RANGEFILEURL) + dom = minidom.parseString(r.text) + #dom = minidom.parse('RangeMessage.xml') + nodes = dom.getElementsByTagName('Group') + messagedate = dom.getElementsByTagName('MessageDate')[0] + rddate = datetime.strptime(messagedate.firstChild.nodeValue, M_DATE_FMT) + rddate = datetime.strftime(rddate, '%Y%m%d') + ranges = {} + countries = {} + for node in nodes: + prefix = node.getElementsByTagName('Prefix')[0].firstChild.nodeValue + agency = node.getElementsByTagName('Agency')[0].firstChild.nodeValue + rules = node.getElementsByTagName('Rule') + ranges[prefix] = ruletriples(rules) + countries[prefix] = agency + + identifiers = group_identifiers(countries.keys()) + + data = { + 'generatetime': generatetime, + 'ranges': ranges, + 'countries': countries, + 'identifiers': identifiers, + 'rddate': rddate} + + maskdata = clean((HEADER + MASKBODY).format(**data), 'mask') + infodata = clean((HEADER + INFOBODY).format(**data), 'info') + + with open(MASKFILE, 'w') as mask: + mask.write(maskdata) + + with open(INFOFILE, 'w') as info: + info.write(infodata) + + +if __name__ == '__main__': + main()