File Coverage

blib/lib/WWW/Google/UserAgent/DataTypes.pm
Criterion Covered Total %
statement 20 20 100.0
branch n/a
condition n/a
subroutine 7 7 100.0
pod n/a
total 27 27 100.0


line stmt bran cond sub pod time code
1             package WWW::Google::UserAgent::DataTypes;
2              
3             $WWW::Google::UserAgent::DataTypes::VERSION = '0.21';
4             $WWW::Google::UserAgent::DataTypes::AUTHORITY = 'cpan:MANWAR';
5              
6             =head1 NAME
7              
8             WWW::Google::UserAgent::DataTypes - Commonly used data types for Google API.
9              
10             =head1 VERSION
11              
12             Version 0.21
13              
14             =cut
15              
16 1     1   943 use 5.006;
  1         4  
17 1     1   5 use strict; use warnings;
  1     1   3  
  1         15  
  1         4  
  1         2  
  1         20  
18              
19 1     1   4 use Data::Dumper;
  1         2  
  1         40  
20 1     1   5 use base qw(Type::Library);
  1         2  
  1         436  
21 1     1   16551 use Type::Utils -all;
  1         3410  
  1         8  
22 1     1   3572 use Types::Standard qw(:all);
  1         71408  
  1         11  
23              
24             my $LANGUAGES = {
25             'ar' => 1, 'eu' => 1, 'bg' => 1, 'bn' => 1, 'ca' => 1, 'cs' => 1, 'da' => 1, 'de' => 1,
26             'el' => 1, 'en' => 1, 'en-au' => 1, 'en-gb' => 1, 'es' => 1, 'eu' => 1, 'fa' => 1, 'fi' => 1,
27             'fi' => 1, 'fr' => 1, 'gl' => 1, 'gu' => 1, 'hi' => 1, 'hr' => 1, 'hu' => 1, 'id' => 1,
28             'it' => 1, 'iw' => 1, 'ja' => 1, 'kn' => 1, 'ko' => 1, 'lt' => 1, 'lv' => 1, 'ml' => 1,
29             'mr' => 1, 'nl' => 1, 'no' => 1, 'pl' => 1, 'pt' => 1, 'pt-br' => 1, 'pt-pt' => 1, 'ro' => 1,
30             'ru' => 1, 'sk' => 1, 'sl' => 1, 'sr' => 1, 'sv' => 1, 'tl' => 1, 'ta' => 1, 'te' => 1,
31             'th' => 1, 'tr' => 1, 'uk' => 1, 'vi' => 1, 'zh-cn' => 1, 'zh-tw' => 1
32             };
33              
34             my $LOCALES = {
35             'ar' => 'Arabic', 'bg' => 'Bulgarian', 'ca' => 'Catalan', 'zh_tw' => 'Traditional Chinese (Taiwan)',
36             'zh_cn' => 'Simplified Chinese', 'fr' => 'Croatian', 'cs' => 'Czech', 'da' => 'Danish',
37             'nl' => 'Dutch', 'en_us' => 'English', 'en_gb' => 'English UK', 'fil' => 'Filipino',
38             'fi' => 'Finnish', 'fr' => 'French', 'de' => 'German', 'el' => 'Greek',
39             'lw' => 'Hebrew', 'hi' => 'Hindi', 'hu' => 'Hungarian', 'id' => 'Indonesian',
40             'it' => 'Italian', 'ja' => 'Japanese', 'ko' => 'Korean', 'lv' => 'Latvian',
41             'lt' => 'Lithuanian', 'no' => 'Norwegian', 'pl' => 'Polish', 'pr_br' => 'Portuguese (Brazilian)',
42             'pt_pt' => 'Portuguese (Portugal)', 'ro' => 'Romanian', 'ru' => 'Russian', 'sr' => 'Serbian',
43             'sk' => 'Slovakian', 'sl' => 'Slovenian', 'es' => 'Spanish', 'sv' => 'Swedish',
44             'th' => 'Thai', 'tr' => 'Turkish', 'uk' => 'Ukrainian', 'vi' => 'Vietnamese',
45             };
46              
47             my $LANGUAGE_COLLECTION = {
48             'lang_ar' => 1, 'lang_bg' => 1, 'lang_ca' => 1, 'lang_zh-cn' => 1, 'lang_zh-tw' => 1,
49             'lang_hr' => 1, 'lang_cs' => 1, 'lang_da' => 1, 'lang_nl' => 1, 'lang_en' => 1,
50             'lang_et' => 1, 'lang_fi' => 1, 'lang_fr' => 1, 'lang_de' => 1, 'lang_el' => 1,
51             'lang_iw' => 1, 'lang_hu' => 1, 'lang_is' => 1, 'lang_id' => 1, 'lang_it' => 1,
52             'lang_ja' => 1, 'lang_ko' => 1, 'lang_lv' => 1, 'lang_lt' => 1, 'lang_no' => 1,
53             'lang_pl' => 1, 'lang_pt' => 1, 'lang_ro' => 1, 'lang_ru' => 1, 'lang_sr' => 1,
54             'lang_sk' => 1, 'lang_sl' => 1, 'lang_es' => 1, 'lang_sv' => 1, 'lang_tr' => 1
55             };
56              
57             my $COUNTRY_COLLECTION = {
58             'countryaf' => 1, 'countryal' => 1, 'countrydz' => 1, 'countryas' => 1, 'countryad' => 1,
59             'countryao' => 1, 'countryai' => 1, 'countryaq' => 1, 'countryag' => 1, 'countryar' => 1,
60             'countryam' => 1, 'countryaw' => 1, 'countryau' => 1, 'countryat' => 1, 'countryaz' => 1,
61             'countrybs' => 1, 'countrybh' => 1, 'countrybd' => 1, 'countrybb' => 1, 'countryby' => 1,
62             'countrybe' => 1, 'countrybz' => 1, 'countrybj' => 1, 'countrybm' => 1, 'countrybt' => 1,
63             'countrybo' => 1, 'countryba' => 1, 'countrybw' => 1, 'countrybv' => 1, 'countrybr' => 1,
64             'countryio' => 1, 'countrybn' => 1, 'countrybg' => 1, 'countrybf' => 1, 'countrybi' => 1,
65             'countrykh' => 1, 'countrycm' => 1, 'countryca' => 1, 'countrycv' => 1, 'countryky' => 1,
66             'countrycf' => 1, 'countrytd' => 1, 'countrycl' => 1, 'countrycn' => 1, 'countrycx' => 1,
67             'countrycc' => 1, 'countryco' => 1, 'countrykm' => 1, 'countrycg' => 1, 'countrycd' => 1,
68             'countryck' => 1, 'countrycr' => 1, 'countryci' => 1, 'countryhr' => 1, 'countrycu' => 1,
69             'countrycy' => 1, 'countrycz' => 1, 'countrydk' => 1, 'countrydj' => 1, 'countrydm' => 1,
70             'countrydo' => 1, 'countrytp' => 1, 'countryec' => 1, 'countryeg' => 1, 'countrysv' => 1,
71             'countrygq' => 1, 'countryer' => 1, 'countryee' => 1, 'countryet' => 1, 'countryeu' => 1,
72             'countryfk' => 1, 'countryfo' => 1, 'countryfj' => 1, 'countryfi' => 1, 'countryfr' => 1,
73             'countryfx' => 1, 'countrygf' => 1, 'countrypf' => 1, 'countrytf' => 1, 'countryga' => 1,
74             'countrygm' => 1, 'countryge' => 1, 'countryde' => 1, 'countrygh' => 1, 'countrygi' => 1,
75             'countrygr' => 1, 'countrygl' => 1, 'countrygd' => 1, 'countrygp' => 1, 'countrygu' => 1,
76             'countrygt' => 1, 'countrygn' => 1, 'countrygw' => 1, 'countrygy' => 1, 'countryht' => 1,
77             'countryhm' => 1, 'countryva' => 1, 'countryhn' => 1, 'countryhk' => 1, 'countryhu' => 1,
78             'countryis' => 1, 'countryin' => 1, 'countryid' => 1, 'countryir' => 1, 'countryiq' => 1,
79             'countryie' => 1, 'countryil' => 1, 'countryit' => 1, 'countryjm' => 1, 'countryjp' => 1,
80             'countryjo' => 1, 'countrykz' => 1, 'countryke' => 1, 'countryki' => 1, 'countrykp' => 1,
81             'countrykr' => 1, 'countrykw' => 1, 'countrykg' => 1, 'countryla' => 1, 'countrylv' => 1,
82             'countrylb' => 1, 'countryls' => 1, 'countrylr' => 1, 'countryly' => 1, 'countryli' => 1,
83             'countrylt' => 1, 'countrylu' => 1, 'countrymo' => 1, 'countrymk' => 1, 'countrymg' => 1,
84             'countrymw' => 1, 'countrymy' => 1, 'countrymv' => 1, 'countryml' => 1, 'countrymt' => 1,
85             'countrymh' => 1, 'countrymq' => 1, 'countrymr' => 1, 'countrymu' => 1, 'countryyt' => 1,
86             'countrymx' => 1, 'countryfm' => 1, 'countrymd' => 1, 'countrymc' => 1, 'countrymn' => 1,
87             'countryms' => 1, 'countryma' => 1, 'countrymz' => 1, 'countrymm' => 1, 'countryna' => 1,
88             'countrynr' => 1, 'countrynp' => 1, 'countrynl' => 1, 'countryan' => 1, 'countrync' => 1,
89             'countrynz' => 1, 'countryni' => 1, 'countryne' => 1, 'countryng' => 1, 'countrynu' => 1,
90             'countrynf' => 1, 'countrymp' => 1, 'countryno' => 1, 'countryom' => 1, 'countrypk' => 1,
91             'countrypw' => 1, 'countryps' => 1, 'countrypa' => 1, 'countrypg' => 1, 'countrypy' => 1,
92             'countrype' => 1, 'countryph' => 1, 'countrypn' => 1, 'countrypl' => 1, 'countrypt' => 1,
93             'countrypr' => 1, 'countryqa' => 1, 'countryre' => 1, 'countryro' => 1, 'countryru' => 1,
94             'countryrw' => 1, 'countrysh' => 1, 'countrykn' => 1, 'countrylc' => 1, 'countrypm' => 1,
95             'countryvc' => 1, 'countryws' => 1, 'countrysm' => 1, 'countryst' => 1, 'countrysa' => 1,
96             'countrysn' => 1, 'countrycs' => 1, 'countrysc' => 1, 'countrysl' => 1, 'countrysg' => 1,
97             'countrysk' => 1, 'countrysi' => 1, 'countrysb' => 1, 'countryso' => 1, 'countryza' => 1,
98             'countrygs' => 1, 'countryes' => 1, 'countrylk' => 1, 'countrysd' => 1, 'countrysr' => 1,
99             'countrysj' => 1, 'countrysz' => 1, 'countryse' => 1, 'countrych' => 1, 'countrysy' => 1,
100             'countrytw' => 1, 'countrytj' => 1, 'countrytz' => 1, 'countryth' => 1, 'countrytg' => 1,
101             'countrytk' => 1, 'countryto' => 1, 'countrytt' => 1, 'countrytn' => 1, 'countrytr' => 1,
102             'countrytm' => 1, 'countrytc' => 1, 'countrytv' => 1, 'countryug' => 1, 'countryua' => 1,
103             'countryae' => 1, 'countryuk' => 1, 'countryus' => 1, 'countryum' => 1, 'countryuy' => 1,
104             'countryuz' => 1, 'countryvu' => 1, 'countryve' => 1, 'countryvn' => 1, 'countryvg' => 1,
105             'countryvi' => 1, 'countrywf' => 1, 'countryeh' => 1, 'countryye' => 1, 'countryyu' => 1,
106             'countryzm' => 1, 'countryzw' => 1
107             };
108              
109             my $COUNTRY_CODE = {
110             'af' => 1, 'al' => 1, 'dz' => 1, 'as' => 1, 'ad' => 1, 'ao' => 1, 'ai' => 1, 'aq' => 1,
111             'ag' => 1, 'ar' => 1, 'am' => 1, 'aw' => 1, 'au' => 1, 'at' => 1, 'az' => 1, 'bs' => 1,
112             'bh' => 1, 'bd' => 1, 'bb' => 1, 'by' => 1, 'be' => 1, 'bz' => 1, 'bj' => 1, 'bm' => 1,
113             'bt' => 1, 'bo' => 1, 'ba' => 1, 'bw' => 1, 'bv' => 1, 'br' => 1, 'io' => 1, 'bn' => 1,
114             'bg' => 1, 'bf' => 1, 'bi' => 1, 'kh' => 1, 'cm' => 1, 'ca' => 1, 'cv' => 1, 'ky' => 1,
115             'cf' => 1, 'td' => 1, 'cl' => 1, 'cn' => 1, 'cx' => 1, 'cc' => 1, 'co' => 1, 'km' => 1,
116             'cg' => 1, 'cd' => 1, 'ck' => 1, 'cr' => 1, 'ci' => 1, 'hr' => 1, 'cu' => 1, 'cy' => 1,
117             'cz' => 1, 'dk' => 1, 'dj' => 1, 'dm' => 1, 'do' => 1, 'ec' => 1, 'eg' => 1, 'sv' => 1,
118             'gq' => 1, 'er' => 1, 'ee' => 1, 'et' => 1, 'fk' => 1, 'fo' => 1, 'fj' => 1, 'fi' => 1,
119             'fr' => 1, 'gf' => 1, 'pf' => 1, 'tf' => 1, 'ga' => 1, 'gm' => 1, 'ge' => 1, 'de' => 1,
120             'gh' => 1, 'gi' => 1, 'gr' => 1, 'gl' => 1, 'gd' => 1, 'gp' => 1, 'gu' => 1, 'gt' => 1,
121             'gn' => 1, 'gw' => 1, 'gy' => 1, 'ht' => 1, 'hm' => 1, 'va' => 1, 'hn' => 1, 'hk' => 1,
122             'hu' => 1, 'is' => 1, 'in' => 1, 'id' => 1, 'ir' => 1, 'iq' => 1, 'ie' => 1, 'il' => 1,
123             'it' => 1, 'jm' => 1, 'jp' => 1, 'jo' => 1, 'kz' => 1, 'ke' => 1, 'ki' => 1, 'kp' => 1,
124             'kr' => 1, 'kw' => 1, 'kg' => 1, 'la' => 1, 'lv' => 1, 'lb' => 1, 'ls' => 1, 'lr' => 1,
125             'ly' => 1, 'li' => 1, 'lt' => 1, 'lu' => 1, 'mo' => 1, 'mk' => 1, 'mg' => 1, 'mw' => 1,
126             'my' => 1, 'mv' => 1, 'ml' => 1, 'mt' => 1, 'mh' => 1, 'mq' => 1, 'mr' => 1, 'mu' => 1,
127             'yt' => 1, 'mx' => 1, 'fm' => 1, 'md' => 1, 'mc' => 1, 'mn' => 1, 'ms' => 1, 'ma' => 1,
128             'mz' => 1, 'mm' => 1, 'na' => 1, 'nr' => 1, 'np' => 1, 'nl' => 1, 'an' => 1, 'nc' => 1,
129             'nz' => 1, 'ni' => 1, 'ne' => 1, 'ng' => 1, 'nu' => 1, 'nf' => 1, 'mp' => 1, 'no' => 1,
130             'om' => 1, 'pk' => 1, 'pw' => 1, 'ps' => 1, 'pa' => 1, 'pg' => 1, 'py' => 1, 'pe' => 1,
131             'ph' => 1, 'pn' => 1, 'pl' => 1, 'pt' => 1, 'pr' => 1, 'qa' => 1, 're' => 1, 'ro' => 1,
132             'ru' => 1, 'rw' => 1, 'sh' => 1, 'kn' => 1, 'lc' => 1, 'pm' => 1, 'vc' => 1, 'ws' => 1,
133             'sm' => 1, 'st' => 1, 'sa' => 1, 'sn' => 1, 'cs' => 1, 'sc' => 1, 'sl' => 1, 'sg' => 1,
134             'sk' => 1, 'si' => 1, 'sb' => 1, 'so' => 1, 'za' => 1, 'gs' => 1, 'es' => 1, 'lk' => 1,
135             'sd' => 1, 'sr' => 1, 'sj' => 1, 'sz' => 1, 'se' => 1, 'ch' => 1, 'sy' => 1, 'tw' => 1,
136             'tj' => 1, 'tz' => 1, 'th' => 1, 'tl' => 1, 'tg' => 1, 'tk' => 1, 'to' => 1, 'tt' => 1,
137             'tn' => 1, 'tr' => 1, 'tm' => 1, 'tc' => 1, 'tv' => 1, 'ug' => 1, 'ua' => 1, 'ae' => 1,
138             'uk' => 1, 'us' => 1, 'um' => 1, 'uy' => 1, 'uz' => 1, 'vu' => 1, 've' => 1, 'vn' => 1,
139             'vg' => 1, 'vi' => 1, 'wf' => 1, 'eh' => 1, 'ye' => 1, 'zm' => 1, 'zw' => 1,
140             };
141              
142             my $INTERFACE_LANGUAGE = {
143             'af' => 1, 'sq' => 1, 'sm' => 1, 'ar' => 1, 'az' => 1, 'eu' => 1, 'be' => 1, 'bn' => 1, 'bh' => 1,
144             'bs' => 1, 'bg' => 1, 'ca' => 1, 'zh-cn' => 1, 'zh-tw' => 1, 'hr' => 1, 'cs' => 1, 'da' => 1, 'nl' => 1,
145             'en' => 1, 'eo' => 1, 'et' => 1, 'fo' => 1, 'fi' => 1, 'fr' => 1, 'fy' => 1, 'gl' => 1, 'ka' => 1,
146             'de' => 1, 'el' => 1, 'gu' => 1, 'iw' => 1, 'hi' => 1, 'hu' => 1, 'is' => 1, 'id' => 1, 'ia' => 1,
147             'ga' => 1, 'it' => 1, 'ja' => 1, 'jw' => 1, 'kn' => 1, 'ko' => 1, 'la' => 1, 'lv' => 1, 'lt' => 1,
148             'mk' => 1, 'ms' => 1, 'ml' => 1, 'mt' => 1, 'mr' => 1, 'ne' => 1, 'no' => 1, 'nn' => 1, 'oc' => 1,
149             'fa' => 1, 'pl' => 1, 'pt-br' => 1, 'pt-pt' => 1, 'pa' => 1, 'ro' => 1, 'ru' => 1, 'gd' => 1, 'sr' => 1,
150             'si' => 1, 'sk' => 1, 'sl' => 1, 'es' => 1, 'su' => 1, 'sw' => 1, 'sv' => 1, 'tl' => 1, 'ta' => 1,
151             'te' => 1, 'th' => 1, 'ti' => 1, 'tr' => 1, 'uk' => 1, 'ur' => 1, 'uz' => 1, 'vi' => 1, 'cy' => 1,
152             'xh' => 1, 'zu' => 1
153             };
154              
155             my $DOMINANT_COLOR = {
156             'black' => 1, 'blue' => 1, 'brown' => 1, 'gray' => 1, 'green' => 1,
157             'pink' => 1, 'purple' => 1, 'teal' => 1, 'white' => 1, 'yellow' => 1,
158             };
159              
160             my $COLOR_TYPE = {
161             'color' => 1, 'gray' => 1, 'mono' => 1,
162             };
163              
164             my $IMAGE_SIZE = {
165             'huge' => 1, 'icon' => 1, 'large' => 1, 'medium' => 1,
166             'small' => 1, 'xlarge' => 1, 'xxlarge'=> 1,
167             };
168              
169             my $IMAGE_TYPE = { 'clipart' => 1, 'face' => 1, 'lineart' => 1, 'news' => 1, 'photo' => 1 };
170             my $RIGHTS = { 'cc_publicdomain' => 1, 'cc_attribute' => 1, 'cc_sharealike' => 1, 'cc_noncommercial' => 1, 'cc_nonderived' => 1 };
171             my $SEARCH_TYPE = { 'image' => 1 };
172             my $SEARCH_FILTER = { 'e' => 1, 'i' => 1 };
173             my $SAFETY_LEVEL = { 'off' => 1, 'medium' => 1, 'high' => 1 };
174              
175             declare "ColorType" , as Str, where { (!defined($_) || (exists($COLOR_TYPE->{lc($_)}))) };
176             declare "DominantColor", as Str, where { (!defined($_) || (exists($DOMINANT_COLOR->{lc($_)}))) };
177             declare "ImageSize" , as Str, where { (!defined($_) || (exists($IMAGE_SIZE->{lc($_)}))) };
178             declare "ImageType" , as Str, where { (!defined($_) || (exists($IMAGE_TYPE->{lc($_)}))) };
179             declare "Rights" , as Str, where { (!defined($_) || (exists($RIGHTS->{lc($_)}))) };
180             declare "SearchType" , as Str, where { (!defined($_) || (exists($SEARCH_TYPE->{lc($_)}))) };
181             declare "SearchFilter" , as Str, where { (!defined($_) || (exists($SEARCH_FILTER->{lc($_)}))) };
182             declare "SafetyLevel" , as Str, where { (!defined($_) || (exists($SAFETY_LEVEL->{lc($_)}))) };
183             declare "InterfaceLang", as Str, where { (!defined($_) || (exists($INTERFACE_LANGUAGE->{lc($_)}))) };
184             declare "CountryCode" , as Str, where { (!defined($_) || (exists($COUNTRY_CODE->{lc($_)}))) };
185             declare "LanguageC" , as Str, where { (!defined($_) || (exists($LANGUAGE_COLLECTION->{lc($_)}))) };
186             declare "CountryC" , as Str, where { (!defined($_) || (exists($COUNTRY_COLLECTION->{lc($_)}))) };
187             declare "Language" , as Str, where { (!defined($_) || (exists($LANGUAGES->{lc($_)}))) };
188             declare "Locale" , as Str, where { (!defined($_) || (exists($LOCALES->{lc($_)}))) };
189             declare "Strategy" , as Str, where { (!defined($_) || ($_ =~ m(^\bdesktop\b|\bmobile\b$)i)) };
190             declare "FileType" , as Str, where { (!defined($_) || ($_ =~ m(^\bjson\b|\bxml\b$)i)) };
191             declare "TrueFalse" , as Str, where { (!defined($_) || ($_ =~ m(^\btrue\b|\bfalse\b$)i)) };
192             declare "Unit" , as Str, where { (!defined($_) || ($_ =~ m(^\bmetric\b|\bimperial\b$)i)) };
193             declare "Avoid" , as Str, where { (!defined($_) || ($_ =~ m(^\btolls\b|\bhighways\b$)i)) };
194             declare "Mode" , as Str, where { (!defined($_) || ($_ =~ m(^\bdriving\b|\bwalking\b|\bbicycling\b$)i)) };
195              
196             =head1 DESCRIPTION
197              
198             B
199              
200             =head1 AUTHOR
201              
202             Mohammad S Anwar, C<< >>
203              
204             =head1 REPOSITORY
205              
206             L
207              
208             =head1 BUGS
209              
210             Please report any bugs or feature requests to C
211             rt.cpan.org>,or through the web interface at L.
212             I will be notified, and then you'll automatically be notified of progress on your
213             bug as I make changes.
214              
215             =head1 SUPPORT
216              
217             You can find documentation for this module with the perldoc command.
218              
219             perldoc WWW::Google::UserAgent::DataTypes
220              
221             You can also look for information at:
222              
223             =over 4
224              
225             =item * RT: CPAN's request tracker (report bugs here)
226              
227             L
228              
229             =item * AnnoCPAN: Annotated CPAN documentation
230              
231             L
232              
233             =item * CPAN Ratings
234              
235             L
236              
237             =item * Search CPAN
238              
239             L
240              
241             =back
242              
243             =head1 LICENSE AND COPYRIGHT
244              
245             Copyright (C) 2014 - 2015 Mohammad S Anwar.
246              
247             This program is free software; you can redistribute it and/or modify it under
248             the terms of the the Artistic License (2.0). You may obtain a copy of the full
249             license at:
250              
251             L
252              
253             Any use, modification, and distribution of the Standard or Modified Versions is
254             governed by this Artistic License.By using, modifying or distributing the Package,
255             you accept this license. Do not use, modify, or distribute the Package, if you do
256             not accept this license.
257              
258             If your Modified Version has been derived from a Modified Version made by someone
259             other than you,you are nevertheless required to ensure that your Modified Version
260             complies with the requirements of this license.
261              
262             This license does not grant you the right to use any trademark, service mark,
263             tradename, or logo of the Copyright Holder.
264              
265             This license includes the non-exclusive, worldwide, free-of-charge patent license
266             to make, have made, use, offer to sell, sell, import and otherwise transfer the
267             Package with respect to any patent claims licensable by the Copyright Holder that
268             are necessarily infringed by the Package. If you institute patent litigation
269             (including a cross-claim or counterclaim) against any party alleging that the
270             Package constitutes direct or contributory patent infringement,then this Artistic
271             License to you shall terminate on the date that such litigation is filed.
272              
273             Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND
274             CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED
275             WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
276             NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW. UNLESS
277             REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT,
278             INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE
279             OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
280              
281             =cut
282              
283             1; # End of WWW::Google::UserAgent::DataTypes